Upstream error handling issue
Aviram Cohen
aviram at adallom.com
Mon Aug 19 14:17:24 UTC 2013
Hello!
I have encountered a potential bug in Nginx's upstream module -
When the upstream server is an SSL server, if an error occurs in
ngx_http_upstream_ssl_handshake() - the
function ngx_http_run_posted_requests() is never called.
This happens when initiating an SSL connection, the SSL module handles the
handshake, and not the upstream module (meaning ngx_http_upstream_handler()
is not involved in the process), and so if an error occurs, there's no one
who calls ngx_http_run_posted_requests().
The effect of this issue is the requests that "spawn" subrequests that use
the upstream error get stuck in case of an SSL error.
I can suggest two possible fixes (in the file ngx_http_upstream.c):
- Add a call to ngx_http_run_posted_requests() to the end
of ngx_http_upstream_finalize_request().
- Add a call to ngx_http_run_posted_requests() after calling
ngx_http_upstream_finalize_request() during error handling of the SSL
connection establishment.
Can anyone verify this issue and the suggested solution? If so, I'll be
more than happy to submit a patch.
Best regards,
Aviram
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-devel/attachments/20130819/1ef81097/attachment.html>
More information about the nginx-devel
mailing list