Hello!
2013/1/7 xia wrote:
> 关于那个问题,现在发现“ngx_http_finalize_request(r,
> NGX_HTTP_CLOSE);”确实能够终止请求,但是不会终止数据接收。请求终止后,后续的数据还继续接收,只是丢弃了(ngx_http_discarded_request_body_handler负责),这对于后续数据不太多的请求是合适的,而对于像ngx_http_upload_module就不合适了,因为后续数据可能是几个G或更多。能够有方法直接关闭掉连接吗?
出现这种问题一般是因为 r->main->count 计数错误导致的(或者不正确地设置了 r->blocked 标志)。连接只有在
r->main->count 计数减为 0 时才会关闭。
在编写 Nginx C 模块时调用 ngx_http_read_client_request_body
函数或者自己的请求体读取函数时,常犯的一个错误就是没有把 r->main->count 给设置正确。
同时抄送给 openresty 中文邮件列表:http://openresty.org/#Community
(强烈建议你加入此列表并在那里和我们交流这样的问题)
Regards,
-agentzh