<div dir="ltr">Hello!<div><br></div><div>I have encountered a potential bug in Nginx's upstream module -</div><div>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.</div>
<div>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().</div>
<div><br></div><div>The effect of this issue is the requests that "spawn" subrequests that use the upstream error get stuck in case of an SSL error.</div><div>I can suggest two possible fixes (in the file ngx_http_upstream.c):</div>
<div>  - Add a call to ngx_http_run_posted_requests() to the end of ngx_http_upstream_finalize_request().</div><div style="direction:ltr">  - Add a call to ngx_http_run_posted_requests() after calling ngx_http_upstream_finalize_request() during error handling of the SSL connection establishment.</div>
<div style="direction:ltr"><br></div><div style>Can anyone verify this issue and the suggested solution? If so, I'll be more than happy to submit a patch.</div><div style><br></div><div style>Best regards,</div><div style>
Aviram</div></div>