Mercurial > hg > nginx
comparison src/http/ngx_http_write_filter_module.c @ 4848:a0f1d53546d4 stable-1.2
Merge of r4778, r4782, r4783, r4824, r4830, r4834: minor fixes.
*) Reorder checks in ngx_shared_memory_add() for more consistent
error messages.
*) Added "const" to ngx_memcpy() with NGX_MEMCPY_LIMIT defined. This
fixes warning produced during compilation of the ngx_http_geoip_module
due to const qualifier being discarded.
*) Fixed possible use of old cached times if runtime went backwards.
If ngx_time_sigsafe_update() updated only ngx_cached_err_log_time, and
then clock was adjusted backwards, the cached_time[slot].sec might
accidentally match current seconds on next ngx_time_update() call,
resulting in various cached times not being updated.
Fix is to clear the cached_time[slot].sec to explicitly mark cached times
are stale and need updating.
*) Radix tree preallocation fix. The preallocation size was calculated
incorrectly and was always 8 due to sizeof(ngx_radix_tree_t) accidentally
used instead of sizeof(ngx_radix_node_t).
*) Fixed overflow if ngx_slab_alloc() is called with very big "size"
argument.
*) Write filter: replaced unneeded loop with one to free chains.
Noted by Gabor Lekeny.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Mon, 24 Sep 2012 18:34:04 +0000 |
parents | d620f497c50f |
children | ed576bd1d9c0 |
comparison
equal
deleted
inserted
replaced
4847:0275f587e00b | 4848:a0f1d53546d4 |
---|---|
183 c->buffered |= NGX_HTTP_WRITE_BUFFERED; | 183 c->buffered |= NGX_HTTP_WRITE_BUFFERED; |
184 return NGX_AGAIN; | 184 return NGX_AGAIN; |
185 } | 185 } |
186 | 186 |
187 if (size == 0 && !(c->buffered & NGX_LOWLEVEL_BUFFERED)) { | 187 if (size == 0 && !(c->buffered & NGX_LOWLEVEL_BUFFERED)) { |
188 if (last) { | 188 if (last || flush) { |
189 for (cl = r->out; cl; /* void */) { | |
190 ln = cl; | |
191 cl = cl->next; | |
192 ngx_free_chain(r->pool, ln); | |
193 } | |
194 | |
189 r->out = NULL; | 195 r->out = NULL; |
190 c->buffered &= ~NGX_HTTP_WRITE_BUFFERED; | |
191 | |
192 return NGX_OK; | |
193 } | |
194 | |
195 if (flush) { | |
196 do { | |
197 r->out = r->out->next; | |
198 } while (r->out); | |
199 | |
200 c->buffered &= ~NGX_HTTP_WRITE_BUFFERED; | 196 c->buffered &= ~NGX_HTTP_WRITE_BUFFERED; |
201 | 197 |
202 return NGX_OK; | 198 return NGX_OK; |
203 } | 199 } |
204 | 200 |