mirror of
https://github.com/warmcat/libwebsockets.git
synced 2025-03-16 00:00:07 +01:00

Lws now strips out http headers releated to h2, ws and unusual headers based on cmake config settings for those features... it saves some heap for the ah and reduces the table size in .rodata. It's possible code might have some external dependency on the original header indexes, but, eg, you don't enable h2 so those indexes are optimized with the h2 ones taken out. This introduces a cmake option "LWS_HTTP_HEADERS_ALL", default-OFF, that defeats the header table optimization for compatibility with older versions in the case the client software can't be adapted to use the lws-exported matching header enums. You probably don't need this.
135 lines
3.1 KiB
C
135 lines
3.1 KiB
C
/* set of parsable strings -- ALL LOWER CASE */
|
|
|
|
static const char * const set[] = {
|
|
"get ",
|
|
"post ",
|
|
#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) || defined(LWS_HTTP_HEADERS_ALL)
|
|
"options ",
|
|
#endif
|
|
"host:",
|
|
"connection:",
|
|
"upgrade:",
|
|
"origin:",
|
|
#if defined(LWS_ROLE_WS) || defined(LWS_HTTP_HEADERS_ALL)
|
|
"sec-websocket-draft:",
|
|
#endif
|
|
"\x0d\x0a",
|
|
|
|
#if defined(LWS_ROLE_WS) || defined(LWS_HTTP_HEADERS_ALL)
|
|
"sec-websocket-extensions:",
|
|
"sec-websocket-key1:",
|
|
"sec-websocket-key2:",
|
|
"sec-websocket-protocol:",
|
|
|
|
"sec-websocket-accept:",
|
|
"sec-websocket-nonce:",
|
|
#endif
|
|
"http/1.1 ",
|
|
#if defined(LWS_ROLE_H2) || defined(LWS_HTTP_HEADERS_ALL)
|
|
"http2-settings:",
|
|
#endif
|
|
|
|
"accept:",
|
|
#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) || defined(LWS_HTTP_HEADERS_ALL)
|
|
"access-control-request-headers:",
|
|
#endif
|
|
"if-modified-since:",
|
|
"if-none-match:",
|
|
"accept-encoding:",
|
|
"accept-language:",
|
|
"pragma:",
|
|
"cache-control:",
|
|
"authorization:",
|
|
"cookie:",
|
|
"content-length:",
|
|
"content-type:",
|
|
"date:",
|
|
"range:",
|
|
#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) || defined(LWS_ROLE_H2) || defined(LWS_HTTP_HEADERS_ALL)
|
|
"referer:",
|
|
#endif
|
|
#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) || defined(LWS_HTTP_HEADERS_ALL)
|
|
":authority",
|
|
":method",
|
|
":path",
|
|
":scheme",
|
|
":status",
|
|
#endif
|
|
#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) || defined(LWS_HTTP_HEADERS_ALL)
|
|
"access-control-allow-origin:",
|
|
#endif
|
|
"age:",
|
|
"allow:",
|
|
"content-disposition:",
|
|
"content-encoding:",
|
|
"content-language:",
|
|
"content-location:",
|
|
"content-range:",
|
|
"etag:",
|
|
"expect:",
|
|
"expires:",
|
|
"from:",
|
|
"if-match:",
|
|
"if-range:",
|
|
"if-unmodified-since:",
|
|
"last-modified:",
|
|
"link:",
|
|
"location:",
|
|
#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) || defined(LWS_ROLE_H2) || defined(LWS_HTTP_HEADERS_ALL)
|
|
"max-forwards:",
|
|
"proxy-authenticate:",
|
|
"proxy-authorization:",
|
|
#endif
|
|
"refresh:",
|
|
"retry-after:",
|
|
"server:",
|
|
"set-cookie:",
|
|
#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) || defined(LWS_HTTP_HEADERS_ALL)
|
|
"user-agent:",
|
|
"vary:",
|
|
"via:",
|
|
"www-authenticate:",
|
|
#endif
|
|
#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) || defined(LWS_HTTP_HEADERS_ALL)
|
|
"patch",
|
|
"put",
|
|
"delete",
|
|
#endif
|
|
|
|
"uri-args", /* fake header used for uri-only storage */
|
|
|
|
#if defined(LWS_WITH_HTTP_UNCOMMON_HEADERS) || defined(LWS_HTTP_HEADERS_ALL)
|
|
"proxy ",
|
|
"x-real-ip:",
|
|
#endif
|
|
"http/1.0 ",
|
|
|
|
"x-forwarded-for:",
|
|
"connect ",
|
|
"head ",
|
|
#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) || defined(LWS_HTTP_HEADERS_ALL)
|
|
":protocol", /* defined in mcmanus-httpbis-h2-ws-02 */
|
|
#endif
|
|
|
|
"x-auth-token:",
|
|
|
|
"", /* not matchable */
|
|
|
|
};
|