Mercurial > hg > nginx-vendor-0-8
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; |