<div dir="ltr">Hi Andy,<div><br></div><div>Please provide your update on below mail.</div><div><br></div><div>Regrdas,</div><div>Sonal </div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Dec 17, 2014 at 2:54 PM, sonal gupta <span dir="ltr"><<a href="mailto:sonal6226@gmail.com" target="_blank">sonal6226@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">Thanks Andy for replying.<div><br></div><div><p class="MsoNormal">Support for close status will be very much needed in my case
so I will  appreciate if this patch can
be added to the library .</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">And My suggestion is to provide this status as short value
instead of enum  so that we can use value
of  status code ( in a range  as mentioned by standard ) .</p>

<p class="MsoNormal">I’m planning  to use <span lang="EN" style="font-size:10pt">codes in the range
4000-4999 are reserved for private use  .</span></p><p class="MsoNormal"><span lang="EN" style="font-size:10pt"><br></span></p><p class="MsoNormal"><span lang="EN" style="font-size:10pt">I assume that status code will be provieded in first 2 bytes of <b>"</b></span><i style="font-weight:bold;color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium">void *</i><span style="font-weight:bold;color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium"> </span><span style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium"><b>in" </b>of API "</span><i style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium">int</i><span style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium"> </span><span style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium">callback</span><span style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium"> (</span><i style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium">struct libwebsocket_context *</i><span style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium"> </span><span style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium">context</span><span style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium">, </span><i style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium">struct libwebsocket *</i><span style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium"> </span><span style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium">wsi</span><span style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium">, </span><i style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium">enum libwebsocket_callback_reasons</i><span style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium"> </span><span style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium">reason</span><span style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium">, </span><i style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium">void *</i><span style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium"> </span><span style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium">user</span><span style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium">, </span><i style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium">void *</i><span style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium"> </span><span style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium">in</span><span style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium">, </span><i style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium">size_t</i><span style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium"> </span><span style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium">len</span><span style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium">)". Please verify my assumtions.</span></p><p class="MsoNormal"><span style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium"><br></span></p><p class="MsoNormal"><font color="#000000" face="Times New Roman" size="3">7.4.2. Status Code Ranges</font></p><p class="MsoNormal"><font color="#000000" face="Times New Roman" size="3"><br></font></p><p class="MsoNormal"><font color="#000000" face="Times New Roman" size="3">   0-999</font></p><p class="MsoNormal"><font color="#000000" face="Times New Roman" size="3"><br></font></p><p class="MsoNormal"><font color="#000000" face="Times New Roman" size="3">      Status codes in the range 0-999 are not used.</font></p><p class="MsoNormal"><font color="#000000" face="Times New Roman" size="3"><br></font></p><p class="MsoNormal"><font color="#000000" face="Times New Roman" size="3">   1000-2999</font></p><p class="MsoNormal"><font color="#000000" face="Times New Roman" size="3"><br></font></p><p class="MsoNormal"><font color="#000000" face="Times New Roman" size="3">      Status codes in the range 1000-2999 are reserved for definition by</font></p><p class="MsoNormal"><font color="#000000" face="Times New Roman" size="3">      this protocol, its future revisions, and extensions specified in a</font></p><p class="MsoNormal"><font color="#000000" face="Times New Roman" size="3">      permanent and readily available public specification.</font></p><p class="MsoNormal"><font color="#000000" face="Times New Roman" size="3"><br></font></p><p class="MsoNormal"><font color="#000000" face="Times New Roman" size="3">   3000-3999</font></p><p class="MsoNormal"><font color="#000000" face="Times New Roman" size="3"><br></font></p><p class="MsoNormal"><font color="#000000" face="Times New Roman" size="3">      Status codes in the range 3000-3999 are reserved for use by</font></p><p class="MsoNormal"><font color="#000000" face="Times New Roman" size="3">      libraries, frameworks, and applications.  These status codes are</font></p><p class="MsoNormal"><font color="#000000" face="Times New Roman" size="3">      registered directly with IANA.  The interpretation of these codes</font></p><p class="MsoNormal"><font color="#000000" face="Times New Roman" size="3">      is undefined by this protocol.</font></p><p class="MsoNormal"><font color="#000000" face="Times New Roman" size="3"><br></font></p><p class="MsoNormal"><font color="#000000" face="Times New Roman" size="3">   4000-4999</font></p><p class="MsoNormal"><font color="#000000" face="Times New Roman" size="3"><br></font></p><p class="MsoNormal"><font color="#000000" face="Times New Roman" size="3">      Status codes in the range 4000-4999 are reserved for private use</font></p><p class="MsoNormal"><font color="#000000" face="Times New Roman" size="3">      and thus can't be registered.  Such codes can be used by prior</font></p><p class="MsoNormal"><font color="#000000" face="Times New Roman" size="3">      agreements between WebSocket applications.  The interpretation of</font></p><p class="MsoNormal"></p><p class="MsoNormal"><font color="#000000" face="Times New Roman" size="3">      these codes is undefined by this protocol.</font></p><p class="MsoNormal"><font color="#000000" face="Times New Roman" size="3"><br></font></p><p class="MsoNormal"><font color="#000000" face="Times New Roman" size="3">Regards,</font></p><p class="MsoNormal"><font color="#000000" face="Times New Roman" size="3">Sonal </font></p></div><div><br></div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Dec 16, 2014 at 6:29 AM, Andy Green <span dir="ltr"><<a href="mailto:andy@warmcat.com" target="_blank">andy@warmcat.com</a>></span> wrote:<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span><br>
<br>
On 15 December 2014 20:54:26 GMT+08:00, sonal gupta <<a href="mailto:sonal6226@gmail.com" target="_blank">sonal6226@gmail.com</a>> wrote:<br>
>Hi Andy,<br>
><br>
>How do extract various error condition codes which may occur in case of<br>
>connection faliure ?<br>
><br>
>As per standrad, follwoing error code occurs in Libwebsockets. But<br>
>which<br>
>api or callback is used to handle them on upper layer.<br>
<br>
</span>Right now there is no way.  You closed and that's it.<br>
<br>
In many cases there's no information anyway, eg, it was not or did not make it to an established websocket connection, or he closed in an uncontrolled way outside ws control.<br>
<br>
But it's true if it was a ws connection, and it was closed inside ws control, there is more info we could provide.<br>
<br>
Would you like to make a patch for this functionality?<br>
<span><font color="#888888"><br>
-Andy<br>
</font></span><div><div><br>
>enum lws_close_status {<br>
>LWS_CLOSE_STATUS_NOSTATUS = 0,<br>
>LWS_CLOSE_STATUS_NORMAL = 1000,<br>
>LWS_CLOSE_STATUS_GOINGAWAY = 1001,<br>
>LWS_CLOSE_STATUS_PROTOCOL_ERR = 1002,<br>
>LWS_CLOSE_STATUS_UNACCEPTABLE_OPCODE = 1003,<br>
>LWS_CLOSE_STATUS_RESERVED = 1004,<br>
>LWS_CLOSE_STATUS_NO_STATUS = 1005,<br>
>LWS_CLOSE_STATUS_ABNORMAL_CLOSE = 1006,<br>
>LWS_CLOSE_STATUS_INVALID_PAYLOAD = 1007,<br>
>LWS_CLOSE_STATUS_POLICY_VIOLATION = 1008,<br>
>LWS_CLOSE_STATUS_MESSAGE_TOO_LARGE = 1009,<br>
>LWS_CLOSE_STATUS_EXTENSION_REQUIRED = 1010,<br>
>LWS_CLOSE_STATUS_UNEXPECTED_CONDITION = 1011,<br>
>LWS_CLOSE_STATUS_TLS_FAILURE = 1015,<br>
>};<br>
><br>
>Please provide your valuable feedback.<br>
>Thanks for giving helplful replies for previous query.<br>
><br>
>Regards,<br>
>Sonal<br>
<br>
</div></div></blockquote></div></div>
</div></div></blockquote></div><br></div></div>