diff options
| author | Igor Sysoev <igor@sysoev.ru> | 2010-04-01 15:44:17 +0000 |
|---|---|---|
| committer | Jonathan Kolb <jon@b0g.us> | 2010-04-01 15:44:17 +0000 |
| commit | c9bc330f78ce3dbf16f9421a90e5c544970b4170 (patch) | |
| tree | df57a57a71e7cff20698cd1f05225c04bbaa375d /src/os | |
| parent | ff85fb51bb4e2e33a5cc30178b6e1fe73e6c9c87 (diff) | |
| download | nginx-c9bc330f78ce3dbf16f9421a90e5c544970b4170.tar.gz | |
Changes with nginx 0.8.35 29 Mar 2010v0.8.35
*) Change: now the charset filter runs before the SSI filter.
*) Feature: the "chunked_transfer_encoding" directive.
*) Bugfix: an "&" character was not escaped when it was copied in
arguments part in a rewrite rule.
*) Bugfix: nginx might be terminated abnormally while a signal
processing or if the directive "timer_resolution" was used on
platforms which do not support kqueue or eventport notification
methods.
Thanks to George Xie and Maxim Dounin.
*) Bugfix: if temporary files and permanent storage area resided at
different file systems, then permanent file modification times were
incorrect.
Thanks to Maxim Dounin.
*) Bugfix: ngx_http_memcached_module might issue the error message
"memcached sent invalid trailer".
Thanks to Maxim Dounin.
*) Bugfix: nginx could not built zlib-1.2.4 library using the library
sources.
Thanks to Maxim Dounin.
*) Bugfix: a segmentation fault occurred in a worker process, if there
was large stderr output before FastCGI response; the bug had
appeared in 0.8.34.
Thanks to Maxim Dounin.
Diffstat (limited to 'src/os')
| -rw-r--r-- | src/os/unix/ngx_errno.h | 14 | ||||
| -rw-r--r-- | src/os/unix/ngx_process.c | 13 | ||||
| -rw-r--r-- | src/os/unix/ngx_process_cycle.c | 6 | ||||
| -rw-r--r-- | src/os/unix/ngx_sunpro_amd64.il | 7 |
4 files changed, 29 insertions, 11 deletions
diff --git a/src/os/unix/ngx_errno.h b/src/os/unix/ngx_errno.h index 379f36777..ddc2b2761 100644 --- a/src/os/unix/ngx_errno.h +++ b/src/os/unix/ngx_errno.h @@ -64,10 +64,22 @@ u_char *ngx_strerror_r(int err, u_char *errstr, size_t size); /* Solaris and Tru64 UNIX have thread-safe strerror() */ -#define ngx_strerror_r(err, errstr, size) \ +#define ngx_strerror_r(err, errstr, size) \ ngx_cpystrn(errstr, (u_char *) strerror(err), size) #endif +#if (NGX_HAVE_SYS_ERRLIST) + +#define ngx_sigsafe_strerror(err) \ + (err > 0 && err < sys_nerr) ? sys_errlist[err] : "Unknown error" + +#else + +#define ngx_sigsafe_strerror(err) "" + +#endif + + #endif /* _NGX_ERRNO_H_INCLUDED_ */ diff --git a/src/os/unix/ngx_process.c b/src/os/unix/ngx_process.c index f140d629b..224101d2e 100644 --- a/src/os/unix/ngx_process.c +++ b/src/os/unix/ngx_process.c @@ -317,7 +317,7 @@ ngx_signal_handler(int signo) } } - ngx_time_update(0, 0); + ngx_time_sigsafe_update(); action = ""; @@ -479,16 +479,17 @@ ngx_process_get_status(void) */ if (err == NGX_ECHILD) { - ngx_log_error(NGX_LOG_INFO, ngx_cycle->log, errno, - "waitpid() failed"); + ngx_log_error(NGX_LOG_INFO, ngx_cycle->log, 0, + "waitpid() failed (%d: %s)", + err, ngx_sigsafe_strerror(err)); return; } #endif - ngx_log_error(NGX_LOG_ALERT, ngx_cycle->log, errno, - "waitpid() failed"); - + ngx_log_error(NGX_LOG_ALERT, ngx_cycle->log, 0, + "waitpid() failed (%d: %s)", + err, ngx_sigsafe_strerror(err)); return; } diff --git a/src/os/unix/ngx_process_cycle.c b/src/os/unix/ngx_process_cycle.c index 06e020e06..82d322dfc 100644 --- a/src/os/unix/ngx_process_cycle.c +++ b/src/os/unix/ngx_process_cycle.c @@ -168,7 +168,7 @@ ngx_master_process_cycle(ngx_cycle_t *cycle) sigsuspend(&set); - ngx_time_update(0, 0); + ngx_time_update(); ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0, "wake up, sigio %i", sigio); @@ -1342,7 +1342,7 @@ ngx_cache_manager_process_handler(ngx_event_t *ev) next = (n <= next) ? n : next; - ngx_time_update(0, 0); + ngx_time_update(); } } @@ -1372,7 +1372,7 @@ ngx_cache_loader_process_handler(ngx_event_t *ev) if (path[i]->loader) { path[i]->loader(path[i]->data); - ngx_time_update(0, 0); + ngx_time_update(); } } diff --git a/src/os/unix/ngx_sunpro_amd64.il b/src/os/unix/ngx_sunpro_amd64.il index c26e6f717..c6519574d 100644 --- a/src/os/unix/ngx_sunpro_amd64.il +++ b/src/os/unix/ngx_sunpro_amd64.il @@ -31,7 +31,12 @@ / ngx_cpu_pause() +/ +/ the "rep; nop" is used instead of "pause" to avoid the "[ PAUSE ]" hardware +/ capability added by linker because Solaris/amd64 does not know about it: +/ +/ ld.so.1: nginx: fatal: hardware capability unsupported: 0x2000 [ PAUSE ] .inline ngx_cpu_pause,0 - pause + rep; nop .end |
