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