doubt with proxy busy buffer
bigplum
nginx-forum at nginx.us
Thu Sep 1 07:30:34 UTC 2011
Hi,
I write a module for file download, but sometimes it will alert
"the http output chain is empty while sending to client".
And I check the code, it seems that if proxy busy buffer run out,
write_filter will always return ngx error.
Is that right?
In function: ngx_event_pipe_write_to_downstream(ngx_event_pipe_t *p)
line 540:
out = NULL;
if (bsize >= (size_t) p->busy_size) {
flush = 1;
goto flush;
}
//If busy size is larger than that value in ngix.conf,
//out chain will be NULL and goto fulsh
//and call output_filter with NULL out chain.
line 617:
flush:
...............
rc = p->output_filter(p->output_ctx, out);
//So get into ngx_http_write_filter(ngx_http_request_t *r, ngx_chain_t
*in),
//print the alert log and return error.
line: 186
if (size == 0 && !(c->buffered & NGX_LOWLEVEL_BUFFERED)) {
if (last) {
r->out = NULL;
c->buffered &= ~NGX_HTTP_WRITE_BUFFERED;
return NGX_OK;
}
if (flush) { // flush will never be true, because
of NULL in chain
do {
r->out = r->out->next;
} while (r->out);
c->buffered &= ~NGX_HTTP_WRITE_BUFFERED;
return NGX_OK;
}
ngx_log_error(NGX_LOG_ALERT, c->log, 0,
"the http output chain is empty");
ngx_debug_point();
return NGX_ERROR;
--
Best Regard.
Posted at Nginx Forum: http://forum.nginx.org/read.php?2,214608,214608#msg-214608
More information about the nginx
mailing list