<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">On 03 Dec 2015, at 10:28, Judson Wilson <<a href="mailto:wilson.judson@gmail.com">wilson.judson@gmail.com</a>> wrote:<br><div><br class="Apple-interchange-newline"><blockquote type="cite"><div dir="ltr">On inspecting some code for academic reasons, I noticed that ngx_ssl_shutdown() looks like it might be using SSL_shutdown() incorrectly?<br><br>I haven't actually "used" the code, and have not tested it or seen any symptoms.<div><br></div><div><br></div><div>The first hint of a problem is the following comment:<br><br><div> /* SSL_shutdown() never returns -1, on error it returns 0 */</div></div><div><br></div><div>which does not match the OpenSSL man page very well, or the OpenSSL function ssl3_shutdown() definition.</div></div></blockquote><div><br></div><div>SSL_shutdown() never returned -1 prior to 0.9.8m version despite man page.</div></div><div><br><blockquote type="cite"><div dir="ltr"><div>Second, it appears that with the way SSL_set_shutdown() is being used to stuff flags into the SSL state, SSL_shutdown() should be called until it returns 1, which may take multiple calls, even if there isn't a WANT_READ or WANT_WRITE condition upon returning -1 (or 0?).  Generally one call is used to send a close_notify, which returns 0 (assuming SSL_set_shutdown hasn't stuffed in <span style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace;font-size:12px;line-height:16.8px;white-space:pre">SSL_RECEIVED_SHUTDOWN)</span>, and further calls wont return 1 until it receives close_notify.</div><div><br></div><div>Quite possibly I am missing some assumptions, which would make good comments in the code.</div><div><br></div><div>I hope this is useful.</div></div></blockquote></div><br><div apple-content-edited="true">
<div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">Now code and the comment should be changed, thank you.</div><div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><br><br>-- <br>Igor Sysoev<br><a href="http://nginx.com">http://nginx.com</a></div></div></div>
</div>
<br></body></html>