<div dir="ltr"><div>My config looks like this:</div><div><br></div><div>vhost[0]</div><div>  protocol[0] = http-dummy</div><div>  protocol[1] = plugin1</div><div>  protocol[2] = plugin2</div><div>  protocol[3] = NULL</div><div>vhost[1] = NULL</div><div><br></div><div>If I change all instances of vhost->protocols[0] in client-handshake.c to vhost->protocols[1], I get the callback and it works as expected.</div><div><br></div><div>Unless I'm missing something, perhaps there would be a use for a vhost parameter along the lines of "default-client-protocol":"1"?</div><div><br></div><div>Thanks,</div><div>Joel</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Feb 12, 2017 at 12:18 PM, Joel Winarske <span dir="ltr"><<a href="mailto:joel.winarske@gmail.com" target="_blank">joel.winarske@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">Okay I sorted out my cert problem.<div><br></div><div>Now I'm seeing a response, but no callback.  My info setup is as follows:<div><br></div><div><div><span style="white-space:pre-wrap"> i.host = i.address;
        i.origin = NULL;
        i.ssl_connection = use_ssl;
        i.ietf_version_or_minus_one = ietf_version;
        i.context = lws_get_context(wsi);
        i.parent_wsi = wsi;
</span></div><div><br></div><div>In lws_client_connect_via_info() I see wsi->protocol is assigned "wsi->vhost->protocols[0]".  In my case this is protocol "http-dummy", where the callbacks of interest are un-handled.</div><div><br></div><div>What vhost references my current protocol as protocol[0]?</div><div><br></div><div><br></div><div><br></div><div><div>[2017/02/12 10:02:36:3846] NOTICE: http client: connecting</div><div>[2017/02/12 10:02:36:3846] INFO: lws_ensure_user_space: 02968600 protocol 0286EF08</div><div>[2017/02/12 10:02:36:3846] INFO: lws_ensure_user_space: 02968600 protocol pss 0, user_space=00000000</div><div>[2017/02/12 10:02:36:3846] INFO: lws_header_table_attach: wsi 02968600: ah 00000000 (tsi 0, count = 4) in</div><div>[2017/02/12 10:02:36:3851] INFO: lws_header_table_attach: wsi 02968600: ah 007A5FF0: count 5 (on exit)</div><div>[2017/02/12 10:02:36:3851] CLIENT: lws_client_connect: direct conn</div><div>[2017/02/12 10:02:36:3851] CLIENT: lws_client_connect_2</div><div>[2017/02/12 10:02:36:3851] CLIENT: lws_client_connect_2: address <a href="http://uas-api.inrix.com" target="_blank">uas-api.inrix.com</a></div><div>[2017/02/12 10:02:36:4126] ERR: getaddrinfo <a href="http://uas-api.inrix.com" target="_blank">uas-api.inrix.com</a> -> 50.112.165.43</div><div>[2017/02/12 10:02:36:4166] CLIENT: nonblocking connect retry (errno = 10035)</div><div>[2017/02/12 10:02:36:4166] INFO: lws_client_connect_via_info: created child 02968600 of parent 00F2E7B0</div><div>[2017/02/12 10:02:36:4166] NOTICE: lws_client_connect_via_info sucessful wsi=02968600</div><div>[2017/02/12 10:02:36:4166] INFO: lws_read: read_ok, used 402</div><div>[2017/02/12 10:02:36:4296] CLIENT: lws_client_connect_2</div><div>[2017/02/12 10:02:36:4296] CLIENT: lws_client_connect_2: address <a href="http://uas-api.inrix.com" target="_blank">uas-api.inrix.com</a></div><div>[2017/02/12 10:02:36:4301] ERR: getaddrinfo <a href="http://uas-api.inrix.com" target="_blank">uas-api.inrix.com</a> -> 50.112.165.43</div><div>[2017/02/12 10:02:36:4301] CLIENT: connected</div><div>[2017/02/12 10:02:36:4451] NOTICE: lws_ssl_client_connect2: SSL_connect says -1</div><div>[2017/02/12 10:02:36:4451] INFO: SSL_connect WANT_READ... retrying</div><div>[2017/02/12 10:02:36:4461] NOTICE: accepting self-signed certificate</div><div>[2017/02/12 10:02:36:4481] NOTICE: lws_ssl_client_connect2: SSL_connect says -1</div><div>[2017/02/12 10:02:36:4481] INFO: SSL_connect WANT_READ... retrying</div><div>[2017/02/12 10:02:36:4606] NOTICE: lws_ssl_client_connect2: SSL_connect says 1</div><div><span class="m_8050799201814396842gmail-Apple-tab-span" style="white-space:pre-wrap">  </span>HTTP/1.1 200 OK</div><div><span class="m_8050799201814396842gmail-Apple-tab-span" style="white-space:pre-wrap">      </span>Cache-Control: no-cache</div><div><span class="m_8050799201814396842gmail-Apple-tab-span" style="white-space:pre-wrap">      </span>Content-Type: application/json; charset=utf-8</div><div><span class="m_8050799201814396842gmail-Apple-tab-span" style="white-space:pre-wrap">        </span>Date: Sun, 12 Feb 2017 18:02:35 GMT</div><div><span class="m_8050799201814396842gmail-Apple-tab-span" style="white-space:pre-wrap">  </span>Expires: -1</div><div><span class="m_8050799201814396842gmail-Apple-tab-span" style="white-space:pre-wrap">  </span>Pragma: no-cache</div><div><span class="m_8050799201814396842gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>Server: Microsoft-IIS/8.5</div><div><span class="m_8050799201814396842gmail-Apple-tab-span" style="white-space:pre-wrap">    </span>X-AspNet-Version: 4.0.30319</div><div><span class="m_8050799201814396842gmail-Apple-tab-span" style="white-space:pre-wrap">  </span>X-Powered-By: <a href="http://ASP.NET" target="_blank">ASP.NET</a></div><div><span class="m_8050799201814396842gmail-Apple-tab-span" style="white-space:pre-wrap">   </span>Content-Length: 316</div><div><span class="m_8050799201814396842gmail-Apple-tab-span" style="white-space:pre-wrap">  </span>Connection: keep-alive</div><div>[2017/02/12 10:02:36:4796] INFO: lws_ensure_user_space: 02968600 protocol 0286EF08</div><div>[2017/02/12 10:02:36:4796] INFO: lws_ensure_user_space: 02968600 protocol pss 0, user_space=00000000</div><div>[2017/02/12 10:02:36:4796] NOTICE: lws_client_interpret_server_<wbr>handshake: incoming content length 316</div><div>[2017/02/12 10:02:36:4796] INFO: lws_header_table_detach: wsi 02968600: ah 007A5FF0 (tsi=0, count = 5)</div><div>[2017/02/12 10:02:36:4796] INFO: lws_header_table_detach: wsi 02968600: ah 007A5FF0 (tsi=0, count = 4)</div><div>[2017/02/12 10:02:36:4796] NOTICE: lws_client_interpret_server_<wbr>handshake: client connection up</div><div>[2017/02/12 10:02:36:4796] INFO: ssl buffered read</div><div>[2017/02/12 10:02:36:4796] INFO: lws_read: read_ok, used 0</div></div><div><br></div></div></div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Feb 11, 2017 at 7:08 PM, Andy Green <span dir="ltr"><<a href="mailto:andy@warmcat.com" target="_blank">andy@warmcat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span><br>
<br>
On 02/12/2017 10:45 AM, Joel Winarske wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
This all makes sense, and helps tremendously.<br>
<br>
I'm seeing an SSL connection error.  I have lws_client_connect_info.ssl_co<wbr>nnection set to:<br>
LCCSCF_USE_SSL |<br>
LCCSCF_ALLOW_SELFSIGNED |<br>
LCCSCF_SKIP_SERVER_CERT_HOSTNA<wbr>ME_CHECK;<br>
<br>
Yet it's complaining:<br>
[2017/02/11 18:33:40:3076] ERR: SSL error: unable to get local issuer certificate (preverify_ok=0;err=20;depth=2<wbr>)<br>
[2017/02/11 18:33:40:3076] NOTICE: lws_ssl_client_connect2: SSL_connect says -1<br>
[2017/02/11 18:33:40:3076] ERR: SSL connect error 337047686: error:1416F086:SSL routines:tls_process_server_ce<wbr>rtificate:certificate verify failed<br>
[2017/02/11 18:33:40:3076] INFO: closing conn at LWS_CONNMODE...SERVER_REPLY<br>
</blockquote>
<br></span>
It seems you don't have all the intermediate certs?<br>
<br>
<a href="https://www.sslshopper.com/ssl-checker.html#hostname=%20https://api.npr.org" rel="noreferrer" target="_blank">https://www.sslshopper.com/ssl<wbr>-checker.html#hostname=%20http<wbr>s://api.npr.org</a> says these are required<br>
<br>
<br>
        *Common name:* *.<a href="http://npr.org" rel="noreferrer" target="_blank">npr.org</a><br>
