<div dir="ltr"><div>One more thing...(this is a minor issue, though it might have impacts elsewhere in the code):<br><br>Looking further it looks like you are attempting to include a close 'reason' in the close packet, but the code that does that work is broken resulting no reason being sent.<br><br></div>I __think__ the issue is in libwebsocket_close_and_free_session where it calls libwebsocket_write.  A buffer is passed in with room for a reason code (+2), but the buffer's length is passed in as 0.  See below...<br><br>        /* make valgrind happy */<br>        memset(buf, 0, sizeof(buf));<br>        n = libwebsocket_write(wsi,<br>                &buf[LWS_SEND_BUFFER_PRE_PADDING + 2],<br>                                0, LWS_WRITE_CLOSE); // <-- I think the zero is wrong?<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Dec 4, 2014 at 3:40 PM, Tony <span dir="ltr"><<a href="mailto:yellowjacketlite@gmail.com" target="_blank">yellowjacketlite@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div>While investigating my question regarding my issue with proper client side shutdown, I think I uncovered a bug.<br><br></div>In libwebsocket_context_destroy, libwebsocket_close_and_free_session is called with a shutdown reason of LWS_CLOSE_STATUS_NOSTATUS.  However the code of libwebsocket_close_and_free_session, it expects the 'reason' to be anything but LWS_CLOSE_STATUS_NOSTATUS.<br><br></div>Here's the line...<br><br>    if (old_state == WSI_STATE_ESTABLISHED &&<br>                      reason != LWS_CLOSE_STATUS_NOSTATUS) {<br></div>   // perform shutdown step 1<br><div>    }<br><div><div><div><br></div><div>I'm not sure of the correct fix, but I __think__ either libwebsocket_context_destroy should pass in, say, LWS_CLOSE_STATUS_NORMAL, or the above if statement should be changed to read...<br><br>    if (old_state == WSI_STATE_ESTABLISHED &&<br>                      reason == LWS_CLOSE_STATUS_NOSTATUS) {<br>   // perform shutdown step 1<br>    }</div><span class="HOEnZb"><font color="#888888"><br><div>-- <br><div>Tony</div>
</div></font></span></div></div></div></div>
</blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature">Tony</div>
</div>