comparison src/event/modules/ngx_poll_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
107 107
108 ngx_io = ngx_os_io; 108 ngx_io = ngx_os_io;
109 109
110 ngx_event_actions = ngx_poll_module_ctx.actions; 110 ngx_event_actions = ngx_poll_module_ctx.actions;
111 111
112 ngx_event_flags = NGX_USE_LEVEL_EVENT|NGX_USE_ONESHOT_EVENT; 112 ngx_event_flags = NGX_USE_LEVEL_EVENT
113 |NGX_USE_ONESHOT_EVENT
114 |NGX_USE_FD_EVENT;
113 115
114 return NGX_OK; 116 return NGX_OK;
115 } 117 }
116 118
117 119
227 ngx_log_debug2(NGX_LOG_DEBUG_EVENT, ev->log, 0, 229 ngx_log_debug2(NGX_LOG_DEBUG_EVENT, ev->log, 0,
228 "index: copy event %d to %d", nevents, ev->index); 230 "index: copy event %d to %d", nevents, ev->index);
229 231
230 event_list[ev->index] = event_list[nevents]; 232 event_list[ev->index] = event_list[nevents];
231 233
232 c = &ngx_cycle->connections[event_list[nevents].fd]; 234 c = ngx_cycle->files[event_list[nevents].fd];
233 235
234 if (c->fd == -1) { 236 if (c->fd == -1) {
235 cycle = ngx_old_cycles.elts; 237 cycle = ngx_old_cycles.elts;
236 for (i = 0; i < ngx_old_cycles.nelts; i++) { 238 for (i = 0; i < ngx_old_cycles.nelts; i++) {
237 if (cycle[i] == NULL) { 239 if (cycle[i] == NULL) {
238 continue; 240 continue;
239 } 241 }
240 c = &cycle[i]->connections[event_list[nevents].fd]; 242 c = cycle[i]->files[event_list[nevents].fd];
241 if (c->fd != -1) { 243 if (c->fd != -1) {
242 break; 244 break;
243 } 245 }
244 } 246 }
245 } 247 }
423 * see the comment below 425 * see the comment below
424 */ 426 */
425 continue; 427 continue;
426 } 428 }
427 429
428 c = &ngx_cycle->connections[event_list[i].fd]; 430 c = ngx_cycle->files[event_list[i].fd];
429 431
430 if (c->fd == -1) { 432 if (c->fd == -1) {
431 old_cycle = ngx_old_cycles.elts; 433 old_cycle = ngx_old_cycles.elts;
432 for (n = 0; n < ngx_old_cycles.nelts; n++) { 434 for (n = 0; n < ngx_old_cycles.nelts; n++) {
433 if (old_cycle[n] == NULL) { 435 if (old_cycle[n] == NULL) {
434 continue; 436 continue;
435 } 437 }
436 c = &old_cycle[n]->connections[event_list[i].fd]; 438 c = old_cycle[n]->files[event_list[i].fd];
437 if (c->fd != -1) { 439 if (c->fd != -1) {
438 break; 440 break;
439 } 441 }
440 } 442 }
441 } 443 }