Mercurial > hg > nginx-vendor-1-0
comparison src/os/unix/ngx_process.c @ 10:46833bd150cb NGINX_0_1_5
nginx 0.1.5
*) Bugfix: on Solaris and Linux there may be too many "recvmsg()
returned not enough data" alerts.
*) Bugfix: there were the "writev() failed (22: Invalid argument)"
errors on Solaris in proxy mode without sendfile. On other platforms
that do not support sendfile at all the process got caught in an
endless loop.
*) Bugfix: segmentation fault on Solaris in proxy mode and using
sendfile.
*) Bugfix: segmentation fault on Solaris.
*) Bugfix: on-line upgrade did not work on Linux.
*) Bugfix: the ngx_http_autoindex_module module did not escape the
spaces, the quotes, and the percent signs in the directory listing.
*) Change: the decrease of the copy operations.
*) Feature: the userid_p3p directive.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Thu, 11 Nov 2004 00:00:00 +0300 |
parents | 4b2dafa26fe2 |
children | 45fe5b98a9de |
comparison
equal
deleted
inserted
replaced
9:77eee314ddbd | 10:46833bd150cb |
---|---|
141 default: | 141 default: |
142 break; | 142 break; |
143 } | 143 } |
144 | 144 |
145 ngx_log_debug2(NGX_LOG_DEBUG_CORE, cycle->log, 0, | 145 ngx_log_debug2(NGX_LOG_DEBUG_CORE, cycle->log, 0, |
146 "spawn %s: " PID_T_FMT, name, pid); | 146 "spawn %s: %P", name, pid); |
147 | 147 |
148 ngx_processes[s].pid = pid; | 148 ngx_processes[s].pid = pid; |
149 ngx_processes[s].exited = 0; | 149 ngx_processes[s].exited = 0; |
150 | 150 |
151 if (respawn >= 0) { | 151 if (respawn >= 0) { |
280 } | 280 } |
281 } | 281 } |
282 | 282 |
283 if (WTERMSIG(status)) { | 283 if (WTERMSIG(status)) { |
284 ngx_log_error(NGX_LOG_ALERT, ngx_cycle->log, 0, | 284 ngx_log_error(NGX_LOG_ALERT, ngx_cycle->log, 0, |
285 "%s " PID_T_FMT " exited on signal %d%s", | 285 "%s %P exited on signal %d%s", |
286 process, pid, WTERMSIG(status), | 286 process, pid, WTERMSIG(status), |
287 WCOREDUMP(status) ? " (core dumped)" : ""); | 287 WCOREDUMP(status) ? " (core dumped)" : ""); |
288 | 288 |
289 } else { | 289 } else { |
290 ngx_log_error(NGX_LOG_INFO, ngx_cycle->log, 0, | 290 ngx_log_error(NGX_LOG_INFO, ngx_cycle->log, 0, |
291 "%s " PID_T_FMT " exited with code %d", | 291 "%s %P exited with code %d", |
292 process, pid, WEXITSTATUS(status)); | 292 process, pid, WEXITSTATUS(status)); |
293 } | 293 } |
294 | 294 |
295 if (WEXITSTATUS(status) == 2 && ngx_processes[i].respawn) { | 295 if (WEXITSTATUS(status) == 2 && ngx_processes[i].respawn) { |
296 ngx_log_error(NGX_LOG_ALERT, ngx_cycle->log, 0, | 296 ngx_log_error(NGX_LOG_ALERT, ngx_cycle->log, 0, |
297 "%s " PID_T_FMT | 297 "%s %P exited with fatal code %d and could not respawn", |
298 " exited with fatal code %d and could not respawn", | 298 process, pid, WEXITSTATUS(status)); |
299 process, pid, WEXITSTATUS(status)); | |
300 ngx_processes[i].respawn = 0; | 299 ngx_processes[i].respawn = 0; |
301 } | 300 } |
302 } | 301 } |
303 } | 302 } |
303 | |
304 | |
305 void ngx_debug_point() | |
306 { | |
307 ngx_core_conf_t *ccf; | |
308 | |
309 ccf = (ngx_core_conf_t *) ngx_get_conf(ngx_cycle->conf_ctx, | |
310 ngx_core_module); | |
311 | |
312 switch (ccf->debug_points) { | |
313 | |
314 case NGX_DEBUG_POINTS_STOP: | |
315 raise(SIGSTOP); | |
316 break; | |
317 | |
318 case NGX_DEBUG_POINTS_ABORT: | |
319 abort(); | |
320 } | |
321 } |