<div dir="ltr"><div>Hello everyone,</div><div><br></div><div>I have resumed my tests and I think I found the source of my problem :</div><div><br></div><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

I also wonder why I sometimes get "gethostbyaddr: Resource temporarily unavailable" message. Besides, my app on LAN or WAN with a default route gateway (egg: route add default gw 192.168.1.1), it works not too bad but as soon as I do the following :<br>

 - Remove access to the gateway from the LAN : An other computer on the same LAN as the server cannot have webpage served by the server although they both can reach each other using ping. (Moreover, using the default libwebsocket-test-server it works). <br>

 - Use an other computer to upload a very big file to an external server (using filezila)<br>It either doesn't work at all or take 50 times more time than usual.</blockquote></div><div><br></div><div>The cause is that I uncommented :</div>

<div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">#if 0<br><span class="" style="white-space:pre">                </span>libwebsockets_get_peer_addresses(context, wsi, (int)(long)in, client_name,<br>

<span class="" style="white-space:pre">                       </span>     sizeof(client_name), client_ip, sizeof(client_ip));<br><span class="" style="white-space:pre">                </span>fprintf(stderr, "Received network connect from %s (%s)\n",<br>

<span class="" style="white-space:pre">                                                       </span>client_name, client_ip);<br>#endif</blockquote></div><div>in order to filter on client IP in the future.</div><div>It sounds like a bug as I started to guess in this post : <a href="http://ml.libwebsockets.org/pipermail/libwebsockets/2014-January/000825.html" target="_blank">http://ml.libwebsockets.org/pipermail/libwebsockets/2014-January/000825.html</a></div>

<div><br></div><div>Thanks in advance</div><div>BR,</div><div>Thomas</div><br><div class="gmail_quote">---------- Forwarded message ----------<br>
From: <b class="gmail_sendername">Thomas Spitz</b> <span dir="ltr"><<a href="mailto:thomas.spitz@hestia-france.com" target="_blank">thomas.spitz@hestia-france.com</a>></span><br>Date: 2014-01-29<br>Subject: SSL_accept failed SSL_ERROR_WANT_READ<br>


To: <a href="mailto:libwebsockets@ml.libwebsockets.org" target="_blank">libwebsockets@ml.libwebsockets.org</a><br><br><br><div dir="ltr"><div>Dear everyone,</div><div><br></div><div>Using simple libwebsockets-test-server with SSL, I always have the following debug message :</div>


<div><br></div><div>lwsts[662]: SSL_accept failed 2 / error:00000002:lib(0):func(0):system lib</div>
<div>lwsts[662]: SSL_ERROR_WANT_READ</div><div><br></div><div>whereas my certificate are correctly set in the browser and it is recognized by it. Moreover, the connection seems completly OK.</div><div><br></div><div>Here below the complete trace :</div>



<div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"># ./libwebsockets-test-server -d 31 -ssl<br>



./libwebsockets-test-server: invalid option -- l<br>lwsts[662]: libwebsockets test server - (C) Copyright 2010-2013 Andy Green <<a href="mailto:andy@warmcat.com" target="_blank">andy@warmcat.com</a>> - licensed under LGPL2.1<br>


lwsts[662]: Initial logging level 31<br>
lwsts[662]: Library version: 1.3 a638d5a<br>lwsts[662]:  LWS_MAX_HEADER_LEN: 1024<br>lwsts[662]:  LWS_MAX_PROTOCOLS: 5<br>lwsts[662]:  LWS_MAX_EXTENSIONS_ACTIVE: 3<br>lwsts[662]:  SPEC_LATEST_SUPPORTED: 13<br>lwsts[662]:  AWAITING_TIMEOUT: 5<br>



lwsts[662]:  SYSTEM_RANDOM_FILEPATH: '/dev/urandom'<br>lwsts[662]:  LWS_MAX_ZLIB_CONN_BUFFER: 65536<br>lwsts[662]:  static allocation: 4452 + (12 x 1024 fds) = 16740 bytes<br>lwsts[662]:  canonical_hostname =myProduct<br>



