diff --git a/CMakeLists.txt b/CMakeLists.txt index a76c57768..ab7bde0c6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -172,6 +172,7 @@ option(LWS_WITH_UDP "Platform supports UDP" ON) option(LWS_WITH_SPAWN "Spawn subprocesses with piped stdin/out/stderr" OFF) option(LWS_WITH_FSMOUNT "Overlayfs and fallback mounting apis" OFF) option(LWS_WITH_FANALYZER "Enable gcc -fanalyzer if compiler supports" OFF) +option(LWS_HTTP_HEADERS_ALL "Override header reduction optimization and include all like older lws versions" OFF) # # to use miniz, enable both LWS_WITH_ZLIB and LWS_WITH_MINIZ diff --git a/cmake/lws_config.h.in b/cmake/lws_config.h.in index 5d2ac1290..2b50635a4 100644 --- a/cmake/lws_config.h.in +++ b/cmake/lws_config.h.in @@ -132,6 +132,7 @@ #cmakedefine LWS_WITH_HTTP2 #cmakedefine LWS_WITH_HTTP_BASIC_AUTH #cmakedefine LWS_WITH_HTTP_BROTLI +#cmakedefine LWS_HTTP_HEADERS_ALL #cmakedefine LWS_WITH_HTTP_PROXY #cmakedefine LWS_WITH_HTTP_STREAM_COMPRESSION #cmakedefine LWS_WITH_HTTP_UNCOMMON_HEADERS diff --git a/include/libwebsockets/lws-http.h b/include/libwebsockets/lws-http.h index d0daeda9e..d5851101a 100644 --- a/include/libwebsockets/lws-http.h +++ b/include/libwebsockets/lws-http.h @@ -215,18 +215,18 @@ struct lws_tokens { enum lws_token_indexes { WSI_TOKEN_GET_URI, /* 0 */ WSI_TOKEN_POST_URI, -#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) +#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) || defined(LWS_HTTP_HEADERS_ALL) WSI_TOKEN_OPTIONS_URI, #endif WSI_TOKEN_HOST, WSI_TOKEN_CONNECTION, WSI_TOKEN_UPGRADE, /* 5 */ WSI_TOKEN_ORIGIN, -#if defined(LWS_ROLE_WS) +#if defined(LWS_ROLE_WS) || defined(LWS_HTTP_HEADERS_ALL) WSI_TOKEN_DRAFT, #endif WSI_TOKEN_CHALLENGE, -#if defined(LWS_ROLE_WS) +#if defined(LWS_ROLE_WS) || defined(LWS_HTTP_HEADERS_ALL) WSI_TOKEN_EXTENSIONS, WSI_TOKEN_KEY1, /* 10 */ WSI_TOKEN_KEY2, @@ -235,11 +235,11 @@ enum lws_token_indexes { WSI_TOKEN_NONCE, #endif WSI_TOKEN_HTTP, -#if defined(LWS_ROLE_H2) +#if defined(LWS_ROLE_H2) || defined(LWS_HTTP_HEADERS_ALL) WSI_TOKEN_HTTP2_SETTINGS, /* 16 */ #endif WSI_TOKEN_HTTP_ACCEPT, -#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) +#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) || defined(LWS_HTTP_HEADERS_ALL) WSI_TOKEN_HTTP_AC_REQUEST_HEADERS, #endif WSI_TOKEN_HTTP_IF_MODIFIED_SINCE, @@ -254,15 +254,15 @@ enum lws_token_indexes { WSI_TOKEN_HTTP_CONTENT_TYPE, WSI_TOKEN_HTTP_DATE, WSI_TOKEN_HTTP_RANGE, -#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) || defined(LWS_ROLE_H2) +#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) || defined(LWS_ROLE_H2) || defined(LWS_HTTP_HEADERS_ALL) WSI_TOKEN_HTTP_REFERER, #endif -#if defined(LWS_ROLE_WS) +#if defined(LWS_ROLE_WS) || defined(LWS_HTTP_HEADERS_ALL) WSI_TOKEN_KEY, WSI_TOKEN_VERSION, WSI_TOKEN_SWORIGIN, #endif -#if defined(LWS_ROLE_H2) +#if defined(LWS_ROLE_H2) || defined(LWS_HTTP_HEADERS_ALL) WSI_TOKEN_HTTP_COLON_AUTHORITY, WSI_TOKEN_HTTP_COLON_METHOD, WSI_TOKEN_HTTP_COLON_PATH, @@ -270,11 +270,11 @@ enum lws_token_indexes { WSI_TOKEN_HTTP_COLON_STATUS, #endif -#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) || defined(LWS_ROLE_H2) +#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) || defined(LWS_ROLE_H2) || defined(LWS_HTTP_HEADERS_ALL) WSI_TOKEN_HTTP_ACCEPT_CHARSET, #endif WSI_TOKEN_HTTP_ACCEPT_RANGES, -#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) || defined(LWS_ROLE_H2) +#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) || defined(LWS_ROLE_H2) || defined(LWS_HTTP_HEADERS_ALL) WSI_TOKEN_HTTP_ACCESS_CONTROL_ALLOW_ORIGIN, #endif WSI_TOKEN_HTTP_AGE, @@ -294,7 +294,7 @@ enum lws_token_indexes { WSI_TOKEN_HTTP_LAST_MODIFIED, WSI_TOKEN_HTTP_LINK, WSI_TOKEN_HTTP_LOCATION, -#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) || defined(LWS_ROLE_H2) +#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) || defined(LWS_ROLE_H2) || defined(LWS_HTTP_HEADERS_ALL) WSI_TOKEN_HTTP_MAX_FORWARDS, WSI_TOKEN_HTTP_PROXY_AUTHENTICATE, WSI_TOKEN_HTTP_PROXY_AUTHORIZATION, @@ -303,24 +303,24 @@ enum lws_token_indexes { WSI_TOKEN_HTTP_RETRY_AFTER, WSI_TOKEN_HTTP_SERVER, WSI_TOKEN_HTTP_SET_COOKIE, -#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) || defined(LWS_ROLE_H2) +#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) || defined(LWS_ROLE_H2) || defined(LWS_HTTP_HEADERS_ALL) WSI_TOKEN_HTTP_STRICT_TRANSPORT_SECURITY, #endif WSI_TOKEN_HTTP_TRANSFER_ENCODING, -#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) || defined(LWS_ROLE_H2) +#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) || defined(LWS_ROLE_H2) || defined(LWS_HTTP_HEADERS_ALL) WSI_TOKEN_HTTP_USER_AGENT, WSI_TOKEN_HTTP_VARY, WSI_TOKEN_HTTP_VIA, WSI_TOKEN_HTTP_WWW_AUTHENTICATE, #endif -#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) +#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) || defined(LWS_HTTP_HEADERS_ALL) WSI_TOKEN_PATCH_URI, WSI_TOKEN_PUT_URI, WSI_TOKEN_DELETE_URI, #endif WSI_TOKEN_HTTP_URI_ARGS, -#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) +#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) || defined(LWS_HTTP_HEADERS_ALL) WSI_TOKEN_PROXY, WSI_TOKEN_HTTP_X_REAL_IP, #endif @@ -328,11 +328,11 @@ enum lws_token_indexes { WSI_TOKEN_X_FORWARDED_FOR, WSI_TOKEN_CONNECT, WSI_TOKEN_HEAD_URI, -#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) || defined(LWS_ROLE_H2) +#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) || defined(LWS_ROLE_H2) || defined(LWS_HTTP_HEADERS_ALL) WSI_TOKEN_TE, WSI_TOKEN_REPLAY_NONCE, /* ACME */ #endif -#if defined(LWS_ROLE_H2) +#if defined(LWS_ROLE_H2) || defined(LWS_HTTP_HEADERS_ALL) WSI_TOKEN_COLON_PROTOCOL, #endif WSI_TOKEN_X_AUTH_TOKEN, @@ -356,7 +356,7 @@ enum lws_token_indexes { /* parser state additions, no storage associated */ WSI_TOKEN_NAME_PART, -#if defined(LWS_WITH_CUSTOM_HEADERS) +#if defined(LWS_WITH_CUSTOM_HEADERS) || defined(LWS_HTTP_HEADERS_ALL) WSI_TOKEN_UNKNOWN_VALUE_PART, #endif WSI_TOKEN_SKIPPING, diff --git a/lib/roles/h2/hpack.c b/lib/roles/h2/hpack.c index 2b9df394f..153e8d285 100644 --- a/lib/roles/h2/hpack.c +++ b/lib/roles/h2/hpack.c @@ -754,42 +754,42 @@ lws_hpack_use_idx_hdr(struct lws *wsi, int idx, int known_token) return 0; } -#if !defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && !defined(LWS_ROLE_WS) && !defined(LWS_ROLE_H2) +#if !defined(LWS_HTTP_HEADERS_ALL) && !defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && !defined(LWS_ROLE_WS) && !defined(LWS_ROLE_H2) static uint8_t lws_header_implies_psuedoheader_map[] = { 0x03,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, }; #endif -#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && !defined(LWS_ROLE_WS) && !defined(LWS_ROLE_H2) +#if !defined(LWS_HTTP_HEADERS_ALL) && defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && !defined(LWS_ROLE_WS) && !defined(LWS_ROLE_H2) static uint8_t lws_header_implies_psuedoheader_map[] = { 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00, }; #endif -#if !defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && defined(LWS_ROLE_WS) && !defined(LWS_ROLE_H2) +#if !defined(LWS_HTTP_HEADERS_ALL) && !defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && defined(LWS_ROLE_WS) && !defined(LWS_ROLE_H2) static uint8_t lws_header_implies_psuedoheader_map[] = { 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, }; #endif -#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && defined(LWS_ROLE_WS) && !defined(LWS_ROLE_H2) +#if !defined(LWS_HTTP_HEADERS_ALL) && defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && defined(LWS_ROLE_WS) && !defined(LWS_ROLE_H2) static uint8_t lws_header_implies_psuedoheader_map[] = { 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x10,0x00,0x00,0x00,0x00,0x00,0x00, }; #endif -#if !defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && !defined(LWS_ROLE_WS) && defined(LWS_ROLE_H2) +#if !defined(LWS_HTTP_HEADERS_ALL) && !defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && !defined(LWS_ROLE_WS) && defined(LWS_ROLE_H2) static uint8_t lws_header_implies_psuedoheader_map[] = { 0x03,0x00,0x80,0x0f,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, }; #endif -#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && !defined(LWS_ROLE_WS) && defined(LWS_ROLE_H2) +#if !defined(LWS_HTTP_HEADERS_ALL) && defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && !defined(LWS_ROLE_WS) && defined(LWS_ROLE_H2) static uint8_t lws_header_implies_psuedoheader_map[] = { 0x07,0x00,0x00,0x3e,0x00,0x00,0x00,0x80,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00, }; #endif -#if !defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && defined(LWS_ROLE_WS) && defined(LWS_ROLE_H2) +#if !defined(LWS_HTTP_HEADERS_ALL) && !defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && defined(LWS_ROLE_WS) && defined(LWS_ROLE_H2) static uint8_t lws_header_implies_psuedoheader_map[] = { 0x03,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00, }; #endif -#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && defined(LWS_ROLE_WS) && defined(LWS_ROLE_H2) +#if defined(LWS_HTTP_HEADERS_ALL) || (defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && defined(LWS_ROLE_WS) && defined(LWS_ROLE_H2)) static uint8_t lws_header_implies_psuedoheader_map[] = { 0x07,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x0e,0x04,0x00,0x00,0x00,0x00,0x00, }; diff --git a/lib/roles/http/lextable-strings.h b/lib/roles/http/lextable-strings.h index e0558ce35..fd3bbaea5 100644 --- a/lib/roles/http/lextable-strings.h +++ b/lib/roles/http/lextable-strings.h @@ -3,19 +3,19 @@ static const char * const set[] = { "get ", "post ", -#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) +#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) || defined(LWS_HTTP_HEADERS_ALL) "options ", #endif "host:", "connection:", "upgrade:", "origin:", -#if defined(LWS_ROLE_WS) +#if defined(LWS_ROLE_WS) || defined(LWS_HTTP_HEADERS_ALL) "sec-websocket-draft:", #endif "\x0d\x0a", -#if defined(LWS_ROLE_WS) +#if defined(LWS_ROLE_WS) || defined(LWS_HTTP_HEADERS_ALL) "sec-websocket-extensions:", "sec-websocket-key1:", "sec-websocket-key2:", @@ -25,12 +25,12 @@ static const char * const set[] = { "sec-websocket-nonce:", #endif "http/1.1 ", -#if defined(LWS_ROLE_H2) +#if defined(LWS_ROLE_H2) || defined(LWS_HTTP_HEADERS_ALL) "http2-settings:", #endif "accept:", -#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) +#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) || defined(LWS_HTTP_HEADERS_ALL) "access-control-request-headers:", #endif "if-modified-since:", @@ -45,26 +45,26 @@ static const char * const set[] = { "content-type:", "date:", "range:", -#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) || defined(LWS_ROLE_H2) +#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) || defined(LWS_ROLE_H2) || defined(LWS_HTTP_HEADERS_ALL) "referer:", #endif -#if defined(LWS_ROLE_WS) +#if defined(LWS_ROLE_WS) || defined(LWS_HTTP_HEADERS_ALL) "sec-websocket-key:", "sec-websocket-version:", "sec-websocket-origin:", #endif -#if defined(LWS_ROLE_H2) +#if defined(LWS_ROLE_H2) || defined(LWS_HTTP_HEADERS_ALL) ":authority", ":method", ":path", ":scheme", ":status", #endif -#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) || defined(LWS_ROLE_H2) +#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) || defined(LWS_ROLE_H2) || defined(LWS_HTTP_HEADERS_ALL) "accept-charset:", #endif "accept-ranges:", -#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) || defined(LWS_ROLE_H2) +#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) || defined(LWS_ROLE_H2) || defined(LWS_HTTP_HEADERS_ALL) "access-control-allow-origin:", #endif "age:", @@ -84,7 +84,7 @@ static const char * const set[] = { "last-modified:", "link:", "location:", -#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) || defined(LWS_ROLE_H2) +#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) || defined(LWS_ROLE_H2) || defined(LWS_HTTP_HEADERS_ALL) "max-forwards:", "proxy-authenticate:", "proxy-authorization:", @@ -93,17 +93,17 @@ static const char * const set[] = { "retry-after:", "server:", "set-cookie:", -#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) || defined(LWS_ROLE_H2) +#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) || defined(LWS_ROLE_H2) || defined(LWS_HTTP_HEADERS_ALL) "strict-transport-security:", #endif "transfer-encoding:", -#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) || defined(LWS_ROLE_H2) +#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) || defined(LWS_ROLE_H2) || defined(LWS_HTTP_HEADERS_ALL) "user-agent:", "vary:", "via:", "www-authenticate:", #endif -#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) +#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) || defined(LWS_HTTP_HEADERS_ALL) "patch", "put", "delete", @@ -111,7 +111,7 @@ static const char * const set[] = { "uri-args", /* fake header used for uri-only storage */ -#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) +#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) || defined(LWS_HTTP_HEADERS_ALL) "proxy ", "x-real-ip:", #endif @@ -120,11 +120,11 @@ static const char * const set[] = { "x-forwarded-for:", "connect ", "head ", -#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) || defined(LWS_ROLE_H2) +#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) || defined(LWS_ROLE_H2) || defined(LWS_HTTP_HEADERS_ALL) "te:", /* http/2 wants it to reject it */ "replay-nonce:", /* ACME */ #endif -#if defined(LWS_ROLE_H2) +#if defined(LWS_ROLE_H2) || defined(LWS_HTTP_HEADERS_ALL) ":protocol", /* defined in mcmanus-httpbis-h2-ws-02 */ #endif diff --git a/lib/roles/http/lextable.h b/lib/roles/http/lextable.h index bf9273731..7e4a3fc3a 100644 --- a/lib/roles/http/lextable.h +++ b/lib/roles/http/lextable.h @@ -1,4 +1,4 @@ -#if !defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && !defined(LWS_ROLE_WS) && !defined(LWS_ROLE_H2) +#if !defined(LWS_HTTP_HEADERS_ALL) && !defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && !defined(LWS_ROLE_WS) && !defined(LWS_ROLE_H2) /* 0: 0: get */ /* 1: 1: post */ /* 2: 3: host: */ @@ -522,7 +522,7 @@ /* total size 662 bytes */ #endif -#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && !defined(LWS_ROLE_WS) && !defined(LWS_ROLE_H2) +#if !defined(LWS_HTTP_HEADERS_ALL) && defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && !defined(LWS_ROLE_WS) && !defined(LWS_ROLE_H2) /* 0: 0: get */ /* 1: 1: post */ /* 2: 2: options */ @@ -1290,7 +1290,7 @@ /* total size 968 bytes */ #endif -#if !defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && defined(LWS_ROLE_WS) && !defined(LWS_ROLE_H2) +#if !defined(LWS_HTTP_HEADERS_ALL) && !defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && defined(LWS_ROLE_WS) && !defined(LWS_ROLE_H2) /* 0: 0: get */ /* 1: 1: post */ /* 2: 3: host: */ @@ -2134,7 +2134,7 @@ /* total size 1088 bytes */ #endif -#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && defined(LWS_ROLE_WS) && !defined(LWS_ROLE_H2) +#if !defined(LWS_HTTP_HEADERS_ALL) && defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && defined(LWS_ROLE_WS) && !defined(LWS_ROLE_H2) /* 0: 0: get */ /* 1: 1: post */ /* 2: 2: options */ @@ -2998,7 +2998,7 @@ /* total size 1088 bytes */ #endif -#if !defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && !defined(LWS_ROLE_WS) && defined(LWS_ROLE_H2) +#if !defined(LWS_HTTP_HEADERS_ALL) && !defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && !defined(LWS_ROLE_WS) && defined(LWS_ROLE_H2) /* 0: 0: get */ /* 1: 1: post */ /* 2: 3: host: */ @@ -3912,7 +3912,7 @@ /* total size 1177 bytes */ #endif -#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && !defined(LWS_ROLE_WS) && defined(LWS_ROLE_H2) +#if !defined(LWS_HTTP_HEADERS_ALL) && defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && !defined(LWS_ROLE_WS) && defined(LWS_ROLE_H2) /* 0: 0: get */ /* 1: 1: post */ /* 2: 2: options */ @@ -4833,7 +4833,7 @@ /* total size 1177 bytes */ #endif -#if !defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && defined(LWS_ROLE_WS) && defined(LWS_ROLE_H2) +#if !defined(LWS_HTTP_HEADERS_ALL) && !defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && defined(LWS_ROLE_WS) && defined(LWS_ROLE_H2) /* 0: 0: get */ /* 1: 1: post */ /* 2: 3: host: */ @@ -5757,7 +5757,7 @@ /* total size 1177 bytes */ #endif -#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && defined(LWS_ROLE_WS) && defined(LWS_ROLE_H2) +#if defined(LWS_HTTP_HEADERS_ALL) || (defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && defined(LWS_ROLE_WS) && defined(LWS_ROLE_H2)) /* 0: 0: get */ /* 1: 1: post */ /* 2: 2: options */ @@ -6690,42 +6690,42 @@ /* -#if !defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && !defined(LWS_ROLE_WS) && !defined(LWS_ROLE_H2) +#if !defined(LWS_HTTP_HEADERS_ALL) && !defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && !defined(LWS_ROLE_WS) && !defined(LWS_ROLE_H2) static uint8_t lws_header_implies_psuedoheader_map[] = { 0x03,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, }; #endif -#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && !defined(LWS_ROLE_WS) && !defined(LWS_ROLE_H2) +#if !defined(LWS_HTTP_HEADERS_ALL) && defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && !defined(LWS_ROLE_WS) && !defined(LWS_ROLE_H2) static uint8_t lws_header_implies_psuedoheader_map[] = { 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00, }; #endif -#if !defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && defined(LWS_ROLE_WS) && !defined(LWS_ROLE_H2) +#if !defined(LWS_HTTP_HEADERS_ALL) && !defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && defined(LWS_ROLE_WS) && !defined(LWS_ROLE_H2) static uint8_t lws_header_implies_psuedoheader_map[] = { 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, }; #endif -#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && defined(LWS_ROLE_WS) && !defined(LWS_ROLE_H2) +#if !defined(LWS_HTTP_HEADERS_ALL) && defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && defined(LWS_ROLE_WS) && !defined(LWS_ROLE_H2) static uint8_t lws_header_implies_psuedoheader_map[] = { 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x10,0x00,0x00,0x00,0x00,0x00,0x00, }; #endif -#if !defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && !defined(LWS_ROLE_WS) && defined(LWS_ROLE_H2) +#if !defined(LWS_HTTP_HEADERS_ALL) && !defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && !defined(LWS_ROLE_WS) && defined(LWS_ROLE_H2) static uint8_t lws_header_implies_psuedoheader_map[] = { 0x03,0x00,0x80,0x0f,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, }; #endif -#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && !defined(LWS_ROLE_WS) && defined(LWS_ROLE_H2) +#if !defined(LWS_HTTP_HEADERS_ALL) && defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && !defined(LWS_ROLE_WS) && defined(LWS_ROLE_H2) static uint8_t lws_header_implies_psuedoheader_map[] = { 0x07,0x00,0x00,0x3e,0x00,0x00,0x00,0x80,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00, }; #endif -#if !defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && defined(LWS_ROLE_WS) && defined(LWS_ROLE_H2) +#if !defined(LWS_HTTP_HEADERS_ALL) && !defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && defined(LWS_ROLE_WS) && defined(LWS_ROLE_H2) static uint8_t lws_header_implies_psuedoheader_map[] = { 0x03,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00, }; #endif -#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && defined(LWS_ROLE_WS) && defined(LWS_ROLE_H2) +#if defined(LWS_HTTP_HEADERS_ALL) || (defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && defined(LWS_ROLE_WS) && defined(LWS_ROLE_H2)) static uint8_t lws_header_implies_psuedoheader_map[] = { 0x07,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x0e,0x04,0x00,0x00,0x00,0x00,0x00, }; diff --git a/lib/roles/http/minilex.c b/lib/roles/http/minilex.c index 2f9d6a8de..083d66ce7 100644 --- a/lib/roles/http/minilex.c +++ b/lib/roles/http/minilex.c @@ -249,10 +249,16 @@ int issue(int version) memset(rset, 0, sizeof(rset)); - printf("#if %cdefined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && " - "%cdefined(LWS_ROLE_WS) && " - "%cdefined(LWS_ROLE_H2)\n", version & 1 ? ' ' : '!', - version & 2 ? ' ' : '!', version & 4 ? ' ' : '!'); + if (version == 7) + printf("#if defined(LWS_HTTP_HEADERS_ALL) || (%cdefined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && " + "%cdefined(LWS_ROLE_WS) && " + "%cdefined(LWS_ROLE_H2))\n", version & 1 ? ' ' : '!', + version & 2 ? ' ' : '!', version & 4 ? ' ' : '!'); + else + printf("#if !defined(LWS_HTTP_HEADERS_ALL) && %cdefined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && " + "%cdefined(LWS_ROLE_WS) && " + "%cdefined(LWS_ROLE_H2)\n", version & 1 ? ' ' : '!', + version & 2 ? ' ' : '!', version & 4 ? ' ' : '!'); /* * let's create version's view of the set of strings @@ -467,7 +473,13 @@ int main(void) for (n = 0; n < 8; n++) { - printf("#if %cdefined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && " + if (n == 7) + printf("#if defined(LWS_HTTP_HEADERS_ALL) || (%cdefined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && " + "%cdefined(LWS_ROLE_WS) && " + "%cdefined(LWS_ROLE_H2))\n", n & 1 ? ' ' : '!', + n & 2 ? ' ' : '!', n & 4 ? ' ' : '!'); + else + printf("#if !defined(LWS_HTTP_HEADERS_ALL) && %cdefined(LWS_WITH_HTTP_UNCOMMON_HEADERS) && " "%cdefined(LWS_ROLE_WS) && " "%cdefined(LWS_ROLE_H2)\n", n & 1 ? ' ' : '!', n & 2 ? ' ' : '!', n & 4 ? ' ' : '!');