Mercurial > hg > nginx-vendor-0-7
comparison src/core/nginx.c @ 356:b743d290eb3b NGINX_0_6_22
nginx 0.6.22
*) Change: now all ngx_http_perl_module methods return values copied to
perl's allocated memory.
*) Bugfix: if nginx was built with ngx_http_perl_module, the perl
before 5.8.6 was used, and perl supported threads, then during
reconfiguration the master process aborted; bug appeared in
0.5.9.
Thanks to Boris Zhmurov.
*) Bugfix: the ngx_http_perl_module methods may get invalid values of
the regex captures.
*) Bugfix: a segmentation fault occurred in worker process, if the
$r->has_request_body() method was called for a request whose small
request body was already received.
*) Bugfix: large_client_header_buffers did not freed before going to
keep-alive state.
Thanks to Olexander Shtepa.
*) Bugfix: the last address was missed in the $upstream_addr variable;
bug appeared in 0.6.18.
*) Bugfix: the "fastcgi_catch_stderr" directive did return error code;
now it returns 502 code, that can be rerouted to a next server using
the "fastcgi_next_upstream invalid_header" directive.
*) Bugfix: a segmentation fault occurred in master process if the
"fastcgi_catch_stderr" directive was used; bug appeared in
0.6.10.
Thanks to Manlio Perillo.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Wed, 19 Dec 2007 00:00:00 +0300 |
parents | 390b8f8309d6 |
children | 820f6378fc00 |
comparison
equal
deleted
inserted
replaced
355:3ac45897a61c | 356:b743d290eb3b |
---|---|
271 | 271 |
272 if (ngx_os_init(log) != NGX_OK) { | 272 if (ngx_os_init(log) != NGX_OK) { |
273 return 1; | 273 return 1; |
274 } | 274 } |
275 | 275 |
276 /* ngx_crc32_init() requires ngx_cacheline_size set in ngx_os_init() */ | 276 /* |
277 | 277 * ngx_crc32_table_init() requires ngx_cacheline_size set in ngx_os_init() |
278 if (ngx_crc32_init() != NGX_OK) { | 278 */ |
279 | |
280 if (ngx_crc32_table_init() != NGX_OK) { | |
279 return 1; | 281 return 1; |
280 } | 282 } |
281 | 283 |
282 if (ngx_add_inherited_sockets(&init_cycle) != NGX_OK) { | 284 if (ngx_add_inherited_sockets(&init_cycle) != NGX_OK) { |
283 return 1; | 285 return 1; |
754 static char * | 756 static char * |
755 ngx_core_module_init_conf(ngx_cycle_t *cycle, void *conf) | 757 ngx_core_module_init_conf(ngx_cycle_t *cycle, void *conf) |
756 { | 758 { |
757 ngx_core_conf_t *ccf = conf; | 759 ngx_core_conf_t *ccf = conf; |
758 | 760 |
759 #if !(NGX_WIN32) | |
760 ngx_str_t lock_file; | |
761 struct group *grp; | |
762 struct passwd *pwd; | |
763 #endif | |
764 | |
765 ngx_conf_init_value(ccf->daemon, 1); | 761 ngx_conf_init_value(ccf->daemon, 1); |
766 ngx_conf_init_value(ccf->master, 1); | 762 ngx_conf_init_value(ccf->master, 1); |
767 ngx_conf_init_msec_value(ccf->timer_resolution, 0); | 763 ngx_conf_init_msec_value(ccf->timer_resolution, 0); |
768 | 764 |
769 ngx_conf_init_value(ccf->worker_processes, 1); | 765 ngx_conf_init_value(ccf->worker_processes, 1); |
792 #endif | 788 #endif |
793 | 789 |
794 #if !(NGX_WIN32) | 790 #if !(NGX_WIN32) |
795 | 791 |
796 if (ccf->user == (uid_t) NGX_CONF_UNSET_UINT && geteuid() == 0) { | 792 if (ccf->user == (uid_t) NGX_CONF_UNSET_UINT && geteuid() == 0) { |
793 struct group *grp; | |
794 struct passwd *pwd; | |
797 | 795 |
798 ngx_set_errno(0); | 796 ngx_set_errno(0); |
799 pwd = getpwnam(NGX_USER); | 797 pwd = getpwnam(NGX_USER); |
800 if (pwd == NULL) { | 798 if (pwd == NULL) { |
801 ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno, | 799 ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno, |
844 | 842 |
845 if (ngx_conf_full_name(cycle, &ccf->lock_file, 0) == NGX_ERROR) { | 843 if (ngx_conf_full_name(cycle, &ccf->lock_file, 0) == NGX_ERROR) { |
846 return NGX_CONF_ERROR; | 844 return NGX_CONF_ERROR; |
847 } | 845 } |
848 | 846 |
847 { | |
848 ngx_str_t lock_file; | |
849 | |
849 lock_file = cycle->old_cycle->lock_file; | 850 lock_file = cycle->old_cycle->lock_file; |
850 | 851 |
851 if (lock_file.len) { | 852 if (lock_file.len) { |
852 lock_file.len--; | 853 lock_file.len--; |
853 | 854 |
877 | 878 |
878 ngx_memcpy(ngx_cpymem(cycle->lock_file.data, ccf->lock_file.data, | 879 ngx_memcpy(ngx_cpymem(cycle->lock_file.data, ccf->lock_file.data, |
879 ccf->lock_file.len), | 880 ccf->lock_file.len), |
880 ".accept", sizeof(".accept")); | 881 ".accept", sizeof(".accept")); |
881 } | 882 } |
883 } | |
882 | 884 |
883 #endif | 885 #endif |
884 | 886 |
885 return NGX_CONF_OK; | 887 return NGX_CONF_OK; |
886 } | 888 } |