comparison src/event/modules/ngx_rtsig_module.c @ 122:d25a1d6034f1 NGINX_0_3_8

nginx 0.3.8 *) Security: nginx now checks URI got from a backend in "X-Accel-Redirect" header line or in SSI file for the "/../" paths and zeroes. *) Change: nginx now does not treat the empty user name in the "Authorization" header line as valid one. *) Feature: the "ssl_session_timeout" directives of the ngx_http_ssl_module and ngx_imap_ssl_module. *) Feature: the "auth_http_header" directive of the ngx_imap_auth_http_module. *) Feature: the "add_header" directive. *) Feature: the ngx_http_realip_module. *) Feature: the new variables to use in the "log_format" directive: $bytes_sent, $apache_bytes_sent, $status, $time_gmt, $uri, $request_time, $request_length, $upstream_status, $upstream_response_time, $gzip_ratio, $uid_got, $uid_set, $connection, $pipe, and $msec. The parameters in the "%name" form will be canceled soon. *) Change: now the false variable values in the "if" directive are the empty string "" and string starting with "0". *) Bugfix: while using proxied or FastCGI-server nginx may leave connections and temporary files with client requests in open state. *) Bugfix: the worker processes did not flush the buffered logs on graceful exit. *) Bugfix: if the request URI was changes by the "rewrite" directive and the request was proxied in location given by regular expression, then the incorrect request was transferred to backend; bug appeared in 0.2.6. *) Bugfix: the "expires" directive did not remove the previous "Expires" header. *) Bugfix: nginx may stop to accept requests if the "rtsig" method and several worker processes were used. *) Bugfix: the "\"" and "\'" escape symbols were incorrectly handled in SSI commands. *) Bugfix: if the response was ended just after the SSI command and gzipping was used, then the response did not transferred complete or did not transferred at all.
author Igor Sysoev <http://sysoev.ru>
date Wed, 09 Nov 2005 00:00:00 +0300
parents e38f51cd0905
children df17fbafec8f
comparison
equal deleted inserted replaced
121:737953b238a4 122:d25a1d6034f1
286 { 286 {
287 int signo; 287 int signo;
288 ngx_int_t instance; 288 ngx_int_t instance;
289 ngx_err_t err; 289 ngx_err_t err;
290 siginfo_t si; 290 siginfo_t si;
291 ngx_event_t *rev, *wev; 291 ngx_event_t *rev, *wev, **queue;
292 struct timespec ts, *tp; 292 struct timespec ts, *tp;
293 struct sigaction sa; 293 struct sigaction sa;
294 ngx_connection_t *c; 294 ngx_connection_t *c;
295 ngx_rtsig_conf_t *rtscf; 295 ngx_rtsig_conf_t *rtscf;
296 296
379 379
380 return NGX_OK; 380 return NGX_OK;
381 } 381 }
382 382
383 if ((si.si_band & (POLLIN|POLLHUP|POLLERR)) && rev->active) { 383 if ((si.si_band & (POLLIN|POLLHUP|POLLERR)) && rev->active) {
384
384 rev->ready = 1; 385 rev->ready = 1;
385 rev->handler(rev); 386
387 if (flags & NGX_POST_EVENTS) {
388 queue = (ngx_event_t **) (rev->accept ?
389 &ngx_posted_accept_events : &ngx_posted_events);
390
391 ngx_locked_post_event(rev, queue);
392
393 } else {
394 rev->handler(rev);
395 }
386 } 396 }
387 397
388 wev = c->write; 398 wev = c->write;
389 399
390 if ((si.si_band & (POLLOUT|POLLHUP|POLLERR)) && wev->active) { 400 if ((si.si_band & (POLLOUT|POLLHUP|POLLERR)) && wev->active) {
401
391 wev->ready = 1; 402 wev->ready = 1;
392 wev->handler(wev); 403
404 if (flags & NGX_POST_EVENTS) {
405 ngx_locked_post_event(wev, &ngx_posted_events);
406
407 } else {
408 wev->handler(wev);
409 }
393 } 410 }
394 411
395 return NGX_OK; 412 return NGX_OK;
396 413
397 } else if (signo == SIGALRM) { 414 } else if (signo == SIGALRM) {