From 4f5ebec3efa46f31af2d44e74c11c9dac29f8617 Mon Sep 17 00:00:00 2001 From: Andy Green Date: Wed, 9 Mar 2016 23:13:31 +0800 Subject: [PATCH] client ext hdr skip if no arg https://github.com/warmcat/libwebsockets/issues/453#event-583227314 abnf does say has to be at least one arg Signed-off-by: Andy Green --- changelog | 1 + lib/client.c | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/changelog b/changelog index c226613..f860857 100644 --- a/changelog +++ b/changelog @@ -38,6 +38,7 @@ using up the pool. 8) MAJOR windows-only-POLLHUP was not coming +9) Client should not send ext hdr if no exts Changes ------- diff --git a/lib/client.c b/lib/client.c index bb84d17..fdf1eff 100644 --- a/lib/client.c +++ b/lib/client.c @@ -1081,7 +1081,6 @@ lws_generate_client_handshake(struct lws *wsi, char *pkt) /* tell the server what extensions we could support */ - p += sprintf(p, "Sec-WebSocket-Extensions: "); #ifndef LWS_NO_EXTENSIONS ext = context->extensions; while (ext && ext->callback) { @@ -1113,13 +1112,16 @@ lws_generate_client_handshake(struct lws *wsi, char *pkt) if (ext_count) *p++ = ','; + else + p += sprintf(p, "Sec-WebSocket-Extensions: "); p += sprintf(p, "%s", ext->client_offer); ext_count++; ext++; } + if (ext_count) + p += sprintf(p, "\x0d\x0a"); #endif - p += sprintf(p, "\x0d\x0a"); if (wsi->ietf_spec_revision) p += sprintf(p, "Sec-WebSocket-Version: %d\x0d\x0a", -- 2.7.4