lwsts[662]:  Compiled with OpenSSL support<br>lwsts[662]:  Using SSL mode<br>lwsts[662]:  per-conn mem: 124 + 1554 headers + protocol rx buf<br>lwsts[662]: insert_wsi_socket_into_fds: wsi=0x82fca0, sock=5, fds pos=0<br>lwsts[662]:  Listening on port 7681<br>



lwsts[662]: insert_wsi_socket_into_fds: wsi=0x830000, sock=6, fds pos=1<br>lwsts[662]: inserted SSL accept into fds, trying SSL_accept<br>lwsts[662]: SSL_accept failed 2 / error:00000002:lib(0):func(0):system lib<br>lwsts[662]: SSL_ERROR_WANT_READ<br>



lwsts[662]: accepted new SSL conn<br>lwsts[662]: HTTP GET request for '/'<br>    GET URI = /<br>    Host = <a href="http://192.168.1.5:7681" target="_blank">192.168.1.5:7681</a><br>    Connection = keep-alive<br>


    Accept: = text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8<br>
    Accept-Encoding: = gzip,deflate,sdch<br>    Accept-Language: = fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4<br>    Cache-Control: = max-age=0<br>    Cookie: = test=LWS_1322044_360921_COOKIE<br>lwsts[662]: LWS_CALLBACK_HTTP closing<br>



lwsts[662]: closing connection at libwebsocket_read bail:<br>lwsts[662]: closing http fd 7<br>lwsts[662]: close: just_kill_connection<br>lwsts[662]: remove_wsi_socket_from_fds: wsi=0x830000, sock=6, fds pos=1<br>lwsts[662]: calling back CLOSED_HTTP<br>



lwsts[662]: insert_wsi_socket_into_fds: wsi=0x842728, sock=6, fds pos=1<br>lwsts[662]: inserted SSL accept into fds, trying SSL_accept<br>lwsts[662]: SSL_accept failed 2 / error:00000002:lib(0):func(0):system lib<br>lwsts[662]: SSL_ERROR_WANT_READ<br>



lwsts[662]: insert_wsi_socket_into_fds: wsi=0x842478, sock=7, fds pos=2<br>lwsts[662]: inserted SSL accept into fds, trying SSL_accept<br>lwsts[662]: SSL_accept failed 2 / error:00000002:lib(0):func(0):system lib<br>lwsts[662]: SSL_ERROR_WANT_READ<br>



