Mercurial > hg > nginx-mail
comparison src/core/ngx_connection.c @ 583: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
582:c88014f74832 | 583: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; |