summaryrefslogtreecommitdiff
path: root/src/os
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2010-04-01 15:44:17 +0000
committerJonathan Kolb <jon@b0g.us>2010-04-01 15:44:17 +0000
commitc9bc330f78ce3dbf16f9421a90e5c544970b4170 (patch)
treedf57a57a71e7cff20698cd1f05225c04bbaa375d /src/os
parentff85fb51bb4e2e33a5cc30178b6e1fe73e6c9c87 (diff)
downloadnginx-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.h14
-rw-r--r--src/os/unix/ngx_process.c13
-rw-r--r--src/os/unix/ngx_process_cycle.c6
-rw-r--r--src/os/unix/ngx_sunpro_amd64.il7
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