client ext hdr skip if no arg
authorAndy Green <andy.green@linaro.org>
Wed, 9 Mar 2016 15:13:31 +0000 (23:13 +0800)
committerAndy Green <andy.green@linaro.org>
Wed, 9 Mar 2016 15:13:31 +0000 (23:13 +0800)
https://github.com/warmcat/libwebsockets/issues/453#event-583227314

abnf does say has to be at least one arg

Signed-off-by: Andy Green <andy.green@linaro.org>
changelog
lib/client.c

index c226613..f860857 100644 (file)
--- 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
 -------
index bb84d17..fdf1eff 100644 (file)
@@ -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",