From: David Brooks Date: Fri, 20 Apr 2012 04:16:52 +0000 (+0800) Subject: set connection callback before connection completed to allow early messages X-Git-Tag: 1.2~19 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=993343b5e426000ef8e0a196730c3fd3ae4bbe89;p=profile%2Fivi%2Flibwebsockets.git set connection callback before connection completed to allow early messages Signed-off-by: David Brooks Signed-off-by: Andy Green -- lib/client-handshake.c | 19 +++++++++++++++++++ 1 files changed, 19 insertions(+), 0 deletions(-) --- diff --git a/lib/client-handshake.c b/lib/client-handshake.c index 76c297d..84b744f 100644 --- a/lib/client-handshake.c +++ b/lib/client-handshake.c @@ -241,14 +241,33 @@ libwebsocket_client_connect(struct libwebsocket_context *context, } else wsi->c_origin = NULL; + wsi->c_callback = NULL; if (protocol) { + const char *pc; + struct libwebsocket_protocols *pp; + wsi->c_protocol = malloc(strlen(protocol) + 1); if (wsi->c_protocol == NULL) goto oom3; + strcpy(wsi->c_protocol, protocol); + + pc = protocol; + while (*pc && *pc != ',') + pc++; + n = pc - protocol; + pp = context->protocols; + while (pp->name && !wsi->c_callback) { + if (!strncmp(protocol, pp->name, n)) + wsi->c_callback = pp->callback; + pp++; + } } else wsi->c_protocol = NULL; + if (!wsi->c_callback) + wsi->c_callback = context->protocols[0].callback; + /* set up appropriate masking */ wsi->xor_mask = xor_no_mask;