comparison src/proxy.c @ 670:9e51c1a4abba

[gaim-migrate @ 680] socks4/5 proxy works committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Fri, 11 Aug 2000 22:55:32 +0000
parents 5cb19972df52
children b1b77b39a1fa
comparison
equal deleted inserted replaced
669:e871081839d0 670:9e51c1a4abba
217 } 217 }
218 return -1; 218 return -1;
219 } 219 }
220 break; 220 break;
221 case PROXY_SOCKS5: 221 case PROXY_SOCKS5:
222 return -1; 222 {
223 struct sockaddr_in sin;
224 struct hostent *hostinfo;
225 char buff[11];
226
227 sethostent(0);
228 hostinfo = gethostbyname(proxy_host);
229 if (!hostinfo) return -1;
230
231 sin.sin_addr.s_addr = atol(hostinfo->h_addr);
232 sin.sin_family = AF_INET;
233 sin.sin_port = htons(proxy_port);
234
235 if (connect(sockfd, (struct sockaddr *)&sin, sizeof(sin)) < 0)
236 return -1;
237
238 buff[0] = 5;
239 buff[1] = 1;
240 buff[2] = 0;
241
242 write(sockfd, buff, 3);
243 read(sockfd, buff, 2);
244
245 if (buff[1]) return -1;
246
247 hostinfo = gethostbyname(proxy_realhost);
248 if (!hostinfo) return -1;
249
250 buff[0] = 5;
251 buff[1] = 1;
252 buff[2] = 0;
253 buff[3] = 1;
254 buff[4] = (unsigned char) (hostinfo->h_addr_list[0])[0];
255 buff[5] = (unsigned char) (hostinfo->h_addr_list[0])[1];
256 buff[6] = (unsigned char) (hostinfo->h_addr_list[0])[2];
257 buff[7] = (unsigned char) (hostinfo->h_addr_list[0])[3];
258 memcpy(buff+8, &((struct sockaddr_in *)serv_addr)->sin_port, 2);
259
260 write(sockfd, buff, 10);
261 read(sockfd, buff, 10);
262
263 if (buff[1]) return -1;
264
265 return 0;
266 }
223 break; 267 break;
224 default: 268 default:
225 fprintf(stderr,"Unknown proxy type : %d.\n",proxy_type); 269 fprintf(stderr,"Unknown proxy type : %d.\n",proxy_type);
226 break; 270 break;
227 } 271 }