mirror of
https://github.com/warmcat/libwebsockets.git
synced 2025-03-09 00:00:04 +01:00
client fix for operation with libuv
- libuv socket init binding was missing for client - failures like no ws protocol match are deferred until the ah is bound. Check for these failures and make sure we tell the guy trying to set up the client connection the wsi is NULL if it has already failed and closed. - pfd.events was not initialized for the client init path With this general client function is more robust but also client connections work properly with libuv. Signed-off-by: Andy Green <andy@warmcat.com>
This commit is contained in:
parent
11d8efef88
commit
584f7109a0
1 changed files with 8 additions and 3 deletions
|
@ -163,6 +163,7 @@ lws_client_connect_2(struct lws *wsi)
|
|||
wsi->mode = LWSCM_WSCL_WAITING_CONNECT;
|
||||
|
||||
lws_libev_accept(wsi, wsi->sock);
|
||||
lws_libuv_accept(wsi, wsi->sock);
|
||||
if (insert_wsi_socket_into_fds(context, wsi)) {
|
||||
compatible_close(wsi->sock);
|
||||
goto oom4;
|
||||
|
@ -271,6 +272,7 @@ lws_client_connect_2(struct lws *wsi)
|
|||
|
||||
wsi->mode = LWSCM_WSCL_ISSUE_HANDSHAKE;
|
||||
pfd.fd = wsi->sock;
|
||||
pfd.events = LWS_POLLIN;
|
||||
pfd.revents = LWS_POLLIN;
|
||||
|
||||
n = lws_service_fd(context, &pfd);
|
||||
|
@ -475,6 +477,9 @@ lws_client_connect_via_info(struct lws_client_connect_info *i)
|
|||
struct lws *wsi;
|
||||
int v = SPEC_LATEST_SUPPORTED;
|
||||
|
||||
if (i->context->requested_kill)
|
||||
return NULL;
|
||||
|
||||
wsi = lws_zalloc(sizeof(struct lws));
|
||||
if (wsi == NULL)
|
||||
goto bail;
|
||||
|
@ -566,10 +571,10 @@ lws_client_connect_via_info(struct lws_client_connect_info *i)
|
|||
|
||||
/* if we went on the waiting list, no probs just return the wsi
|
||||
* when we get the ah, now or later, he will call
|
||||
* lws_client_connect_via_info2() below
|
||||
* lws_client_connect_via_info2() below.
|
||||
*/
|
||||
if (lws_header_table_attach(wsi, 0))
|
||||
lwsl_debug("%s: went on ah wait list\n", __func__);
|
||||
if (lws_header_table_attach(wsi, 0) < 0)
|
||||
return NULL;
|
||||
|
||||
if (i->parent_wsi) {
|
||||
lwsl_info("%s: created child %p of parent %p\n", __func__,
|
||||
|
|
Loading…
Add table
Reference in a new issue