Mercurial > hg > nginx-vendor-1-0
comparison src/event/modules/ngx_devpoll_module.c @ 92:45945fa8b8ba NGINX_0_2_0
nginx 0.2.0
*) The pid-file names used during online upgrade was changed and now is
not required a manual rename operation. The old master process adds
the ".oldbin" suffix to its pid-file and executes a new binary file.
The new master process creates usual pid-file without the ".newbin"
suffix. If the master process exits, then old master process renames
back its pid-file with the ".oldbin" suffix to the pid-file without
suffix.
*) Change: the "worker_connections" directive, new name of the
"connections" directive; now the directive specifies maximum number
of connections, but not maximum socket descriptor number.
*) Feature: SSL supports the session cache inside one worker process.
*) Feature: the "satisfy_any" directive.
*) Change: the ngx_http_access_module and ngx_http_auth_basic_module do
not run for subrequests.
*) Feature: the "worker_rlimit_nofile" and "worker_rlimit_sigpending"
directives.
*) Bugfix: if all backend using in load-balancing failed after one
error, then nginx did not try do connect to them during 60 seconds.
*) Bugfix: in IMAP/POP3 command argument parsing.
Thanks to Rob Mueller.
*) Bugfix: errors while using SSL in IMAP/POP3 proxy.
*) Bugfix: errors while using SSI and gzipping.
*) Bugfix: the "Expires" and "Cache-Control" header lines were omitted
from the 304 responses.
Thanks to Alexandr Kukushkin.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Fri, 23 Sep 2005 00:00:00 +0400 |
parents | 71c46860eb55 |
children | 45f7329b4bd0 |
comparison
equal
deleted
inserted
replaced
91:c3eee83ea942 | 92:45945fa8b8ba |
---|---|
175 | 175 |
176 ngx_io = ngx_os_io; | 176 ngx_io = ngx_os_io; |
177 | 177 |
178 ngx_event_actions = ngx_devpoll_module_ctx.actions; | 178 ngx_event_actions = ngx_devpoll_module_ctx.actions; |
179 | 179 |
180 ngx_event_flags = NGX_USE_LEVEL_EVENT; | 180 ngx_event_flags = NGX_USE_LEVEL_EVENT|NGX_USE_FD_EVENT; |
181 | 181 |
182 return NGX_OK; | 182 return NGX_OK; |
183 } | 183 } |
184 | 184 |
185 | 185 |
447 } | 447 } |
448 | 448 |
449 lock = 1; | 449 lock = 1; |
450 | 450 |
451 for (i = 0; i < events; i++) { | 451 for (i = 0; i < events; i++) { |
452 c = &ngx_cycle->connections[event_list[i].fd]; | 452 c = ngx_cycle->files[event_list[i].fd]; |
453 | 453 |
454 if (c->fd == -1) { | 454 if (c->fd == -1) { |
455 if (ngx_cycle->read_events[event_list[i].fd].closed) { | 455 if (c->read->closed) { |
456 continue; | 456 continue; |
457 } | 457 } |
458 | 458 |
459 ngx_log_error(NGX_LOG_ALERT, cycle->log, 0, "unexpected event"); | 459 ngx_log_error(NGX_LOG_ALERT, cycle->log, 0, "unexpected event"); |
460 continue; | 460 continue; |
461 } | 461 } |
462 | |
463 #if 0 | |
464 if (c->fd == -1) { | |
465 old_cycle = ngx_old_cycles.elts; | |
466 for (j = 0; j < ngx_old_cycles.nelts; j++) { | |
467 if (old_cycle[j] == NULL) { | |
468 continue; | |
469 } | |
470 c = &old_cycle[j]->connections[event_list[i].fd]; | |
471 if (c->fd != -1) { | |
472 break; | |
473 } | |
474 } | |
475 } | |
476 | |
477 if (c->fd == -1) { | |
478 ngx_log_error(NGX_LOG_EMERG, cycle->log, 0, "unknown cycle"); | |
479 exit(1); | |
480 } | |
481 #endif | |
482 | 462 |
483 revents = event_list[i].revents; | 463 revents = event_list[i].revents; |
484 | 464 |
485 ngx_log_debug3(NGX_LOG_DEBUG_EVENT, cycle->log, 0, | 465 ngx_log_debug3(NGX_LOG_DEBUG_EVENT, cycle->log, 0, |
486 "devpoll: fd:%d, ev:%04Xd, rev:%04Xd", | 466 "devpoll: fd:%d, ev:%04Xd, rev:%04Xd", |