1
0
Fork 0
mirror of https://github.com/warmcat/libwebsockets.git synced 2025-03-09 00:00:04 +01:00
libwebsockets/cmake/lws_config.h.in

242 lines
8.5 KiB
C
Raw Permalink Normal View History

/* lws_config.h Generated from lws_config.h.in */
2013-02-06 15:25:26 +09:00
#ifndef NDEBUG
#ifndef _DEBUG
#define _DEBUG
#endif
2013-02-22 09:28:13 +08:00
#endif
#define LWS_INSTALL_DATADIR "${CMAKE_INSTALL_PREFIX}/share"
#define LWS_INSTALL_LIBDIR "${CMAKE_INSTALL_PREFIX}/${LWS_INSTALL_LIB_DIR}${LIB_SUFFIX}"
#define LWS_LIBRARY_VERSION_MAJOR ${LWS_LIBRARY_VERSION_MAJOR}
#define LWS_LIBRARY_VERSION_MINOR ${LWS_LIBRARY_VERSION_MINOR}
#define LWS_LIBRARY_VERSION_PATCH_ELABORATED ${LWS_LIBRARY_VERSION_PATCH_ELABORATED}
#define LWS_LIBRARY_VERSION_PATCH ${LWS_LIBRARY_VERSION_PATCH}
/* LWS_LIBRARY_VERSION_NUMBER looks like 1005001 for e.g. version 1.5.1 */
2018-11-29 08:29:48 +08:00
#define LWS_LIBRARY_VERSION_NUMBER (LWS_LIBRARY_VERSION_MAJOR * 1000000) + \
(LWS_LIBRARY_VERSION_MINOR * 1000) + \
LWS_LIBRARY_VERSION_PATCH
#define LWS_MAX_SMP ${LWS_MAX_SMP}
#cmakedefine LWS_ESP_PLATFORM
#cmakedefine LWS_LIBRARY_VERSION_NUMBER
#cmakedefine LWS_EXT_PTHREAD_LIBRARIES
2018-11-29 08:29:48 +08:00
#cmakedefine LWS_AVOID_SIGPIPE_IGN
CMake support + fixed windows build. - Finalized CMake support (tested on windows only so far). - Uses a generated lws_config.h that is included in private-libwebsocket to pass defines, only used if CMAKE_BUILD is set. - Support for SSL on Windows. - Initial support for CyaSSL replacement of OpenSSL (This has been added to my older CMake-fork but haven't been tested on this version yet). - Fixed windows build (see below for details). - Fixed at least the 32-bit Debug build for the existing Visual Studio Project. (Not to keen fixing all the others when we have CMake support anyway (which can generate much better project files)...) - BUGFIXES: - handshake.c - used C99 definition of handshake_0405 function - libwebsocket.c - syslog not available on windows, put in ifdefs. - Fixed previous known crash bug on Windows where WSAPoll in Ws2_32.dll would not be present, causing the poll function pointer being set to NULL. - Uninitialized variable context->listen_service_extraseen would result in stack overflow because of infinite recursion. Fixed by initializing in libwebsocket_create_context - SO_REUSADDR means something different on Windows compared to Unix. - Setting a socket to nonblocking is done differently on Windows. (This should probably broken out into a helper function instead) - lwsl_emit_syslog -> lwsl_emit_stderr on Windows. - private-libwebsocket.h - PATH_MAX is not available on Windows, define as MAX_PATH - Always define LWS_NO_DAEMONIZE on windows. - Don't define lws_latency as inline that does nothing. inline is not support by the Microsoft compiler, replaced with an empty define instead. (It's __inline in MSVC) - server.c - Fixed nonblock call on windows - test-ping.c - Don't use C99 features (Microsoft compiler does not support it). - Move non-win32 headers into ifdefs. - Skip use of sighandler on Windows. - test-server.c - ifdef syslog parts on Windows.
2013-02-06 15:26:58 +09:00
#cmakedefine LWS_BUILD_HASH "${LWS_BUILD_HASH}"
#cmakedefine LWS_BUILTIN_GETIFADDRS
#cmakedefine LWS_CLIENT_HTTP_PROXYING
#cmakedefine LWS_DETECTED_PLAT_IOS
2018-11-29 08:29:48 +08:00
#cmakedefine LWS_FALLBACK_GETHOSTBYNAME
#cmakedefine LWS_HAS_INTPTR_T
2019-01-11 16:48:53 +08:00
#cmakedefine LWS_HAS_GETOPT_LONG
2018-11-29 08:29:48 +08:00
#cmakedefine LWS_HAVE__ATOI64
#cmakedefine LWS_HAVE_ATOLL
2018-12-13 20:05:12 +08:00
#cmakedefine LWS_HAVE_BN_bn2binpad
#cmakedefine LWS_HAVE_CLOCK_GETTIME
#cmakedefine LWS_HAVE_EC_POINT_get_affine_coordinates
#cmakedefine LWS_HAVE_EC_KEY_new_by_curve_name
2018-12-13 20:05:12 +08:00
#cmakedefine LWS_HAVE_ECDSA_SIG_set0
#cmakedefine LWS_HAVE_EVP_MD_CTX_free
2018-12-13 20:05:12 +08:00
#cmakedefine LWS_HAVE_EVP_aes_128_wrap
2019-07-09 18:11:16 +01:00
#cmakedefine LWS_HAVE_EVP_aes_128_cfb8
#cmakedefine LWS_HAVE_EVP_aes_128_cfb128
#cmakedefine LWS_HAVE_EVP_aes_192_cfb8
#cmakedefine LWS_HAVE_EVP_aes_192_cfb128
#cmakedefine LWS_HAVE_EVP_aes_256_cfb8
#cmakedefine LWS_HAVE_EVP_aes_256_cfb128
2021-09-07 19:52:32 +01:00
#cmakedefine LWS_HAVE_EVP_aes_128_ofb
2019-07-09 18:11:16 +01:00
#cmakedefine LWS_HAVE_EVP_aes_128_xts
2021-09-07 19:52:32 +01:00
#cmakedefine LWS_HAVE_EVP_aes_128_ctr
#cmakedefine LWS_HAVE_EVP_aes_128_ecb
#cmakedefine LWS_HAVE_EVP_PKEY_new_raw_private_key
#cmakedefine LWS_HAVE_EXECVPE
#cmakedefine LWS_HAVE_LOCALTIME_R
#cmakedefine LWS_HAVE_GMTIME_R
#cmakedefine LWS_HAVE_CTIME_R
#cmakedefine LWS_HAVE_GETGRGID_R
#cmakedefine LWS_HAVE_GETGRNAM_R
#cmakedefine LWS_HAVE_GETPWUID_R
#cmakedefine LWS_HAVE_GETPWNAM_R
2018-11-29 08:29:48 +08:00
#cmakedefine LWS_HAVE_LIBCAP
#cmakedefine LWS_HAVE_HMAC_CTX_new
2018-11-29 08:29:48 +08:00
#cmakedefine LWS_HAVE_MALLOC_H
#cmakedefine LWS_HAVE_MALLOC_TRIM
#cmakedefine LWS_HAVE_MALLOC_USABLE_SIZE
#cmakedefine LWS_HAVE_mbedtls_md_setup
#cmakedefine LWS_HAVE_mbedtls_net_init
#cmakedefine LWS_HAVE_mbedtls_rsa_complete
#cmakedefine LWS_HAVE_mbedtls_internal_aes_encrypt
#cmakedefine LWS_HAVE_mbedtls_ssl_conf_alpn_protocols
#cmakedefine LWS_HAVE_mbedtls_ssl_get_alpn_protocol
#cmakedefine LWS_HAVE_mbedtls_ssl_conf_sni
#cmakedefine LWS_HAVE_mbedtls_ssl_set_hs_ca_chain
#cmakedefine LWS_HAVE_mbedtls_ssl_set_hs_own_cert
#cmakedefine LWS_HAVE_mbedtls_ssl_set_hs_authmode
#cmakedefine LWS_HAVE_mbedtls_ssl_set_verify
#cmakedefine LWS_HAVE_mbedtls_x509_crt_parse_file
#cmakedefine LWS_HAVE_MBEDTLS_NET_SOCKETS
#cmakedefine LWS_HAVE_MBEDTLS_SSL_NEW_SESSION_TICKET
#cmakedefine LWS_HAVE_MBEDTLS_AUTH_KEY_ID
2018-11-29 08:29:48 +08:00
#cmakedefine LWS_HAVE_NEW_UV_VERSION_H
#cmakedefine LWS_HAVE_OPENSSL_ECDH_H
#cmakedefine LWS_HAVE_OPENSSL_STACK
2018-11-29 08:29:48 +08:00
#cmakedefine LWS_HAVE_PIPE2
#cmakedefine LWS_HAVE_EVENTFD
2018-11-29 08:29:48 +08:00
#cmakedefine LWS_HAVE_PTHREAD_H
#cmakedefine LWS_HAVE_RSA_SET0_KEY
#cmakedefine LWS_HAVE_RSA_verify_pss_mgf1
#cmakedefine LWS_HAVE_SSL_CTX_get0_certificate
#cmakedefine LWS_HAVE_SSL_CTX_load_verify_file
#cmakedefine LWS_HAVE_SSL_CTX_load_verify_dir
2018-11-29 08:29:48 +08:00
#cmakedefine LWS_HAVE_SSL_CTX_set1_param
#cmakedefine LWS_HAVE_SSL_CTX_set_ciphersuites
2018-11-29 08:29:48 +08:00
#cmakedefine LWS_HAVE_SSL_EXTRA_CHAIN_CERTS
#cmakedefine LWS_HAVE_SSL_get0_alpn_selected
#cmakedefine LWS_HAVE_SSL_CTX_EVP_PKEY_new_raw_private_key
2018-11-29 08:29:48 +08:00
#cmakedefine LWS_HAVE_SSL_set_alpn_protos
#cmakedefine LWS_HAVE_SSL_SET_INFO_CALLBACK
#cmakedefine LWS_HAVE_SSL_SESSION_set_time
2021-04-01 22:31:13 +01:00
#cmakedefine LWS_HAVE_SSL_SESSION_up_ref
2018-11-29 08:29:48 +08:00
#cmakedefine LWS_HAVE__STAT32I64
#cmakedefine LWS_HAVE_STDINT_H
#cmakedefine LWS_HAVE_SYS_CAPABILITY_H
2021-08-01 08:55:34 +01:00
#cmakedefine LWS_HAVE_TIMEGM
2018-11-29 08:29:48 +08:00
#cmakedefine LWS_HAVE_TLS_CLIENT_METHOD
#cmakedefine LWS_HAVE_TLSV1_2_CLIENT_METHOD
#cmakedefine LWS_HAVE_SUSECONDS_T
2016-10-05 13:49:46 +08:00
#cmakedefine LWS_HAVE_UV_VERSION_H
#cmakedefine LWS_HAVE_VFORK
2018-11-29 08:29:48 +08:00
#cmakedefine LWS_HAVE_X509_get_key_usage
#cmakedefine LWS_HAVE_X509_VERIFY_PARAM_set1_host
#cmakedefine LWS_LIBRARY_VERSION "${LWS_LIBRARY_VERSION}"
#define LWS_LOGGING_BITFIELD_CLEAR ${LWS_LOGGING_BITFIELD_CLEAR}
#define LWS_LOGGING_BITFIELD_SET ${LWS_LOGGING_BITFIELD_SET}
#cmakedefine LWS_LOG_TAG_LIFECYCLE
2018-11-29 08:29:48 +08:00
#cmakedefine LWS_MINGW_SUPPORT
#cmakedefine LWS_NO_CLIENT
#cmakedefine LWS_NO_DAEMONIZE
#cmakedefine LWS_OPENSSL_CLIENT_CERTS "${LWS_OPENSSL_CLIENT_CERTS}"
#cmakedefine LWS_OPENSSL_SUPPORT
#cmakedefine LWS_PLAT_OPTEE
#cmakedefine LWS_PLAT_UNIX
#cmakedefine LWS_PLAT_FREERTOS
2018-11-29 08:29:48 +08:00
#cmakedefine LWS_ROLE_CGI
#cmakedefine LWS_ROLE_DBUS
#cmakedefine LWS_ROLE_H1
#cmakedefine LWS_ROLE_H2
#cmakedefine LWS_ROLE_RAW
2020-02-28 15:50:15 +00:00
#cmakedefine LWS_ROLE_RAW_FILE
2018-11-29 08:29:48 +08:00
#cmakedefine LWS_ROLE_RAW_PROXY
#cmakedefine LWS_ROLE_WS
#cmakedefine LWS_ROLE_MQTT
2018-11-29 08:29:48 +08:00
#cmakedefine LWS_SHA1_USE_OPENSSL_NAME
#cmakedefine LWS_SSL_CLIENT_USE_OS_CA_CERTS
#cmakedefine LWS_SSL_SERVER_WITH_ECDH_CERT
#cmakedefine LWS_SUPPRESS_DEPRECATED_API_WARNINGS
2021-01-23 20:56:01 +00:00
#cmakedefine LWS_TLS_LOG_PLAINTEXT_RX
#cmakedefine LWS_TLS_LOG_PLAINTEXT_TX
#cmakedefine LWS_WITH_ABSTRACT
2018-11-29 08:29:48 +08:00
#cmakedefine LWS_WITH_ACCESS_LOG
#cmakedefine LWS_WITH_ACME
2020-01-02 08:32:23 +00:00
#cmakedefine LWS_WITH_ALSA
#cmakedefine LWS_WITH_SYS_ASYNC_DNS
2018-11-29 08:29:48 +08:00
#cmakedefine LWS_WITH_BORINGSSL
#cmakedefine LWS_WITH_CGI
#cmakedefine LWS_WITH_CONMON
#cmakedefine LWS_WITH_COSE
#cmakedefine LWS_WITH_CUSTOM_HEADERS
#cmakedefine LWS_WITH_DEPRECATED_LWS_DLL
#cmakedefine LWS_WITH_DETAILED_LATENCY
#cmakedefine LWS_WITH_DIR
#cmakedefine LWS_WITH_DRIVERS
2018-11-29 08:29:48 +08:00
#cmakedefine LWS_WITH_ESP32
2020-02-09 05:18:22 +00:00
#cmakedefine LWS_HAVE_EVBACKEND_LINUXAIO
2020-02-21 07:59:09 +00:00
#cmakedefine LWS_HAVE_EVBACKEND_IOURING
#cmakedefine LWS_WITH_EXTERNAL_POLL
#cmakedefine LWS_WITH_FILE_OPS
2020-02-15 10:09:50 +00:00
#cmakedefine LWS_WITH_FSMOUNT
2018-11-29 08:29:48 +08:00
#cmakedefine LWS_WITH_FTS
2018-12-13 20:05:12 +08:00
#cmakedefine LWS_WITH_GENCRYPTO
#cmakedefine LWS_WITH_GENERIC_SESSIONS
#cmakedefine LWS_WITH_GLIB
#cmakedefine LWS_WITH_GTK
2018-11-29 08:29:48 +08:00
#cmakedefine LWS_WITH_HTTP2
#cmakedefine LWS_WITH_HTTP_BASIC_AUTH
2018-11-29 08:29:48 +08:00
#cmakedefine LWS_WITH_HTTP_BROTLI
#cmakedefine LWS_HTTP_HEADERS_ALL
#cmakedefine LWS_WITH_HTTP_PROXY
2018-11-29 08:29:48 +08:00
#cmakedefine LWS_WITH_HTTP_STREAM_COMPRESSION
#cmakedefine LWS_WITH_HTTP_UNCOMMON_HEADERS
2018-11-29 08:29:48 +08:00
#cmakedefine LWS_WITH_IPV6
2018-12-13 20:05:12 +08:00
#cmakedefine LWS_WITH_JOSE
#cmakedefine LWS_WITH_CBOR
#cmakedefine LWS_WITH_CBOR_FLOAT
2018-11-29 08:29:48 +08:00
#cmakedefine LWS_WITH_LEJP
#cmakedefine LWS_WITH_LIBEV
#cmakedefine LWS_WITH_LIBEVENT
#cmakedefine LWS_WITH_LIBUV
2021-01-06 14:15:53 +01:00
#cmakedefine LWS_WITH_SDEVENT
2018-11-29 08:29:48 +08:00
#cmakedefine LWS_WITH_LWSAC
#cmakedefine LWS_LOGS_TIMESTAMP
2018-11-29 08:29:48 +08:00
#cmakedefine LWS_WITH_MBEDTLS
2019-07-03 19:46:23 +01:00
#cmakedefine LWS_WITH_MINIZ
#cmakedefine LWS_WITH_NETLINK
#cmakedefine LWS_WITH_NETWORK
2018-11-29 08:29:48 +08:00
#cmakedefine LWS_WITH_NO_LOGS
2021-05-26 09:13:03 +01:00
#cmakedefine LWS_WITH_CACHE_NSCOOKIEJAR
#cmakedefine LWS_WITH_CLIENT
2018-11-29 08:29:48 +08:00
#cmakedefine LWS_WITHOUT_EXTENSIONS
#cmakedefine LWS_WITH_SERVER
#cmakedefine LWS_WITH_SPAWN
2018-11-29 08:29:48 +08:00
#cmakedefine LWS_WITH_PEER_LIMITS
#cmakedefine LWS_WITH_PLUGINS
#cmakedefine LWS_WITH_PLUGINS_BUILTIN
2018-11-29 08:29:48 +08:00
#cmakedefine LWS_WITH_POLARSSL
#cmakedefine LWS_WITH_POLL
RFC7233 HTTP Ranges support for server This adds a serverside implementation of RFC7233 HTTP ranges. - LWS_WITH_RANGES is on by default at cmake - Accept-Ranges: bytes is added if LWS_WITH_RANGES is enabled - Both single ranges and multipart (2+) ranges are supported Test with curl like this Single $ $ curl -s -r 64-95 http://localhost:7681/libwebsockets.org-logo.png | hexdump -C 00000000 2e 01 fd 9d 12 27 00 00 00 19 74 45 58 74 53 6f |.....'....tEXtSo| 00000010 66 74 77 61 72 65 00 77 77 77 2e 69 6e 6b 73 63 |ftware.www.inksc| Multipart $ curl -s -r 64-95,128-143 http://localhost:7681/libwebsockets.org-logo.png | hexdump -C 00000000 5f 6c 77 73 0d 0a 43 6f 6e 74 65 6e 74 2d 54 79 |_lws..Content-Ty| 00000010 70 65 3a 20 69 6d 61 67 65 2f 70 6e 67 0d 0a 43 |pe: image/png..C| 00000020 6f 6e 74 65 6e 74 2d 52 61 6e 67 65 3a 20 62 79 |ontent-Range: by| 00000030 74 65 73 20 36 34 2d 39 35 2f 37 30 32 39 0d 0a |tes 64-95/7029..| 00000040 0d 0a 2e 01 fd 9d 12 27 00 00 00 19 74 45 58 74 |.......'....tEXt| 00000050 53 6f 66 74 77 61 72 65 00 77 77 77 2e 69 6e 6b |Software.www.ink| 00000060 73 63 5f 6c 77 73 0d 0a 43 6f 6e 74 65 6e 74 2d |sc_lws..Content-| 00000070 54 79 70 65 3a 20 69 6d 61 67 65 2f 70 6e 67 0d |Type: image/png.| 00000080 0a 43 6f 6e 74 65 6e 74 2d 52 61 6e 67 65 3a 20 |.Content-Range: | 00000090 62 79 74 65 73 20 31 32 38 2d 31 34 33 2f 37 30 |bytes 128-143/70| 000000a0 32 39 0d 0a 0d 0a 05 14 50 40 05 15 a5 c4 60 43 |29......P@....`C| 000000b0 91 c4 4a d4 c4 fc 5f 6c 77 73 0d 00 |..J..._lws..| The corresponding header part is like this 0x0030: 4854 5450 2f31 2e31 2032 3036 HTTP/1.1.206 0x0040: 200d 0a73 6572 7665 723a 206c 7773 7773 ...server:.lwsws 0x0050: 0d0a 636f 6e74 656e 742d 7479 7065 3a20 ..content-type:. 0x0060: 6d75 6c74 6970 6172 742f 6279 7465 7261 multipart/bytera 0x0070: 6e67 6573 0d0a 6163 6365 7074 2d72 616e nges..accept-ran 0x0080: 6765 733a 2062 7974 6573 0d0a 636f 6e74 ges:.bytes..cont 0x0090: 656e 742d 6c65 6e67 7468 3a20 3138 380d ent-length:.188. 0x00a0: 0a63 6163 6865 2d63 6f6e 7472 6f6c 3a20 .cache-control:. 0x00b0: 7072 6976 6174 6520 6d61 782d 6167 653a private.max-age: 0x00c0: 2036 300d 0a63 6f6e 6e65 6374 696f 6e3a .60..connection: 0x00d0: 206b 6565 702d 616c 6976 650d 0a65 7461 .keep-alive..eta 0x00e0: 673a 2030 3030 3031 4237 3535 3444 3433 g:.00001B7554D43 0x00f0: 3033 330d 0a0d 0a 033....
2016-12-12 13:36:25 +08:00
#cmakedefine LWS_WITH_RANGES
#cmakedefine LWS_WITH_RFC6724
#cmakedefine LWS_WITH_SECURE_STREAMS
#cmakedefine LWS_WITH_SECURE_STREAMS_CPP
#cmakedefine LWS_WITH_SECURE_STREAMS_SYS_AUTH_API_AMAZON_COM
#cmakedefine LWS_WITH_SECURE_STREAMS_PROXY_API
#cmakedefine LWS_WITH_SECURE_STREAMS_STATIC_POLICY_ONLY
#cmakedefine LWS_WITH_SECURE_STREAMS_AUTH_SIGV4
2021-06-10 00:08:37 -07:00
#cmakedefine LWS_WITH_SECURE_STREAMS_BUFFER_DUMP
#cmakedefine LWS_WITH_SS_DIRECT_PROTOCOL_STR
2018-11-29 08:29:48 +08:00
#cmakedefine LWS_WITH_SELFTESTS
#cmakedefine LWS_WITH_SEQUENCER
#cmakedefine LWS_WITH_SERVER_STATUS
#cmakedefine LWS_WITH_SYS_SMD
#cmakedefine LWS_WITH_SMTP
#cmakedefine LWS_WITH_SOCKS5
2018-11-29 08:29:48 +08:00
#cmakedefine LWS_WITH_STATEFUL_URLDECODE
#cmakedefine LWS_WITH_STATS
#cmakedefine LWS_WITH_STRUCT_SQLITE3
#cmakedefine LWS_WITH_STRUCT_JSON
#cmakedefine LWS_WITH_SUL_DEBUGGING
#cmakedefine LWS_WITH_SQLITE3
#cmakedefine LWS_WITH_SYS_DHCP_CLIENT
2021-02-17 10:31:22 +00:00
#cmakedefine LWS_WITH_SYS_FAULT_INJECTION
#cmakedefine LWS_WITH_SYS_METRICS
2021-02-17 10:31:22 +00:00
#cmakedefine LWS_WITH_SYS_NTPCLIENT
#cmakedefine LWS_WITH_SYS_STATE
2018-09-02 14:35:37 +08:00
#cmakedefine LWS_WITH_THREADPOOL
2018-11-29 08:29:48 +08:00
#cmakedefine LWS_WITH_TLS
#cmakedefine LWS_WITH_TLS_JIT_TRUST
#cmakedefine LWS_WITH_TLS_SESSIONS
2019-09-30 09:42:38 -07:00
#cmakedefine LWS_WITH_UDP
2021-03-15 19:33:37 +00:00
#cmakedefine LWS_WITH_ULOOP
2018-11-29 08:29:48 +08:00
#cmakedefine LWS_WITH_UNIX_SOCK
#cmakedefine LWS_WITH_ZIP_FOPS
#cmakedefine USE_OLD_CYASSL
#cmakedefine USE_WOLFSSL
#cmakedefine LWS_WITH_EVENT_LIBS
#cmakedefine LWS_WITH_EVLIB_PLUGINS
#cmakedefine LWS_WITH_LIBUV_INTERNAL
2020-08-30 07:39:27 +01:00
#cmakedefine LWS_WITH_PLUGINS_API
#cmakedefine LWS_HAVE_RTA_PREF
http: compression methods Add generic http compression layer eanbled at cmake with LWS_WITH_HTTP_STREAM_COMPRESSION. This is wholly a feature of the HTTP role (used by h1 and h2 roles) and doesn't exist outside that context. Currently provides 'deflate' and 'br' compression methods for server side only. 'br' requires also -DLWS_WITH_HTTP_BROTLI=1 at cmake and the brotli libraries (available in your distro already) and dev package. Other compression methods can be added nicely using an ops struct. The built-in file serving stuff will use this is the client says he can handle it, and the mimetype of the file either starts with "text/" (html and css etc) or is the mimetype of Javascript. zlib allocates quite a bit while in use, it seems to be around 256KiB per stream. So this is only useful on relatively strong servers with lots of memory. However for some usecases where you are serving a lot of css and js assets, it's a nice help. The patch performs special treatment for http/1.1 pipelining, since the compression is performed on the fly the compressed content-length is not known until the end. So for h1 only, chunked transfer-encoding is automatically added so pipelining can continue of the connection. For h2 the chunking is neither supported nor required, so it "just works". User code can also request to add a compression transform before the reply headers were sent using the new api LWS_VISIBLE int lws_http_compression_apply(struct lws *wsi, const char *name, unsigned char **p, unsigned char *end, char decomp); ... this allows transparent compression of dynamically generated HTTP. The requested compression (eg, "deflate") is only applied if the client headers indicated it was supported, otherwise it's a NOP. Name may be NULL in which case the first compression method in the internal table at stream.c that is mentioned as acceptable by the client will be used. NOTE: the compression translation, same as h2 support, relies on the user code using LWS_WRITE_HTTP and then LWS_WRITE_HTTP_FINAL on the last part written. The internal lws fileserving code already does this.
2018-09-02 14:43:05 +08:00