lwsts[662]: accepted new SSL conn<br>lwsts[662]: HTTP GET request for '/libwebsockets.org-logo.png'<br>    GET URI = /libwebsockets.org-logo.png<br>    Host = <a href="http://192.168.1.5:7681" target="_blank">192.168.1.5:7681</a><br>



    Connection = keep-alive<br>    Accept: = image/webp,*/*;q=0.8<br>    Accept-Encoding: = gzip,deflate,sdch<br>    Accept-Language: = fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4<br>    Cache-Control: = max-age=0<br>    Cookie: = test=LWS_1322044_360921_COOKIE<br>



    Referer: = <a href="https://192.168.1.5:7681/" target="_blank">https://192.168.1.5:7681/</a><br>lwsts[662]: LWS_CALLBACK_HTTP closing<br>lwsts[662]: closing connection at libwebsocket_read bail:<br>lwsts[662]: closing http fd 8<br>


lwsts[662]: close: just_kill_connection<br>
lwsts[662]: remove_wsi_socket_from_fds: wsi=0x842728, sock=6, fds pos=1<br>lwsts[662]: calling back CLOSED_HTTP<br>lwsts[662]: accepted new SSL conn<br>lwsts[662]: insert_wsi_socket_into_fds: wsi=0x842728, sock=6, fds pos=2<br>



lwsts[662]: inserted SSL accept into fds, trying SSL_accept<br>lwsts[662]: SSL_accept failed 2 / error:00000002:lib(0):func(0):system lib<br>lwsts[662]: SSL_ERROR_WANT_READ<br>    GET URI = /xxx<br>    Host = <a href="http://192.168.1.5:7681" target="_blank">192.168.1.5:7681</a><br>



    Connection = Upgrade<br>    Protocol = dumb-increment-protocol<br>    Upgrade = websocket<br>    Origin = <a href="https://192.168.1.5:7681" target="_blank">https://192.168.1.5:7681</a><br>    Key = C6VIbVBhaimYeXV0uI6pMQ==<br>


    Version = 13<br>
    Extensions = permessage-deflate; client_max_window_bits, x-webkit-deflate-frame<br>    Pragma: = no-cache<br>    Cache-Control: = no-cache<br>    Cookie: = test=LWS_1322044_360921_COOKIE<br>lwsts[662]: callback_dumb_increment: LWS_CALLBACK_ESTABLISHED<br>



lwsts[662]: Allocating RX buffer 32<br>lwsts[662]: accepted new SSL conn<br>lwsts[662]: insert_wsi_socket_into_fds: wsi=0x83faf8, sock=8, fds pos=3<br>lwsts[662]: inserted SSL accept into fds, trying SSL_accept<br>lwsts[662]: SSL_accept failed 2 / error:00000002:lib(0):func(0):system lib<br>



lwsts[662]: SSL_ERROR_WANT_READ<br>lwsts[662]: HTTP GET request for '/favicon.ico'<br>    GET URI = /favicon.ico<br>    Host = <a href="http://192.168.1.5:7681" target="_blank">192.168.1.5:7681</a><br>    Connection = keep-alive<br>



    Accept: = */*<br>    Accept-Encoding: = gzip,deflate,sdch<br>    Accept-Language: = fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4<br>    Cookie: = test=LWS_1322044_360921_COOKIE<br>lwsts[662]: LWS_CALLBACK_HTTP closing<br>lwsts[662]: closing connection at libwebsocket_read bail:<br>



lwsts[662]: closing http fd 9<br>lwsts[662]: close: just_kill_connection<br>lwsts[662]: remove_wsi_socket_from_fds: wsi=0x842728, sock=6, fds pos=2<br>lwsts[662]: calling back CLOSED_HTTP<br>lwsts[662]: deflate-frame ext TX did realloc to 4<br>



lwsts[662]: deflate-frame ext TX did realloc to 4<br>lwsts[662]: deflate-frame ext TX did realloc to 4<br>lwsts[662]: accepted new SSL conn<br>    GET URI = /xxx<br>    Host = <a href="http://192.168.1.5:7681" target="_blank">192.168.1.5:7681</a><br>



    Connection = Upgrade<br>    Protocol = lws-mirror-protocol<br>    Upgrade = websocket<br>    Origin = <a href="https://192.168.1.5:7681" target="_blank">https://192.168.1.5:7681</a><br>    Key = 4KS2kzukHEgwOhJVd9IxMg==<br>


    Version = 13<br>
    Extensions = permessage-deflate; client_max_window_bits, x-webkit-deflate-frame<br>    Pragma: = no-cache<br>    Cache-Control: = no-cache<br>    Cookie: = test=LWS_1322044_360921_COOKIE<br>lwsts[662]: callback_lws_mirror: LWS_CALLBACK_ESTABLISHED<br>



lwsts[662]: Allocating RX buffer 150</blockquote><div><br></div><div><br></div><div>Using libwebsocket in my own program (multi threaded app on embedded linux arm), I also have those kind of error but with slightly different code number. In this app, I namely added the following code to libwebsocket-test-server:</div>



<div><br></div><div>case LWS_CALLBACK_FILTER_NETWORK_CONNECTION:</div><div><span style="white-space:pre-wrap">              </span>libwebsockets_get_peer_addresses(context, wsi, (int) (long) in, client_name, sizeof(client_name), client_ip, sizeof(client_ip));</div>



<div><span style="white-space:pre-wrap">          </span>/* if we returned non-zero from here, we kill the connection */</div><div><span style="white-space:pre-wrap">          </span>break;</div><div>I also wonder why I sometimes get "gethostbyaddr: Resource temporarily unavailable" message. Besides, my app on LAN or WAN with a default route gateway (egg: route add default gw 192.168.1.1), it works not too bad but as soon as I do the following :</div>



