comparison src/event/modules/ngx_select_module.c @ 486:6484cbba0222 NGINX_0_7_55

nginx 0.7.55 *) Bugfix: the http_XXX parameters in "proxy_cache_use_stale" and "fastcgi_cache_use_stale" directives did not work. *) Bugfix: fastcgi cache did not cache header only responses. *) Bugfix: of "select() failed (9: Bad file descriptor)" error in nginx/Unix and "select() failed (10022: ...)" error in nginx/Windows. *) Bugfix: a segmentation fault might occur in worker process, if an "debug_connection" directive was used; the bug had appeared in 0.7.54. *) Bugfix: fix ngx_http_image_filter_module building errors. *) Bugfix: the files bigger than 2G could not be transferred using $r->sendfile. Thanks to Maxim Dounin.
author Igor Sysoev <http://sysoev.ru>
date Wed, 06 May 2009 00:00:00 +0400
parents ed5e10fb40fc
children 829f9a66a659
comparison
equal deleted inserted replaced
485:21824e8058e6 486:6484cbba0222
145 ngx_log_error(NGX_LOG_ALERT, ev->log, 0, 145 ngx_log_error(NGX_LOG_ALERT, ev->log, 0,
146 "select event fd:%d ev:%i is already set", c->fd, event); 146 "select event fd:%d ev:%i is already set", c->fd, event);
147 return NGX_OK; 147 return NGX_OK;
148 } 148 }
149 149
150 if ((event == NGX_READ_EVENT && ev->write)
151 || (event == NGX_WRITE_EVENT && !ev->write))
152 {
153 ngx_log_error(NGX_LOG_ALERT, ev->log, 0,
154 "invalid select %s event fd:%d ev:%i",
155 ev->write ? "write" : "read", c->fd, event);
156 return NGX_ERROR;
157 }
158
159
150 #if (NGX_WIN32) 160 #if (NGX_WIN32)
151 161
152 if ((event == NGX_READ_EVENT) && (max_read >= FD_SETSIZE) 162 if ((event == NGX_READ_EVENT) && (max_read >= FD_SETSIZE)
153 || (event == NGX_WRITE_EVENT) && (max_write >= FD_SETSIZE)) 163 || (event == NGX_WRITE_EVENT) && (max_write >= FD_SETSIZE))
154 { 164 {
193 203
194 204
195 static ngx_int_t 205 static ngx_int_t
196 ngx_select_del_event(ngx_event_t *ev, ngx_int_t event, ngx_uint_t flags) 206 ngx_select_del_event(ngx_event_t *ev, ngx_int_t event, ngx_uint_t flags)
197 { 207 {
208 ngx_event_t *e;
198 ngx_connection_t *c; 209 ngx_connection_t *c;
199 210
200 c = ev->data; 211 c = ev->data;
201 212
202 ev->active = 0; 213 ev->active = 0;
233 } 244 }
234 245
235 #endif 246 #endif
236 247
237 if (ev->index < --nevents) { 248 if (ev->index < --nevents) {
238 event_index[ev->index] = event_index[nevents]; 249 e = event_index[nevents];
239 event_index[ev->index]->index = ev->index; 250 event_index[ev->index] = e;
251 e->index = ev->index;
240 } 252 }
241 253
242 ev->index = NGX_INVALID_INDEX; 254 ev->index = NGX_INVALID_INDEX;
243 255
244 return NGX_OK; 256 return NGX_OK;