comparison src/core/ngx_connection.c @ 540:c04fa65fe604 NGINX_0_8_22

nginx 0.8.22 *) Feature: the "proxy_bind", "fastcgi_bind", and "memcached_bind" directives. *) Feature: the "access" and the "deny" directives support IPv6. *) Feature: the "set_real_ip_from" directive supports IPv6 addresses in request headers. *) Feature: the "unix:" parameter of the "set_real_ip_from" directive. *) Bugfix: nginx did not delete unix domain socket after configuration testing. *) Bugfix: nginx deleted unix domain socket while online upgrade. *) Bugfix: the "!-x" operator did not work. Thanks to Maxim Dounin. *) Bugfix: a segmentation fault might occur in a worker process, if limit_rate was used in HTTPS server. Thanks to Maxim Dounin. *) Bugfix: a segmentation fault might occur in a worker process while $limit_rate logging. Thanks to Maxim Dounin. *) Bugfix: a segmentation fault might occur in a worker process, if there was no "listen" directive in "server" block; the bug had appeared in 0.8.21.
author Igor Sysoev <http://sysoev.ru>
date Tue, 03 Nov 2009 00:00:00 +0300
parents 1dcf6adad484
children 2b9e388c61f1
comparison
equal deleted inserted replaced
539:c88014f74832 540:c04fa65fe604
363 failed = 1; 363 failed = 1;
364 364
365 continue; 365 continue;
366 } 366 }
367 367
368 #if (NGX_HAVE_UNIX_DOMAIN)
369
370 if (ngx_test_config && ls[i].sockaddr->sa_family == AF_UNIX) {
371 u_char *name = ls[i].addr_text.data + sizeof("unix:") - 1;
372
373 if (ngx_delete_file(name) == -1) {
374 ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_socket_errno,
375 ngx_delete_file_n " %s failed", name);
376 }
377 }
378 #endif
379
368 if (listen(s, ls[i].backlog) == -1) { 380 if (listen(s, ls[i].backlog) == -1) {
369 ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno, 381 ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno,
370 "listen() to %V, backlog %d failed", 382 "listen() to %V, backlog %d failed",
371 &ls[i].addr_text, ls[i].backlog); 383 &ls[i].addr_text, ls[i].backlog);
372 384
613 } 625 }
614 626
615 #if (NGX_HAVE_UNIX_DOMAIN) 627 #if (NGX_HAVE_UNIX_DOMAIN)
616 628
617 if (ls[i].sockaddr->sa_family == AF_UNIX 629 if (ls[i].sockaddr->sa_family == AF_UNIX
618 && ngx_process != NGX_PROCESS_WORKER) 630 && ngx_process != NGX_PROCESS_WORKER
631 && ngx_new_binary == 0)
619 { 632 {
620 u_char *name = ls[i].addr_text.data + sizeof("unix:") - 1; 633 u_char *name = ls[i].addr_text.data + sizeof("unix:") - 1;
621 634
622 if (ngx_delete_file(name) == -1) { 635 if (ngx_delete_file(name) == -1) {
623 ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_socket_errno, 636 ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_socket_errno,
879 c->local_sockaddr = ngx_palloc(c->pool, len); 892 c->local_sockaddr = ngx_palloc(c->pool, len);
880 if (c->local_sockaddr == NULL) { 893 if (c->local_sockaddr == NULL) {
881 return NGX_ERROR; 894 return NGX_ERROR;
882 } 895 }
883 896
884 c->local_socklen = len;
885 ngx_memcpy(c->local_sockaddr, &sa, len); 897 ngx_memcpy(c->local_sockaddr, &sa, len);
886 } 898 }
887 899
888 if (s == NULL) { 900 if (s == NULL) {
889 return NGX_OK; 901 return NGX_OK;