<div> - Remove access to the gateway from the LAN : An other computer on the same LAN as the server cannot have webpage served by the server although they both can reach each other using ping. (Moreover, using the default libwebsocket-test-server it works). </div>



<div> - Use an other computer to upload a very big file to an external server (using filezila)</div><div>It either doesn't work at all or take 50 times more time than usual.</div><div><br></div><div>Notes: </div><div>



- My webpage is linked to several external files (css, js, img)</div><div>- In this test I do use only HTTP (no websocket)</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">



gethostbyaddr: Success<br>lwsts[622]: insert_wsi_socket_into_fds: wsi=0x10b2a0, sock=10, fds pos=1<br>lwsts[622]: inserted SSL accept into fds, trying SSL_accept<br>lwsts[622]: SSL_accept failed 2 / error:00000002:lib(0):func(0):system lib<br>



lwsts[622]: SSL_ERROR_WANT_READ<br>lwsts[622]: accepted new SSL conn<br>lwsts[622]: HTTP GET request for '/index.html'<br>    GET URI = /index.html<br>    Host = 192.168.1.5<br>    Connection = keep-alive<br>    Accept: = text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8<br>



    Accept-Encoding: = gzip,deflate,sdch<br>    Accept-Language: = fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4<br>    Cache-Control: = max-age=0<br>lwsts[622]: LWS_CALLBACK_HTTP closing<br>lwsts[622]: closing connection at libwebsocket_read bail:<br>



lwsts[622]: closing http fd 11<br>lwsts[622]: close: just_kill_connection<br>lwsts[622]: remove_wsi_socket_from_fds: wsi=0x10b2a0, sock=10, fds pos=1<br>lwsts[622]: calling back CLOSED_HTTP<br>gethostbyaddr: Success<br>lwsts[622]: insert_wsi_socket_into_fds: wsi=0x10b2a0, sock=10, fds pos=1<br>



lwsts[622]: inserted SSL accept into fds, trying SSL_accept<br>lwsts[622]: SSL_accept failed 2 / error:00000002:lib(0):func(0):system lib<br>lwsts[622]: SSL_ERROR_WANT_READ<br>gethostbyaddr: Resource temporarily unavailable<br>



lwsts[622]: insert_wsi_socket_into_fds: wsi=0x11bf78, sock=11, fds pos=2<br>lwsts[622]: inserted SSL accept into fds, trying SSL_accept<br>lwsts[622]: SSL_accept failed 5 / error:00000005:lib(0):func(0):DH lib<br>lwsts[622]: SSL_accept failed skt 9: error:00000005:lib(0):func(0):DH lib<br>



lwsts[622]: close: just_kill_connection<br>lwsts[622]: remove_wsi_socket_from_fds: wsi=0x11bf78, sock=11, fds pos=2<br>lwsts[622]: not calling back closed<br>lwsts[622]: TIMEDOUT WAITING<br>lwsts[622]: close: just_kill_connection<br>



lwsts[622]: remove_wsi_socket_from_fds: wsi=0x10b2a0, sock=10, fds pos=1<br>lwsts[622]: not calling back closed<br>gethostbyaddr: Success<br>lwsts[622]: insert_wsi_socket_into_fds: wsi=0x10b2a0, sock=10, fds pos=1<br>lwsts[622]: inserted SSL accept into fds, trying SSL_accept<br>



lwsts[622]: SSL_accept failed 5 / error:00000005:lib(0):func(0):DH lib<br>lwsts[622]: SSL_accept failed skt 9: error:00000005:lib(0):func(0):DH lib<br>lwsts[622]: close: just_kill_connection<br>lwsts[622]: remove_wsi_socket_from_fds: wsi=0x10b2a0, sock=10, fds pos=1<br>



lwsts[622]: not calling back closed</blockquote><div><br></div><div>Hope someone has advices to share :-)</div><div><br></div><div> Thanks in advance</div><div>BR,</div><div>Thomas</div></div></div></div>