Mercurial > hg > nginx-ranges
comparison src/event/modules/ngx_select_module.c @ 495: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
494:21824e8058e6 | 495: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; |