comparison src/event/modules/ngx_epoll_module.c @ 30:e1ada20fc595 NGINX_0_1_15

nginx 0.1.15 *) Bugfix: the error while the connecting to the FastCGI server caused segmentation fault. *) Bugfix: the correct handling of the regular expression, that has different number of the captures and substitutions. *) Feature: the location, that is passed to the FastCGI server, can be regular expression. *) Bugfix: the FastCGI's parameter REQUEST_URI is now passed with the arguments and in the original state. *) Bugfix: the ngx_http_rewrite_module module was required to be built to use the regular expressions in locations. *) Bugfix: the directive "proxy_preserve_host on" adds port 80 to the "Host" headers, if upstream listen on port 80; bug appeared in 0.1.14. *) Bugfix: the same paths in autoconfiguration parameters --http-client-body-temp-path=PATH and --http-proxy-temp-path=PATH, or --http-client-body-temp-path=PATH and --http-fastcgi-temp-path=PATH caused segmentation fault.
author Igor Sysoev <http://sysoev.ru>
date Wed, 19 Jan 2005 00:00:00 +0300
parents 6f8b0dc0f8dd
children da8c190bdaba
comparison
equal deleted inserted replaced
29:3efadd1f18f7 30:e1ada20fc595
227 } else { 227 } else {
228 op = EPOLL_CTL_ADD; 228 op = EPOLL_CTL_ADD;
229 } 229 }
230 230
231 ee.events = event | flags; 231 ee.events = event | flags;
232 ee.data.ptr = (void *) ((uintptr_t) c | ev->instance); 232 ee.data.u64 = (uintptr_t) c | ev->instance;
233 233
234 ngx_log_debug3(NGX_LOG_DEBUG_EVENT, ev->log, 0, 234 ngx_log_debug3(NGX_LOG_DEBUG_EVENT, ev->log, 0,
235 "epoll add event: fd:%d op:%d ev:%08XD", 235 "epoll add event: fd:%d op:%d ev:%08XD",
236 c->fd, op, ee.events); 236 c->fd, op, ee.events);
237 237
280 } 280 }
281 281
282 if (e->active) { 282 if (e->active) {
283 op = EPOLL_CTL_MOD; 283 op = EPOLL_CTL_MOD;
284 ee.events = prev | flags; 284 ee.events = prev | flags;
285 ee.data.ptr = (void *) ((uintptr_t) c | ev->instance); 285 ee.data.u64 = (uintptr_t) c | ev->instance;
286 286
287 } else { 287 } else {
288 op = EPOLL_CTL_DEL; 288 op = EPOLL_CTL_DEL;
289 ee.events = 0; 289 ee.events = 0;
290 ee.data.ptr = NULL; 290 ee.data.ptr = NULL;
309 static int ngx_epoll_add_connection(ngx_connection_t *c) 309 static int ngx_epoll_add_connection(ngx_connection_t *c)
310 { 310 {
311 struct epoll_event ee; 311 struct epoll_event ee;
312 312
313 ee.events = EPOLLIN|EPOLLOUT|EPOLLET; 313 ee.events = EPOLLIN|EPOLLOUT|EPOLLET;
314 ee.data.ptr = (void *) ((uintptr_t) c | c->read->instance); 314 ee.data.u64 = (uintptr_t) c | c->read->instance;
315 315
316 ngx_log_debug2(NGX_LOG_DEBUG_EVENT, c->log, 0, 316 ngx_log_debug2(NGX_LOG_DEBUG_EVENT, c->log, 0,
317 "epoll add connection: fd:%d ev:%08XD", c->fd, ee.events); 317 "epoll add connection: fd:%d ev:%08XD", c->fd, ee.events);
318 318
319 if (epoll_ctl(ep, EPOLL_CTL_ADD, c->fd, &ee) == -1) { 319 if (epoll_ctl(ep, EPOLL_CTL_ADD, c->fd, &ee) == -1) {
349 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, 349 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0,
350 "epoll del connection: fd:%d", c->fd); 350 "epoll del connection: fd:%d", c->fd);
351 351
352 op = EPOLL_CTL_DEL; 352 op = EPOLL_CTL_DEL;
353 ee.events = 0; 353 ee.events = 0;
354 ee.data.ptr = NULL; 354 ee.data.u64 = 0;
355 355
356 if (epoll_ctl(ep, op, c->fd, &ee) == -1) { 356 if (epoll_ctl(ep, op, c->fd, &ee) == -1) {
357 ngx_log_error(NGX_LOG_ALERT, c->log, ngx_errno, 357 ngx_log_error(NGX_LOG_ALERT, c->log, ngx_errno,
358 "epoll_ctl(%d, %d) failed", op, c->fd); 358 "epoll_ctl(%d, %d) failed", op, c->fd);
359 return NGX_ERROR; 359 return NGX_ERROR;