*SANs:* *.<a href="http://npr.org" rel="noreferrer" target="_blank">npr.org</a><br>
*Organization:* National Public Radio, Inc.<br>
*Location:* Washington, District of Columbia, US<br>
*Valid* from January 12, 2015 to January 17, 2018<br>
*Serial Number:* 3d46073e85fe316e44e9c5f77d1a9a<wbr>9f<br>
*Signature Algorithm:* sha256WithRSAEncryption<br>
*Issuer:* thawte SSL CA - G2    <br>
        <br>
        *Common name:* thawte SSL CA - G2<br>
*SANs:* DirName: CN = SymantecPKI-1-537<br>
*Organization:* thawte, Inc.<br>
*Location:* US<br>
*Valid* from October 30, 2013 to October 30, 2023<br>
*Serial Number:* 1687d6886de2300685233dbf11bf65<wbr>97<br>
*Signature Algorithm:* sha256WithRSAEncryption<br>
*Issuer:* thawte Primary Root CA        <br>
        <br>
        *Common name:* thawte Primary Root CA<br>
*Organization:* thawte, Inc.<br>
*Location:* US<br>
*Valid* from November 16, 2006 to December 30, 2020<br>
*Serial Number:* 3365500879ad73e230b9e01d0d7fac<wbr>91<br>
*Signature Algorithm:* sha1WithRSAEncryption<br>
*Issuer:* Thawte Premium Server CA<br>
<br>
<br>
<br>
The server should send the first one at least, but it seems this is the error you would get if you do not have both the other ones in your certificate bundle already<br>
<br>
-Andy<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span>
<br>
<br>
Complete log snippet:<br>
[2017/02/11 18:33:40:0992] INFO: Method: POST request for '/rest/send'<br>
[2017/02/11 18:33:40:0992] DEBUG: lws_set_timeout: 0145B278: 20 secs<br>
[2017/02/11 18:33:40:0992] INFO: lws_ensure_user_space: 0145B278 protocol 0153EAE8<br>
[2017/02/11 18:33:40:0992] DEBUG: lws_read: thinks we have used 171<br>
[2017/02/11 18:33:40:0997] NOTICE: lws_spa_create: Created SPA 034EF588<br>
[2017/02/11 18:33:40:0997] DEBUG: lws_set_timeout: 0145B278: 0 secs<br>
[2017/02/11 18:33:40:0997] NOTICE: di: ** LWS_CALLBACK_HTTP_BODY_COMPLET<wbr>ION: v=031F3DE8, ctx=01487020<br>
[2017/02/11 18:33:40:0997] NOTICE: Send Request:<br>
[2017/02/11 18:33:40:0997] NOTICE:      url: <a href="https://api.npr.org/listening/v2/recommendations?channel=shows" rel="noreferrer" target="_blank">https://api.npr.org/listening/<wbr>v2/recommendations?channel=sho<wbr>ws</a><br>
[2017/02/11 18:33:40:0997] NOTICE:      method: GET<br>
[2017/02/11 18:33:40:0997] NOTICE:      sendheaders: Authorization:Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<wbr>xxxxxxxxxx<br>
[2017/02/11 18:33:40:0997] NOTICE:  Using SSL<br>
[2017/02/11 18:33:40:0997] NOTICE:  Selfsigned certs allowed<br>
[2017/02/11 18:33:40:0997] NOTICE:  Skipping peer cert hostname check<br>
[2017/02/11 18:33:40:0997] NOTICE: using https mode (non-ws)<br>
[2017/02/11 18:33:40:0997] NOTICE: http client: connecting<br>
[2017/02/11 18:33:40:0997] DEBUG: lws_union_transition: 01545190: mode 32<br>
[2017/02/11 18:33:40:1002] INFO: lws_ensure_user_space: 01545190 protocol 0153EAD0<br>
[2017/02/11 18:33:40:1002] INFO: lws_ensure_user_space: 01545190 protocol pss 0, user_space=00000000<br>
[2017/02/11 18:33:40:1002] INFO: lws_header_table_attach: wsi 01545190: ah 00000000 (tsi 0, count = 4) in<br>
[2017/02/11 18:33:40:1002] INFO: lws_header_table_attach: wsi 01545190: ah 0149C0D0: count 5 (on exit)<br>
[2017/02/11 18:33:40:1002] CLIENT: lws_client_connect: direct conn<br>
[2017/02/11 18:33:40:1002] CLIENT: lws_client_connect_2<br></span>
[2017/02/11 18:33:40:1002] CLIENT: lws_client_connect_2: address <a href="http://api.npr.org" rel="noreferrer" target="_blank">api.npr.org</a> <<a href="http://api.npr.org" rel="noreferrer" target="_blank">http://api.npr.org</a>><br>
[2017/02/11 18:33:40:1526] ERR: getaddrinfo <a href="http://api.npr.org" rel="noreferrer" target="_blank">api.npr.org</a> <<a href="http://api.npr.org" rel="noreferrer" target="_blank">http://api.npr.org</a>> -> <a href="tel:216.35.221.71" value="+12163522171" target="_blank">216.35.221.71</a><div><div class="m_8050799201814396842h5"><br>
[2017/02/11 18:33:40:1531] DEBUG: lws_libuv_accept: new wsi 01545190<br>
[2017/02/11 18:33:40:1531] DEBUG: insert_wsi_socket_into_fds: 01545190: tsi=0, sock=632, pos-in-fds=13<br>
[2017/02/11 18:33:40:1531] DEBUG: lws_set_timeout: 01545190: 20 secs<br>
[2017/02/11 18:33:40:1536] CLIENT: nonblocking connect retry (errno = 10035)<br>
[2017/02/11 18:33:40:1536] NOTICE: lws_client_connect_via_info sucessful wsi=22303120<br>
[2017/02/11 18:33:40:1541] INFO: lws_read: read_ok, used 710<br>
[2017/02/11 18:33:40:1541] DEBUG: lws_server_socket_service: wsi 0145B278: ah read rxpos 710, rxlen 710<br>
[2017/02/11 18:33:40:1546] DEBUG: lws_uv_idle<br>
[2017/02/11 18:33:40:1546] DEBUG: lws_uv_idle: done stop<br>
[2017/02/11 18:33:40:1546] DEBUG: fd=564, revents=9<br>
[2017/02/11 18:33:40:1546] DEBUG: lws_read: incoming len 22  state 5<br>
[2017/02/11 18:33:40:1546] PARSER: lws_interpret_incoming_packet: received 22 byte packet<br>
[2017/02/11 18:33:40:1546] PARSER: spill on activation-protocol<br>
[2017/02/11 18:33:40:1551] EXTENSION: lws_rx_sm: passing 16 to ext<br>
[2017/02/11 18:33:40:1551] EXTENSION:  lws_extension_callback_pm_defl<wbr>ate: LWS_EXT_CB_PAYLOAD_RX: in 16, existing in 0<br>
[2017/02/11 18:33:40:1551] EXTENSION: inflate ret 0, avi 0, avo 894, wsifinal 1<br>
[2017/02/11 18:33:40:1551] EXTENSION: RX APPEND_TRAILER-DO<br>
[2017/02/11 18:33:40:1551] EXTENSION: RX trailer inf returned 0, avi 0, avo 894<br>
[2017/02/11 18:33:40:1551] EXTENSION: lws_extension_callback_pm_defl<wbr>ate: RX leaving with new effbuff len 130, ret 0, rx.avail_in=0, TOTAL RX since FIN 130<br>
[2017/02/11 18:33:40:1551] NOTICE: activate: LWS_CALLBACK_RECEIVE<br>
[2017/02/11 18:33:40:1556] DEBUG: _lws_rx_flow_control: no pending change<br>
[2017/02/11 18:33:40:1556] PARSER: lws_interpret_incoming_packet: exit with 0 unused<br>
[2017/02/11 18:33:40:1556] INFO: lws_read: read_ok, used 22<br>
[2017/02/11 18:33:40:1556] DEBUG: lws_uv_idle<br>
[2017/02/11 18:33:40:1556] DEBUG: lws_uv_idle: done stop<br>
[2017/02/11 18:33:40:1556] DEBUG: fd=564, revents=2<br>
[2017/02/11 18:33:40:1556] DEBUG: lws_calllback_as_writeable: 01547DC0 (user=0146DAE0)<br>
[2017/02/11 18:33:40:1556] NOTICE: activate: LWS_CALLBACK_SERVER_WRITEABLE<br>
[2017/02/11 18:33:40:1556] EXTENSION: lws_extension_callback_pm_defl<wbr>ate: TX: eff_buf length 74<br>
[2017/02/11 18:33:40:1561] EXTENSION: tx held 4<br>
[2017/02/11 18:33:40:1561] EXTENSION:   TX rewritten with new effbuff len 8, ret 0<br>
[2017/02/11 18:33:40:1561] EXTENSION: lws_extension_callback_pm_defl<wbr>ate: tx opcode 0xC1<br>
[2017/02/11 18:33:40:1561] PARSER: written 10 bytes to client<br>
[2017/02/11 18:33:40:1561] DEBUG: _lws_rx_flow_control: no pending change<br>
[2017/02/11 18:33:40:1561] DEBUG: lws_uv_idle<br>
[2017/02/11 18:33:40:1561] DEBUG: lws_uv_idle: done stop<br>
[2017/02/11 18:33:40:2276] DEBUG: fd=632, revents=2<br>
[2017/02/11 18:33:40:2276] CLIENT: lws_client_connect_2<br></div></div>
[2017/02/11 18:33:40:2276] CLIENT: lws_client_connect_2: address <a href="http://api.npr.org" rel="noreferrer" target="_blank">api.npr.org</a> <<a href="http://api.npr.org" rel="noreferrer" target="_blank">http://api.npr.org</a>><br>
[2017/02/11 18:33:40:2286] ERR: getaddrinfo <a href="http://api.npr.org" rel="noreferrer" target="_blank">api.npr.org</a> <<a href="http://api.npr.org" rel="noreferrer" target="_blank">http://api.npr.org</a>> -> <a href="tel:216.35.221.71" value="+12163522171" target="_blank">216.35.221.71</a><div><div class="m_8050799201814396842h5"><br>
[2017/02/11 18:33:40:2286] CLIENT: connected<br>
[2017/02/11 18:33:40:2286] DEBUG: lws_set_timeout: 01545190: 20 secs<br>
[2017/02/11 18:33:40:2286] DEBUG: fd=632, revents=9<br>
[2017/02/11 18:33:40:2291] DEBUG: lws_uv_idle<br>
[2017/02/11 18:33:40:2291] DEBUG: lws_uv_idle: done stop<br>
[2017/02/11 18:33:40:3056] DEBUG: fd=632, revents=9<br>
[2017/02/11 18:33:40:3061] NOTICE: lws_ssl_client_connect2: SSL_connect says -1<br>
[2017/02/11 18:33:40:3066] INFO: SSL_connect WANT_READ... retrying<br>
[2017/02/11 18:33:40:3066] DEBUG: lws_uv_idle<br>
[2017/02/11 18:33:40:3066] DEBUG: lws_uv_idle: done stop<br>
[2017/02/11 18:33:40:3066] DEBUG: fd=632, revents=9<br>
[2017/02/11 18:33:40:3076] ERR: SSL error: unable to get local issuer certificate (preverify_ok=0;err=20;depth=2<wbr>)<br>
[2017/02/11 18:33:40:3076] NOTICE: lws_ssl_client_connect2: SSL_connect says -1<br>
[2017/02/11 18:33:40:3076] ERR: SSL connect error 337047686: error:1416F086:SSL routines:tls_process_server_ce<wbr>rtificate:certificate verify failed<br>
[2017/02/11 18:33:40:3076] INFO: closing conn at LWS_CONNMODE...SERVER_REPLY<br>
[2017/02/11 18:33:40:3076] INFO: lws_close_free_wsi: real just_kill_connection: 01545190 (sockfd 632)<br>
[2017/02/11 18:33:40:3081] INFO: remove_wsi_socket_from_fds: removing same prot wsi 01545190<br>
[2017/02/11 18:33:40:3081] DEBUG: remove_wsi_socket_from_fds: wsi=01545190, sock=632, fds pos=13, end guy pos=14, endfd=0<br>
[2017/02/11 18:33:40:3081] DEBUG: not calling back closed mode=39 state=7<br>
[2017/02/11 18:33:40:3081] DEBUG: lws_close_free_wsi: lws_libuv_closehandle: wsi 01545190<br>
[2017/02/11 18:33:40:3081] DEBUG: lws_uv_idle<br>
[2017/02/11 18:33:40:3081] DEBUG: lws_uv_idle: done stop<br>
[2017/02/11 18:33:40:3081] INFO: ah det due to close<br>
[2017/02/11 18:33:40:3086] INFO: lws_header_table_detach: wsi 01545190: ah 0149C0D0 (tsi=0, count = 5)<br>
[2017/02/11 18:33:40:3086] INFO: lws_header_table_detach: wsi 01545190: ah 0149C0D0 (tsi=0, count = 4)<br>
[2017/02/11 18:33:40:3086] DEBUG: lws_free_wsi: 01545190, remaining wsi 13<br>
[2017/02/11 18:33:40:7005] DEBUG: lws_uv_timeout_cb<br>
[2017/02/11 18:33:41:7009] DEBUG: lws_uv_timeout_cb<br>
[2017/02/11 18:33:42:7018] DEBUG: lws_uv_timeout_cb<br>
[2017/02/11 18:33:43:7022] DEBUG: lws_uv_timeout_cb<br>
[2017/02/11 18:33:43:7024] INFO: lws_close_free_wsi: real just_kill_connection: 0145C890 (sockfd 556)<br>
[2017/02/11 18:33:43:7029] INFO: remove_wsi_socket_from_fds: removing same prot wsi 0145C890<br>
[2017/02/11 18:33:43:7034] DEBUG: remove_wsi_socket_from_fds: wsi=0145C890, sock=556, fds pos=5, end guy pos=13, endfd=632<br>
[2017/02/11 18:33:43:7036] DEBUG: not calling back closed mode=0 state=0<br>
[2017/02/11 18:33:43:7036] DEBUG: lws_close_free_wsi: lws_libuv_closehandle: wsi 0145C890<br>
[2017/02/11 18:33:43:7042] INFO: ah det due to close<br>
[2017/02/11 18:33:43:7042] INFO: lws_header_table_detach: wsi 0145C890: ah 00000000 (tsi=0, count = 4)<br>
[2017/02/11 18:33:43:7047] INFO: lws_header_table_detach: wsi 0145C890: ah 00000000 (tsi=0, count = 4)<br>
[2017/02/11 18:33:43:7047] DEBUG: lws_free_wsi: 0145C890, remaining wsi 12<br>
[2017/02/11 18:33:44:7022] DEBUG: lws_uv_timeout_cb<br>
[2017/02/11 18:33:45:7027] DEBUG: lws_uv_timeout_cb<br>
[2017/02/11 18:33:45:7027] INFO: lws_close_free_wsi: real just_kill_connection: 0145B8C8 (sockfd 512)<br>
[2017/02/11 18:33:45:7037] INFO: remove_wsi_socket_from_fds: removing same prot wsi 0145B8C8<br>
[2017/02/11 18:33:45:7042] DEBUG: remove_wsi_socket_from_fds: wsi=0145B8C8, sock=512, fds pos=3, end guy pos=12, endfd=576<br>
[2017/02/11 18:33:45:7042] DEBUG: not calling back closed mode=0 state=0<br>
[2017/02/11 18:33:45:7042] DEBUG: lws_close_free_wsi: lws_libuv_closehandle: wsi 0145B8C8<br>
[2017/02/11 18:33:45:7047] INFO: lws_close_free_wsi: real just_kill_connection: 0145CBB8 (sockfd 560)<br>
[2017/02/11 18:33:45:7047] INFO: remove_wsi_socket_from_fds: removing same prot wsi 0145CBB8<br>
[2017/02/11 18:33:45:7047] DEBUG: remove_wsi_socket_from_fds: wsi=0145CBB8, sock=560, fds pos=6, end guy pos=11, endfd=612<br>
[2017/02/11 18:33:45:7052] DEBUG: not calling back closed mode=0 state=0<br>
[2017/02/11 18:33:45:7052] DEBUG: lws_close_free_wsi: lws_libuv_closehandle: wsi 0145CBB8<br>
[2017/02/11 18:33:45:7057] INFO: ah det due to close<br>
[2017/02/11 18:33:45:7057] INFO: lws_header_table_detach: wsi 0145CBB8: ah 014988B0 (tsi=0, count = 4)<br>
[2017/02/11 18:33:45:7062] NOTICE: lws_header_table_detach: wsi 0145CBB8: ah held 6s, ah.rxpos 0, ah.rxlen 0, mode/state 0 4,wsi->more_rx_waiting 0<br>
[2017/02/11 18:33:45:7062] INFO: lws_header_table_detach: wsi 0145CBB8: ah 014988B0 (tsi=0, count = 3)<br>
[2017/02/11 18:33:45:7062] DEBUG: lws_free_wsi: 0145CBB8, remaining wsi 11<br>
[2017/02/11 18:33:45:7067] INFO: ah det due to close<br>
[2017/02/11 18:33:45:7067] INFO: lws_header_table_detach: wsi 0145B8C8: ah 00000000 (tsi=0, count = 3)<br>
[2017/02/11 18:33:45:7067] INFO: lws_header_table_detach: wsi 0145B8C8: ah 00000000 (tsi=0, count = 3)<br>
[2017/02/11 18:33:45:7072] DEBUG: lws_free_wsi: 0145B8C8, remaining wsi 10<br>
[2017/02/11 18:33:46:7023] DEBUG: lws_uv_timeout_cb<br>
[2017/02/11 18:33:47:7024] DEBUG: lws_uv_timeout_cb<br>
[2017/02/11 18:33:48:7034] DEBUG: lws_uv_timeout_cb<br>
<br>
<br></div></div><span>
On Sat, Feb 11, 2017 at 5:14 PM, Andy Green <<a href="mailto:andy@warmcat.com" target="_blank">andy@warmcat.com</a> <mailto:<a href="mailto:andy@warmcat.com" target="_blank">andy@warmcat.com</a>>> wrote:<br>
<br>
<br>
<br>
    On 12 February 2017 07:21:55 GMT+08:00, Joel Winarske<br></span><div><div class="m_8050799201814396842h5">
    <<a href="mailto:joel.winarske@gmail.com" target="_blank">joel.winarske@gmail.com</a> <mailto:<a href="mailto:joel.winarske@gmail.com" target="_blank">joel.winarske@gmail.co<wbr>m</a>>> wrote:<br>
    >Hi Andy,<br>
    ><br>
    >I want to client connect to https site from within<br>
    >LWS_CALLBACK_HTTP_BODY_COMPLE<wbr>TION, in a running instance of lwsws.<br>
    >lwsws<br>
    >is running in non-SSL<br>
    ><br>
    >Due to SSL, I was figuring lws_client_connect_via_info(), similar to<br>
