Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(59)

Side by Side Diff: openssl/apps/s_socket.c

Issue 9254031: Upgrade chrome's OpenSSL to same version Android ships with. (Closed) Base URL: http://src.chromium.org/svn/trunk/deps/third_party/openssl/
Patch Set: '' Created 8 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « openssl/apps/s_server.c ('k') | openssl/apps/s_time.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* apps/s_socket.c - socket-related functions used by s_client and s_server */ 1 /* apps/s_socket.c - socket-related functions used by s_client and s_server */
2 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
5 * This package is an SSL implementation written 5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com). 6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL. 7 * The implementation was written so as to conform with Netscapes SSL.
8 * 8 *
9 * This library is free for commercial and non-commercial use as long as 9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions 10 * the following conditions are aheared to. The following conditions
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
230 return(0); 230 return(0);
231 } 231 }
232 } 232 }
233 #endif /* OPENSSL_SYS_WINDOWS */ 233 #endif /* OPENSSL_SYS_WINDOWS */
234 return(1); 234 return(1);
235 } 235 }
236 236
237 int init_client(int *sock, char *host, int port, int type) 237 int init_client(int *sock, char *host, int port, int type)
238 { 238 {
239 unsigned char ip[4]; 239 unsigned char ip[4];
240 short p=0;
241 240
242 if (!host_ip(host,&(ip[0]))) 241 if (!host_ip(host,&(ip[0])))
243 { 242 {
244 return(0); 243 return(0);
245 } 244 }
246 if (p != 0) port=p;
247 return(init_client_ip(sock,ip,port,type)); 245 return(init_client_ip(sock,ip,port,type));
248 } 246 }
249 247
250 static int init_client_ip(int *sock, unsigned char ip[4], int port, int type) 248 static int init_client_ip(int *sock, unsigned char ip[4], int port, int type)
251 { 249 {
252 unsigned long addr; 250 unsigned long addr;
253 struct sockaddr_in them; 251 struct sockaddr_in them;
254 int s,i; 252 int s,i;
255 253
256 if (!ssl_sock_init()) return(0); 254 if (!ssl_sock_init()) return(0);
257 255
258 memset((char *)&them,0,sizeof(them)); 256 memset((char *)&them,0,sizeof(them));
259 them.sin_family=AF_INET; 257 them.sin_family=AF_INET;
260 them.sin_port=htons((unsigned short)port); 258 them.sin_port=htons((unsigned short)port);
261 addr=(unsigned long) 259 addr=(unsigned long)
262 ((unsigned long)ip[0]<<24L)| 260 ((unsigned long)ip[0]<<24L)|
263 ((unsigned long)ip[1]<<16L)| 261 ((unsigned long)ip[1]<<16L)|
264 ((unsigned long)ip[2]<< 8L)| 262 ((unsigned long)ip[2]<< 8L)|
265 ((unsigned long)ip[3]); 263 ((unsigned long)ip[3]);
266 them.sin_addr.s_addr=htonl(addr); 264 them.sin_addr.s_addr=htonl(addr);
267 265
268 if (type == SOCK_STREAM) 266 if (type == SOCK_STREAM)
269 s=socket(AF_INET,SOCK_STREAM,SOCKET_PROTOCOL); 267 s=socket(AF_INET,SOCK_STREAM,SOCKET_PROTOCOL);
270 else /* ( type == SOCK_DGRAM) */ 268 else /* ( type == SOCK_DGRAM) */
271 s=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP); 269 s=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
272 270
273 if (s == INVALID_SOCKET) { perror("socket"); return(0); } 271 if (s == INVALID_SOCKET) { perror("socket"); return(0); }
274 272
275 #ifndef OPENSSL_SYS_MPE 273 #if defined(SO_KEEPALIVE) && !defined(OPENSSL_SYS_MPE)
276 if (type == SOCK_STREAM) 274 if (type == SOCK_STREAM)
277 { 275 {
278 i=0; 276 i=0;
279 i=setsockopt(s,SOL_SOCKET,SO_KEEPALIVE,(char *)&i,sizeof(i)); 277 i=setsockopt(s,SOL_SOCKET,SO_KEEPALIVE,(char *)&i,sizeof(i));
280 if (i < 0) { perror("keepalive"); return(0); } 278 if (i < 0) { perror("keepalive"); return(0); }
281 } 279 }
282 #endif 280 #endif
283 281
284 if (connect(s,(struct sockaddr *)&them,sizeof(them)) == -1) 282 if (connect(s,(struct sockaddr *)&them,sizeof(them)) == -1)
285 » » { close(s); perror("connect"); return(0); } 283 » » { closesocket(s); perror("connect"); return(0); }
286 *sock=s; 284 *sock=s;
287 return(1); 285 return(1);
288 } 286 }
289 287
290 int do_server(int port, int type, int *ret, int (*cb)(char *hostname, int s, uns igned char *context), unsigned char *context) 288 int do_server(int port, int type, int *ret, int (*cb)(char *hostname, int s, uns igned char *context), unsigned char *context)
291 { 289 {
292 int sock; 290 int sock;
293 char *name = NULL; 291 char *name = NULL;
294 » int accept_socket; 292 » int accept_socket = 0;
295 int i; 293 int i;
296 294
297 if (!init_server(&accept_socket,port,type)) return(0); 295 if (!init_server(&accept_socket,port,type)) return(0);
298 296
299 if (ret != NULL) 297 if (ret != NULL)
300 { 298 {
301 *ret=accept_socket; 299 *ret=accept_socket;
302 /* return(1);*/ 300 /* return(1);*/
303 } 301 }
304 for (;;) 302 for (;;)
(...skipping 17 matching lines...) Expand all
322 SHUTDOWN2(accept_socket); 320 SHUTDOWN2(accept_socket);
323 return(i); 321 return(i);
324 } 322 }
325 } 323 }
326 } 324 }
327 325
328 static int init_server_long(int *sock, int port, char *ip, int type) 326 static int init_server_long(int *sock, int port, char *ip, int type)
329 { 327 {
330 int ret=0; 328 int ret=0;
331 struct sockaddr_in server; 329 struct sockaddr_in server;
332 » int s= -1,i; 330 » int s= -1;
333 331
334 if (!ssl_sock_init()) return(0); 332 if (!ssl_sock_init()) return(0);
335 333
336 memset((char *)&server,0,sizeof(server)); 334 memset((char *)&server,0,sizeof(server));
337 server.sin_family=AF_INET; 335 server.sin_family=AF_INET;
338 server.sin_port=htons((unsigned short)port); 336 server.sin_port=htons((unsigned short)port);
339 if (ip == NULL) 337 if (ip == NULL)
340 server.sin_addr.s_addr=INADDR_ANY; 338 server.sin_addr.s_addr=INADDR_ANY;
341 else 339 else
342 /* Added for T3E, address-of fails on bit field (beckman@acl.lanl.gov) */ 340 /* Added for T3E, address-of fails on bit field (beckman@acl.lanl.gov) */
(...skipping 18 matching lines...) Expand all
361 #endif 359 #endif
362 if (bind(s,(struct sockaddr *)&server,sizeof(server)) == -1) 360 if (bind(s,(struct sockaddr *)&server,sizeof(server)) == -1)
363 { 361 {
364 #ifndef OPENSSL_SYS_WINDOWS 362 #ifndef OPENSSL_SYS_WINDOWS
365 perror("bind"); 363 perror("bind");
366 #endif 364 #endif
367 goto err; 365 goto err;
368 } 366 }
369 /* Make it 128 for linux */ 367 /* Make it 128 for linux */
370 if (type==SOCK_STREAM && listen(s,128) == -1) goto err; 368 if (type==SOCK_STREAM && listen(s,128) == -1) goto err;
371 i=0;
372 *sock=s; 369 *sock=s;
373 ret=1; 370 ret=1;
374 err: 371 err:
375 if ((ret == 0) && (s != -1)) 372 if ((ret == 0) && (s != -1))
376 { 373 {
377 SHUTDOWN(s); 374 SHUTDOWN(s);
378 } 375 }
379 return(ret); 376 return(ret);
380 } 377 }
381 378
382 static int init_server(int *sock, int port, int type) 379 static int init_server(int *sock, int port, int type)
383 { 380 {
384 return(init_server_long(sock, port, NULL, type)); 381 return(init_server_long(sock, port, NULL, type));
385 } 382 }
386 383
387 static int do_accept(int acc_sock, int *sock, char **host) 384 static int do_accept(int acc_sock, int *sock, char **host)
388 { 385 {
389 » int ret,i; 386 » int ret;
390 struct hostent *h1,*h2; 387 struct hostent *h1,*h2;
391 static struct sockaddr_in from; 388 static struct sockaddr_in from;
392 int len; 389 int len;
393 /* struct linger ling; */ 390 /* struct linger ling; */
394 391
395 if (!ssl_sock_init()) return(0); 392 if (!ssl_sock_init()) return(0);
396 393
397 #ifndef OPENSSL_SYS_WINDOWS 394 #ifndef OPENSSL_SYS_WINDOWS
398 redoit: 395 redoit:
399 #endif 396 #endif
400 397
401 memset((char *)&from,0,sizeof(from)); 398 memset((char *)&from,0,sizeof(from));
402 len=sizeof(from); 399 len=sizeof(from);
403 /* Note: under VMS with SOCKETSHR the fourth parameter is currently 400 /* Note: under VMS with SOCKETSHR the fourth parameter is currently
404 * of type (int *) whereas under other systems it is (void *) if 401 * of type (int *) whereas under other systems it is (void *) if
405 * you don't have a cast it will choke the compiler: if you do 402 * you don't have a cast it will choke the compiler: if you do
406 * have a cast then you can either go for (int *) or (void *). 403 * have a cast then you can either go for (int *) or (void *).
407 */ 404 */
408 ret=accept(acc_sock,(struct sockaddr *)&from,(void *)&len); 405 ret=accept(acc_sock,(struct sockaddr *)&from,(void *)&len);
409 if (ret == INVALID_SOCKET) 406 if (ret == INVALID_SOCKET)
410 { 407 {
411 #if defined(OPENSSL_SYS_WINDOWS) || (defined(OPENSSL_SYS_NETWARE) && !defined(NE TWARE_BSDSOCK)) 408 #if defined(OPENSSL_SYS_WINDOWS) || (defined(OPENSSL_SYS_NETWARE) && !defined(NE TWARE_BSDSOCK))
409 int i;
412 i=WSAGetLastError(); 410 i=WSAGetLastError();
413 BIO_printf(bio_err,"accept error %d\n",i); 411 BIO_printf(bio_err,"accept error %d\n",i);
414 #else 412 #else
415 if (errno == EINTR) 413 if (errno == EINTR)
416 { 414 {
417 /*check_timeout(); */ 415 /*check_timeout(); */
418 goto redoit; 416 goto redoit;
419 } 417 }
420 fprintf(stderr,"errno=%d ",errno); 418 fprintf(stderr,"errno=%d ",errno);
421 perror("accept"); 419 perror("accept");
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
456 return(0); 454 return(0);
457 } 455 }
458 BUF_strlcpy(*host,h1->h_name,strlen(h1->h_name)+1); 456 BUF_strlcpy(*host,h1->h_name,strlen(h1->h_name)+1);
459 457
460 h2=GetHostByName(*host); 458 h2=GetHostByName(*host);
461 if (h2 == NULL) 459 if (h2 == NULL)
462 { 460 {
463 BIO_printf(bio_err,"gethostbyname failure\n"); 461 BIO_printf(bio_err,"gethostbyname failure\n");
464 return(0); 462 return(0);
465 } 463 }
466 i=0;
467 if (h2->h_addrtype != AF_INET) 464 if (h2->h_addrtype != AF_INET)
468 { 465 {
469 BIO_printf(bio_err,"gethostbyname addr is not AF_INET\n" ); 466 BIO_printf(bio_err,"gethostbyname addr is not AF_INET\n" );
470 return(0); 467 return(0);
471 } 468 }
472 } 469 }
473 end: 470 end:
474 *sock=ret; 471 *sock=ret;
475 return(1); 472 return(1);
476 } 473 }
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
614 else 611 else
615 { 612 {
616 ghbn_hits++; 613 ghbn_hits++;
617 ret= &(ghbn_cache[i].ent); 614 ret= &(ghbn_cache[i].ent);
618 ghbn_cache[i].order=ghbn_miss+ghbn_hits; 615 ghbn_cache[i].order=ghbn_miss+ghbn_hits;
619 return(ret); 616 return(ret);
620 } 617 }
621 } 618 }
622 619
623 #endif 620 #endif
OLDNEW
« no previous file with comments | « openssl/apps/s_server.c ('k') | openssl/apps/s_time.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698