Mercurial > hg > nginx
comparison src/event/modules/ngx_devpoll_module.c @ 461:a88a3e4e158f release-0.1.5
nginx-0.1.5-RELEASE import
*) Bugfix: on Solaris and Linux there may be too many "recvmsg()
returned not enough data" alerts.
*) Bugfix: there were the "writev() failed (22: Invalid argument)"
errors on Solaris in proxy mode without sendfile. On other platforms
that do not support sendfile at all the process got caught in an
endless loop.
*) Bugfix: segmentation fault on Solaris in proxy mode and using
sendfile.
*) Bugfix: segmentation fault on Solaris.
*) Bugfix: on-line upgrade did not work on Linux.
*) Bugfix: the ngx_http_autoindex_module module did not escape the
spaces, the quotes, and the percent signs in the directory listing.
*) Change: the decrease of the copy operations.
*) Feature: the userid_p3p directive.
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Thu, 11 Nov 2004 14:07:14 +0000 |
parents | 23fb87bddda1 |
children | 2ff194b74f1e |
comparison
equal
deleted
inserted
replaced
460:5f8319142dfc | 461:a88a3e4e158f |
---|---|
206 #endif | 206 #endif |
207 | 207 |
208 #if (NGX_DEBUG) | 208 #if (NGX_DEBUG) |
209 c = ev->data; | 209 c = ev->data; |
210 ngx_log_debug2(NGX_LOG_DEBUG_EVENT, ev->log, 0, | 210 ngx_log_debug2(NGX_LOG_DEBUG_EVENT, ev->log, 0, |
211 "devpoll add event: fd:%d ev:%04X", c->fd, event); | 211 "devpoll add event: fd:%d ev:%04Xd", c->fd, event); |
212 #endif | 212 #endif |
213 | 213 |
214 ev->active = 1; | 214 ev->active = 1; |
215 | 215 |
216 return ngx_devpoll_set_event(ev, event, 0); | 216 return ngx_devpoll_set_event(ev, event, 0); |
227 #if (NGX_READ_EVENT != POLLIN) | 227 #if (NGX_READ_EVENT != POLLIN) |
228 event = (event == NGX_READ_EVENT) ? POLLIN : POLLOUT; | 228 event = (event == NGX_READ_EVENT) ? POLLIN : POLLOUT; |
229 #endif | 229 #endif |
230 | 230 |
231 ngx_log_debug2(NGX_LOG_DEBUG_EVENT, ev->log, 0, | 231 ngx_log_debug2(NGX_LOG_DEBUG_EVENT, ev->log, 0, |
232 "devpoll del event: fd:%d ev:%04X", c->fd, event); | 232 "devpoll del event: fd:%d ev:%04Xd", c->fd, event); |
233 | 233 |
234 if (ngx_devpoll_set_event(ev, POLLREMOVE, flags) == NGX_ERROR) { | 234 if (ngx_devpoll_set_event(ev, POLLREMOVE, flags) == NGX_ERROR) { |
235 return NGX_ERROR; | 235 return NGX_ERROR; |
236 } | 236 } |
237 | 237 |
266 ngx_connection_t *c; | 266 ngx_connection_t *c; |
267 | 267 |
268 c = ev->data; | 268 c = ev->data; |
269 | 269 |
270 ngx_log_debug3(NGX_LOG_DEBUG_EVENT, ev->log, 0, | 270 ngx_log_debug3(NGX_LOG_DEBUG_EVENT, ev->log, 0, |
271 "devpoll fd:%d ev:%04X fl:%04X", c->fd, event, flags); | 271 "devpoll fd:%d ev:%04Xd fl:%04Xd", c->fd, event, flags); |
272 | 272 |
273 if (nchanges >= max_changes) { | 273 if (nchanges >= max_changes) { |
274 ngx_log_error(NGX_LOG_WARN, ev->log, 0, | 274 ngx_log_error(NGX_LOG_WARN, ev->log, 0, |
275 "/dev/pool change list is filled up"); | 275 "/dev/pool change list is filled up"); |
276 | 276 |
451 ngx_log_error(NGX_LOG_EMERG, cycle->log, 0, "unknown cycle"); | 451 ngx_log_error(NGX_LOG_EMERG, cycle->log, 0, "unknown cycle"); |
452 exit(1); | 452 exit(1); |
453 } | 453 } |
454 | 454 |
455 ngx_log_debug3(NGX_LOG_DEBUG_EVENT, cycle->log, 0, | 455 ngx_log_debug3(NGX_LOG_DEBUG_EVENT, cycle->log, 0, |
456 "devpoll: fd:%d, ev:%04X, rev:%04X", | 456 "devpoll: fd:%d, ev:%04Xd, rev:%04Xd", |
457 event_list[i].fd, | 457 event_list[i].fd, |
458 event_list[i].events, event_list[i].revents); | 458 event_list[i].events, event_list[i].revents); |
459 | 459 |
460 if (event_list[i].revents & (POLLERR|POLLHUP|POLLNVAL)) { | 460 if (event_list[i].revents & (POLLERR|POLLHUP|POLLNVAL)) { |
461 ngx_log_error(NGX_LOG_ALERT, cycle->log, 0, | 461 ngx_log_error(NGX_LOG_ALERT, cycle->log, 0, |
462 "ioctl(DP_POLL) error fd:%d ev:%04X rev:%04X", | 462 "ioctl(DP_POLL) error fd:%d ev:%04Xd rev:%04Xd", |
463 event_list[i].fd, | 463 event_list[i].fd, |
464 event_list[i].events, event_list[i].revents); | 464 event_list[i].events, event_list[i].revents); |
465 } | 465 } |
466 | 466 |
467 if (event_list[i].revents & ~(POLLIN|POLLOUT|POLLERR|POLLHUP|POLLNVAL)) | 467 if (event_list[i].revents & ~(POLLIN|POLLOUT|POLLERR|POLLHUP|POLLNVAL)) |
468 { | 468 { |
469 ngx_log_error(NGX_LOG_ALERT, cycle->log, 0, | 469 ngx_log_error(NGX_LOG_ALERT, cycle->log, 0, |
470 "strange ioctl(DP_POLL) events " | 470 "strange ioctl(DP_POLL) events " |
471 "fd:%d ev:%04X rev:%04X", | 471 "fd:%d ev:%04Xd rev:%04Xd", |
472 event_list[i].fd, | 472 event_list[i].fd, |
473 event_list[i].events, event_list[i].revents); | 473 event_list[i].events, event_list[i].revents); |
474 } | 474 } |
475 | 475 |
476 wev = c->write; | 476 wev = c->write; |