<br>
    Yes this is the way.<br>
<br>
    >test-client.c.  I'm not clear where context and wsi should come<br>
    from in<br>
    >the<br>
    >case of running within lwsws.<br>
<br>
    All wsi are under the same context, and a context may mix client<br>
    and server wsi ok.<br>
<br>
    So you can get the context from the callback wsi with<br>
    lws_get_context(wsi).<br>
<br>
    When you call lws_client_connect_via_info(), he will try to start<br>
    the logical client connection process and return either a new wsi<br>
    representing the client connection if it got started, or NULL if<br>
    it failed.  However because the connection attempt may generate<br>
    callbacks before lws_client_connect_via_info() returned and told<br>
    you the new wsi, the info struct also contains a *pwsi member that<br>
    lws_client_connect_via_info() sets to the new wsi before it returns.<br>
<br>
    In that way you can recognize in the callback who the wsi is, even<br>
    during these early callbackS.  That's particularly useful if the<br>
    connection fails, since you get a callback with a descriptive<br>
    reason string, beimg able to know that's your wsi failed lets you<br>
    respond to it.<br>
<br>
    >I figure it would get serviced by the server loop, so no need to<br>
    >call lws_service().  Correct?<br>
<br>
    Yeah no need for that, lwsws context is using libuv event loop,<br>
    when you make the client connection it joins in with that.<br>
<br>
    Notice in lwsws you must mark a vhost as wanting to / being able<br>
    to make ssl client connections<br>
<br>
     - "enable-client-ssl": "1" enables the vhost's client SSL<br>
    context, you will need this if you plan to create client<br>
    conections on the vhost that will use SSL. You don't need it if<br>
    you only want http / ws client connections.<br>
<br>
    This causes the vhost to additionally init client ssl context.<br>
<br>
    -Andy<br>
<br>
    >Thanks,<br>
    >Joel<br>
<br>
    --<br>
    Sent from my Android device with K-9 Mail. Please excuse my brevity.<br>
<br>
<br>
</div></div></blockquote>
<br>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div>