<div dir="ltr">I'm not sure.  Here's my log:<div><br></div><div><div>lwsws[11963]: http: LWS_CALLBACK_HTTP: REST</div><div>lwsws[11963]: http: LWS_CALLBACK_HTTP_BODY: REST</div><div>lwsws[11963]: http: (0x198ec80) LWS_CALLBACK_HTTP_BODY_COMPLETION</div><div>lwsws[11963]: http: LWS_CALLBACK_HTTP_BODY_COMPLETION: REST</div><div>lwsws[11963]: Send Request:</div><div>lwsws[11963]: <span class="gmail-Apple-tab-span" style="white-space:pre">    </span>url: <a href="http://www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png">http://www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png</a></div><div>lwsws[11963]: <span class="gmail-Apple-tab-span" style="white-space:pre">     </span>method: HEAD</div><div>lwsws[11963]: using http mode (non-ws)</div><div>lwsws[11963]: HEAD mode</div><div>lwsws[11963]: http client: connecting</div><div>lwsws[11963]: lws_client_connect_2: 0x19a7f60: address <a href="http://www.google.com">www.google.com</a></div><div>lwsws[11963]: http: 29: (0x19a7f60) v=0x18c4810, ctx=0x186cc00</div><div>lwsws[11963]: lws_client_connect_via_info sucessful</div><div>lwsws[11963]: Exit - handle_rest_send()</div><div>lwsws[11963]: lws_client_connect_2: 0x19a7f60: address <a href="http://www.google.com">www.google.com</a></div><div>lwsws[11963]: http: (0x19a7f60) LWS_CALLBACK_CLIENT_APPEND_HANDSHAKE_HEADER, uri=(nil), spa=0x1918170</div><div>lwsws[11963]: lws_client_interpret_server_handshake: incoming content length 3170</div><div>lwsws[11963]: http: (0x19a7f60) LWS_CALLBACK_CLIENT_FILTER_PRE_ESTABLISH: v=0x18c4810, ctx=0x186cc00</div><div>    http/1.1  200 OK</div><div>    cache-control: private, max-age=31536000</div><div>    content-length: 3170</div><div>    content-type: image/png</div><div>    date: Thu, 30 Mar 2017 00:11:54 GMT</div><div>    accept-ranges: bytes</div><div>    expires: Thu, 30 Mar 2017 00:11:54 GMT</div><div>    last-modified: Thu, 08 Dec 2016 01:00:57 GMT</div><div>    server: sffe</div><div>lwsws[11963]: http: (0x19a7f60) LWS_CALLBACK_ESTABLISHED_CLIENT_HTTP: 200</div><div>lwsws[11963]: **** 0x198ec80 queued header for writing, buff=0x199b6a0 len=301 [1]</div><div>lwsws[11963]: **** CLIENT RELAY SET</div><div>    write_list_append - ((nil)) id=1, len=301, sum=0, header=1, buff=0x199b6a0, chunk_end=0, next=(nil)</div><div>    client_content_length=0</div><div>lwsws[11963]: lws_client_interpret_server_handshake: client connection up</div><div>lwsws[11963]: http: (0x198ec80) LWS_CALLBACK_HTTP_WRITEABLE: v=0x18c4810, ctx=0x186cc00, list_head=0x19611c0, next=(nil)</div><div>lwsws[11963]: [1] wrote 301 bytes (0x198ec80) 8</div><div>    client_content_length=0</div><div>lwsws[11963]: **** CLIENT RELAY CLEARED</div><div>lwsws[11963]: http: (0x198ec80) http_transaction_completed</div><div>lwsws[11963]: 172.16.19.75 - - [29/Mar/2017:17:11:54 -0700] "POST /rest/send http/1.1" 200 301 Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/55.0.2883.87 Chrome/55.0.2883.87 Safari/537.36</div><div>lwsws[11963]: http: (0x198ec80) LWS_CALLBACK_HTTP_DROP_PROTOCOL: v=0x18c4810, ctx=0x186cc00</div><div>lwsws[11963]: http: 49: (0x198ec80) v=0x18c4810, ctx=0x186cc00</div><div>lwsws[11963]: http: 51: (0x198ec80) v=0x18c4810, ctx=0x186cc00</div><div>lwsws[11963]: http: LWS_CALLBACK_HTTP: REST</div><div>lwsws[11963]: http: LWS_CALLBACK_HTTP_BODY: REST</div><div>lwsws[11963]: http: (0x198ec80) LWS_CALLBACK_HTTP_BODY_COMPLETION</div><div>lwsws[11963]: http: LWS_CALLBACK_HTTP_BODY_COMPLETION: REST</div><div>lwsws[11963]: Send Request:</div><div>lwsws[11963]: <span class="gmail-Apple-tab-span" style="white-space:pre">   </span>url: <a href="https://uas-api.inrix.com/.">https://uas-api.inrix.com/.</a>..</div><div>lwsws[11963]: <span class="gmail-Apple-tab-span" style="white-space:pre">       </span>method: POST</div><div>lwsws[11963]: <span class="gmail-Apple-tab-span" style="white-space:pre">     </span>mimetype: application/json</div><div>lwsws[11963]: <span class="gmail-Apple-tab-span" style="white-space:pre">       </span>payload: ...</div><div>lwsws[11963]:  Using SSL</div><div>lwsws[11963]:  Selfsigned certs allowed</div><div>lwsws[11963]:  Skipping peer cert hostname check</div><div>lwsws[11963]: using https mode (non-ws)</div><div>lwsws[11963]: POST mode</div><div>lwsws[11963]: http client: connecting</div><div>lwsws[11963]: lws_client_connect_2: 0x19915d0: address <a href="http://uas-api.inrix.com">uas-api.inrix.com</a></div><div>lwsws[11963]: http: 29: (0x19915d0) v=0x18c4810, ctx=0x186cc00</div><div>lwsws[11963]: lws_client_connect_via_info sucessful</div><div>lwsws[11963]: Exit - handle_rest_send()</div><div>lwsws[11963]: lws_client_connect_2: 0x19915d0: address <a href="http://uas-api.inrix.com">uas-api.inrix.com</a></div><div>lwsws[11963]: lws_ssl_client_connect2: SSL_connect says -1</div><div>lwsws[11963]: lws_ssl_client_connect2: SSL_connect says -1</div><div>lwsws[11963]: lws_ssl_client_connect2: SSL_connect says 1</div><div>lwsws[11963]: get_verify says 0</div><div>lwsws[11963]: http: (0x19915d0) LWS_CALLBACK_CLIENT_APPEND_HANDSHAKE_HEADER, uri=(nil), spa=0x1951d90</div><div>lwsws[11963]: http: (0x19915d0) LWS_CALLBACK_CLIENT_HTTP_WRITEABLE</div><div>lwsws[11963]: lws_spa_destroy: destroy spa 0x1951d90</div><div>lwsws[11963]: lws_client_interpret_server_handshake: incoming content length 1244</div><div>lwsws[11963]: http: (0x19915d0) LWS_CALLBACK_CLIENT_FILTER_PRE_ESTABLISH: v=0x18c4810, ctx=0x186cc00</div><div>    connection: keep-alive</div><div>    http/1.1  200 OK</div><div>    pragma: no-cache</div><div>    cache-control: no-cache</div><div>    content-length: 1244</div><div>    content-type: application/json; charset=utf-8</div><div>    date: Thu, 30 Mar 2017 00:11:40 GMT</div><div>    expires: -1</div><div>    server: Microsoft-IIS/8.5</div><div>lwsws[11963]: http: (0x19915d0) LWS_CALLBACK_ESTABLISHED_CLIENT_HTTP: 200</div><div>lwsws[11963]: **** 0x198ec80 queued header for writing, buff=0x199b6a0 len=234 [1]</div><div>lwsws[11963]: **** CLIENT RELAY SET</div><div>    write_list_append - ((nil)) id=1, len=234, sum=0, header=1, buff=0x199b6a0, chunk_end=0, next=(nil)</div><div>    client_content_length=1244</div><div>lwsws[11963]: lws_client_interpret_server_handshake: client connection up</div><div>lwsws[11963]: **** 0x198ec80 queued buffer for writing, buff=0x199beb0, sum=1244, total=1244 [2]</div><div>    write_list_append - ((nil)) id=1, len=234, sum=0, header=1, buff=0x199b6a0, chunk_end=0, next=0x19b6540</div><div>    write_list_append - ((nil)) id=2, len=1244, sum=1244, header=0, buff=0x199beb0, chunk_end=0, next=(nil)</div><div>    client_content_length=1244</div><div>lwsws[11963]: http: (0x19915d0) LWS_CALLBACK_COMPLETED_CLIENT_HTTP</div><div>lwsws[11963]: http: (0x19915d0) http_transaction_completed</div><div>lwsws[11963]: http: (0x19915d0) LWS_CALLBACK_HTTP_DROP_PROTOCOL: v=0x18c4810, ctx=0x186cc00</div><div>lwsws[11963]: lws_http_client_read: transaction completed says -1</div><div>lwsws[11963]: LWS_CALLBACK_RECEIVE_CLIENT_HTTP closed it</div><div>lwsws[11963]: lws_remove_child_from_any_parent: failed to detach from parent</div><div>lwsws[11963]: http: (0x198ec80) LWS_CALLBACK_HTTP_WRITEABLE: v=0x18c4810, ctx=0x186cc00, list_head=0x195b490, next=0x19b6540</div><div>lwsws[11963]: [1] wrote 234 bytes (0x198ec80) 8</div><div>    post write - ((nil)) id=2, len=1244, sum=1244, header=0, buff=0x199beb0, chunk_end=0, next=(nil)</div><div>    client_content_length=1244</div><div>lwsws[11963]: http: (0x198ec80) LWS_CALLBACK_HTTP_WRITEABLE: v=0x18c4810, ctx=0x186cc00, list_head=0x19b6540, next=(nil)</div><div>lwsws[11963]: [2] wrote 1244 bytes (0x198ec80) 3</div><div>    client_content_length=0</div><div>lwsws[11963]: **** CLIENT RELAY CLEARED</div></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Mar 29, 2017 at 4:59 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 class=""><br>
<br>
On 03/30/2017 07:53 AM, Joel Winarske wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi Andy I'm seeing something odd with connections.<br>
<br>
In my http client setup code I have:<br>
<br>
if (lws_get_child(wsi))<br>
return 1;<br>
<br>
My first incoming client POST works, the second fails as lws_get_child() returns non-zero.<br>
<br>
What will cause lws_get_child() to return non-zero, and how do I avoid it?<br>
</blockquote>
<br></span>
Is the original child wsi actually getting deleted after the end of the first POST?<br>
<br>
If it is, notice that not only should the parent point to the child, but child wsi must point to their parent (in child_wsi->parent). That will trigger removal from the parent when the child closes (in lws_remove_child_from_any_pare<wbr>nt())<br>
<br>
lws_adopt_descriptor_vhost(...<wbr>, parent) takes care about that though...<br>
<br>
-Andy<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
<br>
If I ignore this call, it will carry on, http client connects, data is exchanged, then it get:<br>
<br>
    lwsws[11963]: LWS_CALLBACK_RECEIVE_CLIENT_HT<wbr>TP closed it<br>
    lwsws[11963]: lws_remove_child_from_any_pare<wbr>nt: failed to detach from parent<br>
<br>
<br>
Joel<br>
<br>
<br></span>
______________________________<wbr>_________________<br>
Libwebsockets mailing list<br>
<a href="mailto:Libwebsockets@ml.libwebsockets.org" target="_blank">Libwebsockets@ml.libwebsockets<wbr>.org</a><br>
<a href="https://libwebsockets.org/mailman/listinfo/libwebsockets" rel="noreferrer" target="_blank">https://libwebsockets.org/mail<wbr>man/listinfo/libwebsockets</a><br>
</blockquote>
<br>
</blockquote></div><br></div>