diff --git a/doc/html/globals_func.html b/doc/html/globals_func.html
index 10a339f8..0dec7474 100644
--- a/doc/html/globals_func.html
+++ b/doc/html/globals_func.html
@@ -213,6 +213,9 @@ $(document).ready(function(){initNavTree('globals_func.html','');});
diff --git a/doc/html/libwebsockets_8h.js b/doc/html/libwebsockets_8h.js
index ebb58553..7963fa86 100644
--- a/doc/html/libwebsockets_8h.js
+++ b/doc/html/libwebsockets_8h.js
@@ -412,6 +412,7 @@ var libwebsockets_8h =
[ "lws_get_count_threads", "group__misc.html#ga629f48268fd1856b54b11172991b97d9", null ],
[ "lws_get_fops", "group__fops.html#gac08aef64c4c34647ed699b24759b6b0e", null ],
[ "lws_get_library_version", "group__misc.html#gac6abfc0b2bd5b2f09281a4432bb2f5f0", null ],
+ [ "lws_get_mimetype", "group__httpft.html#gab4da87a4800413f15e7aba649fb1d77c", null ],
[ "lws_get_parent", "group__misc.html#ga8930fe36a3f3eefe4a6a4fd499d8e899", null ],
[ "lws_get_peer_addresses", "group__net.html#ga092e5f473b3347f03ffeef8a950080f3", null ],
[ "lws_get_peer_simple", "group__net.html#gad01014fed09759741b6d23afccfdaacc", null ],
diff --git a/doc/html/libwebsockets_8h_source.html b/doc/html/libwebsockets_8h_source.html
index 55b1b6a7..bfe8db64 100644
--- a/doc/html/libwebsockets_8h_source.html
+++ b/doc/html/libwebsockets_8h_source.html
@@ -71,9 +71,9 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
libwebsockets.h
- Go to the documentation of this file. 24 #ifndef LIBWEBSOCKET_H_3060898B846849FF9F88F5DB59B5950C 25 #define LIBWEBSOCKET_H_3060898B846849FF9F88F5DB59B5950C 31 #include "mbed-drivers/mbed.h" 32 #include "sal-iface-eth/EthernetInterface.h" 33 #include "sockets/TCPListener.h" 34 #include "sal-stack-lwip/lwipv4_init.h" 50 awaiting_on_writeable(0) 55 void set_wsi( struct lws *_wsi) { wsi = _wsi; } 56 int actual_onRX(Socket *s); 58 void onError(Socket *s, socket_error_t err); 59 void onDisconnect(TCPStream *s); 60 void onSent(Socket *s, uint16_t len); 61 void serialized_writeable( struct lws *wsi); 69 char awaiting_on_writeable; 75 srv(SOCKET_STACK_LWIP_IPV4) 77 srv.setOnError(TCPStream::ErrorHandler_t( this, 81 void start( const uint16_t port); 85 void onError(Socket *s, socket_error_t err); 86 void onIncoming(TCPListener *s, void *impl); 87 void onDisconnect(TCPStream *s); 100 #ifdef MBED_OPERATORS 107 #include "lws_config.h" 109 #if defined(WIN32) || defined(_WIN32) 110 #ifndef WIN32_LEAN_AND_MEAN 111 #define WIN32_LEAN_AND_MEAN 114 #include <winsock2.h> 115 #include <ws2tcpip.h> 122 #define _O_RDONLY 0x0000 123 #define O_RDONLY _O_RDONLY 127 #if (defined(_MSC_VER) && _MSC_VER < 1900) || defined(_WIN32_WCE) 128 #define strcasecmp _stricmp 130 #define strcasecmp stricmp 132 #define getdtablesize() 30000 134 #define LWS_INLINE __inline 136 #define LWS_WARN_UNUSED_RESULT 137 #define LWS_WARN_DEPRECATED 141 #define LWS_EXTERN extern __declspec(dllexport) 143 #define LWS_EXTERN extern __declspec(dllimport) 149 #define LWS_INVALID_FILE INVALID_HANDLE_VALUE 150 #define LWS_O_RDONLY _O_RDONLY 152 #if !defined(_MSC_VER) || _MSC_VER < 1900 153 #define snprintf _snprintf 157 #define __func__ __FUNCTION__ 163 #if defined(__NetBSD__) || defined(__FreeBSD__) 164 #include <netinet/in.h> 167 #define LWS_INLINE inline 168 #define LWS_O_RDONLY O_RDONLY 170 #ifndef MBED_OPERATORS 173 #define LWS_INVALID_FILE -1 175 #define getdtablesize() (20) 176 #define LWS_INVALID_FILE NULL 179 #if defined(__GNUC__) 182 #if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) 183 #define LWS_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) 185 #define LWS_WARN_UNUSED_RESULT 188 #define LWS_VISIBLE __attribute__((visibility("default"))) 189 #define LWS_WARN_DEPRECATED __attribute__ ((deprecated)) 192 #define LWS_WARN_UNUSED_RESULT 193 #define LWS_WARN_DEPRECATED 196 #if defined(__ANDROID__) 198 #define getdtablesize() sysconf(_SC_OPEN_MAX) 211 #define LWS_EXTERN extern 217 #include <sys/time.h> 221 #ifdef LWS_OPENSSL_SUPPORT 224 #ifdef USE_OLD_CYASSL 225 #include <cyassl/openssl/ssl.h> 226 #include <cyassl/error-ssl.h> 228 #include <wolfssl/openssl/ssl.h> 229 #include <wolfssl/error-ssl.h> 232 #if defined(LWS_USE_POLARSSL) 233 #include <polarssl/ssl.h> 240 typedef ssl_context SSL; 242 #if defined(LWS_USE_MBEDTLS) 243 #include <mbedtls/ssl.h> 245 #include <openssl/ssl.h> 246 #include <openssl/err.h> 253 #define CONTEXT_PORT_NO_LISTEN -1 267 enum lws_log_levels { 277 LLL_LATENCY = 1 << 9, 282 LWS_VISIBLE LWS_EXTERN void _lws_log( int filter, const char *format, ...); 283 LWS_VISIBLE LWS_EXTERN void _lws_logv( int filter, const char *format, va_list vl); 293 LWS_VISIBLE LWS_EXTERN int 297 #define lwsl_notice(...) _lws_log(LLL_NOTICE, __VA_ARGS__) 298 #define lwsl_warn(...) _lws_log(LLL_WARN, __VA_ARGS__) 299 #define lwsl_err(...) _lws_log(LLL_ERR, __VA_ARGS__) 307 #define lwsl_info(...) _lws_log(LLL_INFO, __VA_ARGS__) 308 #define lwsl_debug(...) _lws_log(LLL_DEBUG, __VA_ARGS__) 309 #define lwsl_parser(...) _lws_log(LLL_PARSER, __VA_ARGS__) 310 #define lwsl_header(...) _lws_log(LLL_HEADER, __VA_ARGS__) 311 #define lwsl_ext(...) _lws_log(LLL_EXT, __VA_ARGS__) 312 #define lwsl_client(...) _lws_log(LLL_CLIENT, __VA_ARGS__) 313 #define lwsl_latency(...) _lws_log(LLL_LATENCY, __VA_ARGS__) 320 LWS_VISIBLE LWS_EXTERN void lwsl_hexdump( void *buf, size_t len); 324 #define lwsl_info(...) {} 325 #define lwsl_debug(...) {} 326 #define lwsl_parser(...) {} 327 #define lwsl_header(...) {} 328 #define lwsl_ext(...) {} 329 #define lwsl_client(...) {} 330 #define lwsl_latency(...) {} 331 #define lwsl_hexdump(a, b) 345 LWS_VISIBLE LWS_EXTERN void 347 void (*log_emit_function)( int level, const char *line)); 358 LWS_VISIBLE LWS_EXTERN void 366 #ifndef lws_container_of 367 #define lws_container_of(P,T,M) ((T *)((char *)(P) - offsetof(T, M))) 373 #define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0])) 378 #define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_ARG 381 #define LWS_FEATURE_PROTOCOLS_HAS_ID_FIELD 384 #define LWS_FEATURE_PROTOCOLS_HAS_PEER_WRITE_ALLOWANCE 387 #define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_LEN 390 #define LWS_FEATURE_FOPS 394 typedef SOCKET lws_sockfd_type; 395 typedef HANDLE lws_filefd_type; 396 #define lws_sockfd_valid(sfd) (!!sfd) 404 #if defined(MBED_OPERATORS) 406 typedef void * lws_sockfd_type; 407 typedef void * lws_filefd_type; 408 #define lws_sockfd_valid(sfd) (!!sfd) 414 #define POLLIN 0x0001 415 #define POLLPRI 0x0002 416 #define POLLOUT 0x0004 417 #define POLLERR 0x0008 418 #define POLLHUP 0x0010 419 #define POLLNVAL 0x0020 423 void * mbed3_create_tcp_stream_socket( void); 424 void mbed3_delete_tcp_stream_socket( void *sockfd); 425 void mbed3_tcp_stream_bind( void *sock, int port, struct lws *); 426 void mbed3_tcp_stream_accept( void *sock, struct lws *); 428 typedef int lws_sockfd_type; 429 typedef int lws_filefd_type; 430 #define lws_sockfd_valid(sfd) (sfd >= 0) 433 #define lws_pollfd pollfd 462 LWS_CLOSE_STATUS_NOSTATUS = 0, 526 LWS_CLOSE_STATUS_NOSTATUS_CONTEXT_DESTROY = 9999, 541 LWS_VISIBLE LWS_EXTERN void 543 unsigned char *buf, size_t len); 876 LWS_CALLBACK_WS_EXT_DEFAULTS = 39, 879 LWS_CALLBACK_CGI = 40, 881 LWS_CALLBACK_CGI_TERMINATED = 41, 883 LWS_CALLBACK_CGI_STDIN_DATA = 42, 885 LWS_CALLBACK_CGI_STDIN_COMPLETED = 43, 887 LWS_CALLBACK_ESTABLISHED_CLIENT_HTTP = 44, 889 LWS_CALLBACK_CLOSED_CLIENT_HTTP = 45, 891 LWS_CALLBACK_RECEIVE_CLIENT_HTTP = 46, 893 LWS_CALLBACK_COMPLETED_CLIENT_HTTP = 47, 895 LWS_CALLBACK_RECEIVE_CLIENT_HTTP_READ = 48, 897 LWS_CALLBACK_HTTP_BIND_PROTOCOL = 49, 899 LWS_CALLBACK_HTTP_DROP_PROTOCOL = 50, 901 LWS_CALLBACK_CHECK_ACCESS_RIGHTS = 51, 903 LWS_CALLBACK_PROCESS_HTML = 52, 905 LWS_CALLBACK_ADD_HEADERS = 53, 907 LWS_CALLBACK_SESSION_INFO = 54, 910 LWS_CALLBACK_GS_EVENT = 55, 938 void *user, void *in, size_t len); 956 enum lws_extension_callback_reasons { 957 LWS_EXT_CB_SERVER_CONTEXT_CONSTRUCT = 0, 958 LWS_EXT_CB_CLIENT_CONTEXT_CONSTRUCT = 1, 959 LWS_EXT_CB_SERVER_CONTEXT_DESTRUCT = 2, 960 LWS_EXT_CB_CLIENT_CONTEXT_DESTRUCT = 3, 961 LWS_EXT_CB_CONSTRUCT = 4, 962 LWS_EXT_CB_CLIENT_CONSTRUCT = 5, 963 LWS_EXT_CB_CHECK_OK_TO_REALLY_CLOSE = 6, 964 LWS_EXT_CB_CHECK_OK_TO_PROPOSE_EXTENSION = 7, 965 LWS_EXT_CB_DESTROY = 8, 966 LWS_EXT_CB_DESTROY_ANY_WSI_CLOSING = 9, 967 LWS_EXT_CB_ANY_WSI_ESTABLISHED = 10, 968 LWS_EXT_CB_PACKET_RX_PREPARSE = 11, 969 LWS_EXT_CB_PACKET_TX_PRESEND = 12, 970 LWS_EXT_CB_PACKET_TX_DO_SEND = 13, 971 LWS_EXT_CB_HANDSHAKE_REPLY_TX = 14, 972 LWS_EXT_CB_FLUSH_PENDING_TX = 15, 973 LWS_EXT_CB_EXTENDED_PAYLOAD_RX = 16, 974 LWS_EXT_CB_CAN_PROXY_CLIENT_CONNECTION = 17, 976 LWS_EXT_CB_REQUEST_ON_WRITEABLE = 19, 977 LWS_EXT_CB_IS_WRITEABLE = 20, 978 LWS_EXT_CB_PAYLOAD_TX = 21, 979 LWS_EXT_CB_PAYLOAD_RX = 22, 980 LWS_EXT_CB_OPTION_DEFAULT = 23, 981 LWS_EXT_CB_OPTION_SET = 24, 982 LWS_EXT_CB_OPTION_CONFIRM = 25, 983 LWS_EXT_CB_NAMED_OPTION_SET = 26, 1081 enum lws_extension_callback_reasons reason, 1082 void *user, void *in, size_t len); 1102 LWS_VISIBLE LWS_EXTERN int 1104 const char *opt_name, const char *opt_val); 1106 #ifndef LWS_NO_EXTENSIONS 1113 static LWS_INLINE LWS_WARN_DEPRECATED const struct lws_extension * 1114 lws_get_internal_extensions() { return NULL; } 1126 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT 1129 const char *o, int len); 1146 struct lws_context *context, const struct lws_extension *ext, 1147 struct lws *wsi, enum lws_extension_callback_reasons reason, 1148 void *user, void *in, size_t len); 1250 LWS_VISIBLE LWS_EXTERN void * 1263 LWS_VISIBLE LWS_EXTERN void * 1274 LWS_VISIBLE LWS_EXTERN int 1277 #ifdef LWS_WITH_PLUGINS 1281 #define LWS_PLUGIN_API_MAGIC 180 1292 typedef int (*lws_plugin_init_func)( struct lws_context *, 1294 typedef int (*lws_plugin_destroy_func)( struct lws_context *); 1299 #if (UV_VERSION_MAJOR > 0) 1323 #define LWSGS_EMAIL_CONTENT_SIZE 16384 1439 #define lws_check_opt(c, f) (((c) & (f)) == (f)) 1515 #ifdef LWS_OPENSSL_SUPPORT 1630 LWS_VISIBLE LWS_EXTERN struct lws_context * 1641 LWS_VISIBLE LWS_EXTERN void 1661 LWS_VISIBLE LWS_EXTERN int 1676 LWS_EXTERN LWS_VISIBLE struct lws_vhost * 1694 LWS_VISIBLE LWS_EXTERN int 1696 char **config_strings, int *len); 1713 LWS_VISIBLE LWS_EXTERN int 1716 char **config_strings, int *len); 1719 LWS_VISIBLE LWS_EXTERN struct lws_vhost * 1727 LWS_VISIBLE LWS_EXTERN struct lws_vhost * 1737 LWS_VISIBLE LWS_EXTERN int 1747 LWS_VISIBLE LWS_EXTERN int 1759 LWS_VISIBLE LWS_EXTERN void * 1827 unsigned int cache_reusable:1; 1828 unsigned int cache_revalidate:1; 1829 unsigned int cache_intermediaries:1; 1914 LWS_VISIBLE LWS_EXTERN struct lws * 1938 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT 1940 int port, int ssl_connection, const char *path, 1941 const char *host, const char *origin, const char *protocol, 1942 int ietf_version_or_minus_one) LWS_WARN_DEPRECATED; 1964 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT 1966 int port, int ssl_connection, const char *path, 1967 const char *host, const char *origin, 1968 const char *protocol, int ietf_version_or_minus_one, 1969 void *userdata) LWS_WARN_DEPRECATED; 1996 LWS_VISIBLE LWS_EXTERN int 1998 struct lws_vhost *vhost); 2000 LWS_VISIBLE LWS_EXTERN int 2001 lws_http_client_read( struct lws *wsi, char **buf, int *len); 2044 LWS_VISIBLE LWS_EXTERN int 2045 lws_service( struct lws_context *context, int timeout_ms); 2058 LWS_VISIBLE LWS_EXTERN int 2059 lws_service_tsi( struct lws_context *context, int timeout_ms, int tsi); 2076 LWS_VISIBLE LWS_EXTERN void 2090 LWS_VISIBLE LWS_EXTERN void 2115 LWS_VISIBLE LWS_EXTERN int 2127 LWS_VISIBLE LWS_EXTERN int 2164 LWS_VISIBLE LWS_EXTERN int 2166 const char *other_headers, int other_headers_len); 2167 LWS_VISIBLE LWS_EXTERN int 2168 lws_serve_http_file_fragment( struct lws *wsi); 2183 HTTP_STATUS_OK = 200, 2184 HTTP_STATUS_NO_CONTENT = 204, 2186 HTTP_STATUS_MOVED_PERMANENTLY = 301, 2187 HTTP_STATUS_FOUND = 302, 2188 HTTP_STATUS_SEE_OTHER = 303, 2190 HTTP_STATUS_BAD_REQUEST = 400, 2191 HTTP_STATUS_UNAUTHORIZED, 2192 HTTP_STATUS_PAYMENT_REQUIRED, 2193 HTTP_STATUS_FORBIDDEN, 2194 HTTP_STATUS_NOT_FOUND, 2195 HTTP_STATUS_METHOD_NOT_ALLOWED, 2196 HTTP_STATUS_NOT_ACCEPTABLE, 2197 HTTP_STATUS_PROXY_AUTH_REQUIRED, 2198 HTTP_STATUS_REQUEST_TIMEOUT, 2199 HTTP_STATUS_CONFLICT, 2201 HTTP_STATUS_LENGTH_REQUIRED, 2202 HTTP_STATUS_PRECONDITION_FAILED, 2203 HTTP_STATUS_REQ_ENTITY_TOO_LARGE, 2204 HTTP_STATUS_REQ_URI_TOO_LONG, 2205 HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE, 2206 HTTP_STATUS_REQ_RANGE_NOT_SATISFIABLE, 2207 HTTP_STATUS_EXPECTATION_FAILED, 2209 HTTP_STATUS_INTERNAL_SERVER_ERROR = 500, 2210 HTTP_STATUS_NOT_IMPLEMENTED, 2211 HTTP_STATUS_BAD_GATEWAY, 2212 HTTP_STATUS_SERVICE_UNAVAILABLE, 2213 HTTP_STATUS_GATEWAY_TIMEOUT, 2214 HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED, 2224 typedef const char *(*lws_process_html_state_cb)( void *data, int index); 2241 LWS_VISIBLE LWS_EXTERN int 2297 enum lws_token_indexes { 2298 WSI_TOKEN_GET_URI = 0, 2299 WSI_TOKEN_POST_URI = 1, 2300 WSI_TOKEN_OPTIONS_URI = 2, 2302 WSI_TOKEN_CONNECTION = 4, 2303 WSI_TOKEN_UPGRADE = 5, 2304 WSI_TOKEN_ORIGIN = 6, 2305 WSI_TOKEN_DRAFT = 7, 2306 WSI_TOKEN_CHALLENGE = 8, 2307 WSI_TOKEN_EXTENSIONS = 9, 2308 WSI_TOKEN_KEY1 = 10, 2309 WSI_TOKEN_KEY2 = 11, 2310 WSI_TOKEN_PROTOCOL = 12, 2311 WSI_TOKEN_ACCEPT = 13, 2312 WSI_TOKEN_NONCE = 14, 2313 WSI_TOKEN_HTTP = 15, 2314 WSI_TOKEN_HTTP2_SETTINGS = 16, 2315 WSI_TOKEN_HTTP_ACCEPT = 17, 2316 WSI_TOKEN_HTTP_AC_REQUEST_HEADERS = 18, 2317 WSI_TOKEN_HTTP_IF_MODIFIED_SINCE = 19, 2318 WSI_TOKEN_HTTP_IF_NONE_MATCH = 20, 2319 WSI_TOKEN_HTTP_ACCEPT_ENCODING = 21, 2320 WSI_TOKEN_HTTP_ACCEPT_LANGUAGE = 22, 2321 WSI_TOKEN_HTTP_PRAGMA = 23, 2322 WSI_TOKEN_HTTP_CACHE_CONTROL = 24, 2323 WSI_TOKEN_HTTP_AUTHORIZATION = 25, 2324 WSI_TOKEN_HTTP_COOKIE = 26, 2325 WSI_TOKEN_HTTP_CONTENT_LENGTH = 27, 2326 WSI_TOKEN_HTTP_CONTENT_TYPE = 28, 2327 WSI_TOKEN_HTTP_DATE = 29, 2328 WSI_TOKEN_HTTP_RANGE = 30, 2329 WSI_TOKEN_HTTP_REFERER = 31, 2331 WSI_TOKEN_VERSION = 33, 2332 WSI_TOKEN_SWORIGIN = 34, 2334 WSI_TOKEN_HTTP_COLON_AUTHORITY = 35, 2335 WSI_TOKEN_HTTP_COLON_METHOD = 36, 2336 WSI_TOKEN_HTTP_COLON_PATH = 37, 2337 WSI_TOKEN_HTTP_COLON_SCHEME = 38, 2338 WSI_TOKEN_HTTP_COLON_STATUS = 39, 2340 WSI_TOKEN_HTTP_ACCEPT_CHARSET = 40, 2341 WSI_TOKEN_HTTP_ACCEPT_RANGES = 41, 2342 WSI_TOKEN_HTTP_ACCESS_CONTROL_ALLOW_ORIGIN = 42, 2343 WSI_TOKEN_HTTP_AGE = 43, 2344 WSI_TOKEN_HTTP_ALLOW = 44, 2345 WSI_TOKEN_HTTP_CONTENT_DISPOSITION = 45, 2346 WSI_TOKEN_HTTP_CONTENT_ENCODING = 46, 2347 WSI_TOKEN_HTTP_CONTENT_LANGUAGE = 47, 2348 WSI_TOKEN_HTTP_CONTENT_LOCATION = 48, 2349 WSI_TOKEN_HTTP_CONTENT_RANGE = 49, 2350 WSI_TOKEN_HTTP_ETAG = 50, 2351 WSI_TOKEN_HTTP_EXPECT = 51, 2352 WSI_TOKEN_HTTP_EXPIRES = 52, 2353 WSI_TOKEN_HTTP_FROM = 53, 2354 WSI_TOKEN_HTTP_IF_MATCH = 54, 2355 WSI_TOKEN_HTTP_IF_RANGE = 55, 2356 WSI_TOKEN_HTTP_IF_UNMODIFIED_SINCE = 56, 2357 WSI_TOKEN_HTTP_LAST_MODIFIED = 57, 2358 WSI_TOKEN_HTTP_LINK = 58, 2359 WSI_TOKEN_HTTP_LOCATION = 59, 2360 WSI_TOKEN_HTTP_MAX_FORWARDS = 60, 2361 WSI_TOKEN_HTTP_PROXY_AUTHENTICATE = 61, 2362 WSI_TOKEN_HTTP_PROXY_AUTHORIZATION = 62, 2363 WSI_TOKEN_HTTP_REFRESH = 63, 2364 WSI_TOKEN_HTTP_RETRY_AFTER = 64, 2365 WSI_TOKEN_HTTP_SERVER = 65, 2366 WSI_TOKEN_HTTP_SET_COOKIE = 66, 2367 WSI_TOKEN_HTTP_STRICT_TRANSPORT_SECURITY = 67, 2368 WSI_TOKEN_HTTP_TRANSFER_ENCODING = 68, 2369 WSI_TOKEN_HTTP_USER_AGENT = 69, 2370 WSI_TOKEN_HTTP_VARY = 70, 2371 WSI_TOKEN_HTTP_VIA = 71, 2372 WSI_TOKEN_HTTP_WWW_AUTHENTICATE = 72, 2374 WSI_TOKEN_PATCH_URI = 73, 2375 WSI_TOKEN_PUT_URI = 74, 2376 WSI_TOKEN_DELETE_URI = 75, 2378 WSI_TOKEN_HTTP_URI_ARGS = 76, 2379 WSI_TOKEN_PROXY = 77, 2380 WSI_TOKEN_HTTP_X_REAL_IP = 78, 2381 WSI_TOKEN_HTTP1_0 = 79, 2388 _WSI_TOKEN_CLIENT_SENT_PROTOCOLS, 2389 _WSI_TOKEN_CLIENT_PEER_ADDRESS, 2390 _WSI_TOKEN_CLIENT_URI, 2391 _WSI_TOKEN_CLIENT_HOST, 2392 _WSI_TOKEN_CLIENT_ORIGIN, 2393 _WSI_TOKEN_CLIENT_METHOD, 2399 WSI_TOKEN_NAME_PART, 2401 WSI_TOKEN_SKIPPING_SAW_CR, 2402 WSI_PARSING_COMPLETE, 2403 WSI_INIT_TOKEN_MUXURL, 2407 unsigned short token_limit[WSI_TOKEN_COUNT]; 2415 LWS_VISIBLE LWS_EXTERN const unsigned char * 2427 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT 2439 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT 2455 LWS_VISIBLE LWS_EXTERN int 2456 lws_hdr_copy( struct lws *wsi, char *dest, int len, enum lws_token_indexes h); 2475 LWS_VISIBLE LWS_EXTERN int 2477 enum lws_token_indexes h, int frag_idx); 2489 LWS_VISIBLE LWS_EXTERN const char * 2518 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT 2520 unsigned int code, unsigned char **p, 2521 unsigned char *end); 2534 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT 2536 const unsigned char *value, int length, 2537 unsigned char **p, unsigned char *end); 2551 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT 2553 const unsigned char *value, int length, 2554 unsigned char **p, unsigned char *end); 2565 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT 2567 unsigned long content_length, 2568 unsigned char **p, unsigned char *end); 2578 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT 2580 unsigned char *end); 2627 const char *filename, char *buf, int len, 2652 LWS_VISIBLE LWS_EXTERN struct lws_spa * 2664 LWS_VISIBLE LWS_EXTERN int 2672 LWS_VISIBLE LWS_EXTERN int 2681 LWS_VISIBLE LWS_EXTERN int 2689 LWS_VISIBLE LWS_EXTERN const char * 2697 LWS_VISIBLE LWS_EXTERN int 2722 LWS_VISIBLE LWS_EXTERN const char * 2743 LWS_VISIBLE LWS_EXTERN int 2755 LWS_VISIBLE LWS_EXTERN int 2757 const char *html_body); 2769 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT 2771 unsigned char **p, unsigned char *end); 2781 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT 2803 LWS_VISIBLE LWS_EXTERN const char * 2816 LWS_VISIBLE LWS_EXTERN const char * 2828 #ifdef LWS_USE_LIBEV 2829 typedef void (lws_ev_signal_cb_t)(EV_P_ struct ev_signal *w, int revents); 2831 LWS_VISIBLE LWS_EXTERN int 2832 lws_ev_sigint_cfg( struct lws_context *context, int use_ev_sigint, 2833 lws_ev_signal_cb_t *cb); 2835 LWS_VISIBLE LWS_EXTERN int 2836 lws_ev_initloop( struct lws_context *context, struct ev_loop *loop, int tsi); 2838 LWS_VISIBLE LWS_EXTERN void 2839 lws_ev_sigint_cb( struct ev_loop *loop, struct ev_signal *watcher, int revents); 2850 #ifdef LWS_USE_LIBUV 2852 LWS_VISIBLE LWS_EXTERN int 2853 lws_uv_sigint_cfg( struct lws_context *context, int use_uv_sigint, 2856 LWS_VISIBLE LWS_EXTERN void 2857 lws_libuv_run( const struct lws_context *context, int tsi); 2859 LWS_VISIBLE LWS_EXTERN void 2860 lws_libuv_stop( struct lws_context *context); 2862 LWS_VISIBLE LWS_EXTERN int 2863 lws_uv_initloop( struct lws_context *context, uv_loop_t *loop, int tsi); 2865 LWS_VISIBLE LWS_EXTERN uv_loop_t * 2866 lws_uv_getloop( struct lws_context *context, int tsi); 2868 LWS_VISIBLE LWS_EXTERN void 2869 lws_uv_sigint_cb(uv_signal_t *watcher, int signum); 2883 enum pending_timeout { 2884 NO_PENDING_TIMEOUT = 0, 2885 PENDING_TIMEOUT_AWAITING_PROXY_RESPONSE = 1, 2886 PENDING_TIMEOUT_AWAITING_CONNECT_RESPONSE = 2, 2887 PENDING_TIMEOUT_ESTABLISH_WITH_SERVER = 3, 2888 PENDING_TIMEOUT_AWAITING_SERVER_RESPONSE = 4, 2889 PENDING_TIMEOUT_AWAITING_PING = 5, 2890 PENDING_TIMEOUT_CLOSE_ACK = 6, 2891 PENDING_TIMEOUT_AWAITING_EXTENSION_CONNECT_RESPONSE = 7, 2892 PENDING_TIMEOUT_SENT_CLIENT_HANDSHAKE = 8, 2893 PENDING_TIMEOUT_SSL_ACCEPT = 9, 2894 PENDING_TIMEOUT_HTTP_CONTENT = 10, 2895 PENDING_TIMEOUT_AWAITING_CLIENT_HS_SEND = 11, 2896 PENDING_FLUSH_STORED_SEND_BEFORE_CLOSE = 12, 2897 PENDING_TIMEOUT_SHUTDOWN_FLUSH = 13, 2898 PENDING_TIMEOUT_CGI = 14, 2899 PENDING_TIMEOUT_HTTP_KEEPALIVE_IDLE = 15, 2913 LWS_VISIBLE LWS_EXTERN void 2914 lws_set_timeout( struct lws *wsi, enum pending_timeout reason, int secs); 2922 #if !defined(LWS_SIZEOFPTR) 2923 #define LWS_SIZEOFPTR (sizeof (void *)) 2925 #if !defined(u_int64_t) 2926 #define u_int64_t unsigned long long 2929 #if defined(__x86_64__) 2930 #define _LWS_PAD_SIZE 16 2932 #define _LWS_PAD_SIZE LWS_SIZEOFPTR 2934 #define _LWS_PAD(n) (((n) % _LWS_PAD_SIZE) ? \ 2935 ((n) + (_LWS_PAD_SIZE - ((n) % _LWS_PAD_SIZE))) : (n)) 2936 #define LWS_PRE _LWS_PAD(4 + 10) 2938 #define LWS_SEND_BUFFER_PRE_PADDING LWS_PRE 2939 #define LWS_SEND_BUFFER_POST_PADDING 0 2964 LWS_WRITE_HTTP_FINAL = 7, 3060 LWS_VISIBLE LWS_EXTERN int 3061 lws_write( struct lws *wsi, unsigned char *buf, size_t len, 3065 #define lws_write_http(wsi, buf, len) \ 3066 lws_write(wsi, (unsigned char *)(buf), len, LWS_WRITE_HTTP) 3101 LWS_VISIBLE LWS_EXTERN int 3117 LWS_VISIBLE LWS_EXTERN int 3134 LWS_VISIBLE LWS_EXTERN int 3150 LWS_VISIBLE LWS_EXTERN int 3166 LWS_VISIBLE LWS_EXTERN int 3183 LWS_VISIBLE LWS_EXTERN int 3193 LWS_VISIBLE LWS_EXTERN int 3217 LWS_VISIBLE LWS_EXTERN size_t 3231 LWS_VISIBLE LWS_EXTERN int 3243 LWS_VISIBLE LWS_EXTERN void 3263 LWS_VISIBLE LWS_EXTERN size_t 3288 LWS_VISIBLE LWS_EXTERN struct lws * 3312 LWS_VISIBLE LWS_EXTERN struct lws * 3314 const char *readbuf, size_t len); 3333 LWS_VISIBLE LWS_EXTERN const char * LWS_WARN_UNUSED_RESULT 3350 LWS_VISIBLE LWS_EXTERN void 3352 int name_len, char *rip, int rip_len); 3364 LWS_VISIBLE LWS_EXTERN const char * 3378 LWS_VISIBLE LWS_EXTERN int 3401 LWS_VISIBLE LWS_EXTERN int 3410 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT 3417 LWS_VISIBLE LWS_EXTERN const char * LWS_WARN_UNUSED_RESULT 3426 LWS_VISIBLE LWS_EXTERN void * 3440 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT 3441 lws_parse_uri( char *p, const char **prot, const char **ads, int *port, 3447 LWS_VISIBLE LWS_EXTERN unsigned long 3459 LWS_VISIBLE LWS_EXTERN struct lws_context * LWS_WARN_UNUSED_RESULT 3471 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT 3481 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT 3490 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT 3499 LWS_VISIBLE LWS_EXTERN int 3500 lws_read( struct lws *wsi, unsigned char *buf, size_t len); 3509 LWS_VISIBLE LWS_EXTERN void 3525 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT 3532 LWS_VISIBLE LWS_EXTERN int 3539 LWS_VISIBLE LWS_EXTERN unsigned char 3558 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT 3570 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT 3581 LWS_VISIBLE LWS_EXTERN int 3587 LWS_VISIBLE LWS_EXTERN int 3597 #ifdef LWS_SHA1_USE_OPENSSL_NAME 3599 #define lws_SHA1 SHA1 3610 LWS_VISIBLE LWS_EXTERN unsigned char * 3611 lws_SHA1( const unsigned char *d, size_t n, unsigned char *md); 3623 LWS_VISIBLE LWS_EXTERN int 3634 LWS_VISIBLE LWS_EXTERN int 3649 enum lws_enum_stdinouterr { 3655 enum lws_cgi_hdr_state { 3667 enum lws_enum_stdinouterr ch; 3669 enum lws_cgi_hdr_state hdr_state; 3683 LWS_VISIBLE LWS_EXTERN int 3684 lws_cgi( struct lws *wsi, const char * const *exec_array, 3685 int script_uri_path_len, int timeout_secs, 3693 LWS_VISIBLE LWS_EXTERN int 3701 LWS_VISIBLE LWS_EXTERN int 3730 lws_filefd_type (*open)( struct lws *wsi, const char *filename, 3731 unsigned long *filelen, int flags); 3735 int (*close)( struct lws *wsi, lws_filefd_type fd); 3737 unsigned long (*seek_cur)( struct lws *wsi, lws_filefd_type fd, 3738 long offset_from_cur_pos); 3740 int (*read)( struct lws *wsi, lws_filefd_type fd, unsigned long *amount, 3741 unsigned char *buf, unsigned long len); 3743 int (*write)( struct lws *wsi, lws_filefd_type fd, unsigned long *amount, 3744 unsigned char *buf, unsigned long len); 3767 static LWS_INLINE lws_filefd_type LWS_WARN_UNUSED_RESULT 3768 lws_plat_file_open( struct lws *wsi, const char *filename, 3769 unsigned long *filelen, int flags) 3781 static LWS_INLINE int 3782 lws_plat_file_close( struct lws *wsi, lws_filefd_type fd) 3794 static LWS_INLINE unsigned long 3795 lws_plat_file_seek_cur( struct lws *wsi, lws_filefd_type fd, long offset) 3808 static LWS_INLINE int LWS_WARN_UNUSED_RESULT 3809 lws_plat_file_read( struct lws *wsi, lws_filefd_type fd, unsigned long *amount, 3810 unsigned char *buf, unsigned long len) 3824 static LWS_INLINE int LWS_WARN_UNUSED_RESULT 3825 lws_plat_file_write( struct lws *wsi, lws_filefd_type fd, unsigned long *amount, 3826 unsigned char *buf, unsigned long len) 3864 #ifdef LWS_WITH_SMTP 3886 char email_smtp_ip[32]; 3887 char email_helo[32]; 3888 char email_from[100]; 3931 LWS_VISIBLE LWS_EXTERN int 3942 LWS_VISIBLE LWS_EXTERN void 3951 LWS_VISIBLE LWS_EXTERN void
+ Go to the documentation of this file. 24 #ifndef LIBWEBSOCKET_H_3060898B846849FF9F88F5DB59B5950C 25 #define LIBWEBSOCKET_H_3060898B846849FF9F88F5DB59B5950C 31 #include "mbed-drivers/mbed.h" 32 #include "sal-iface-eth/EthernetInterface.h" 33 #include "sockets/TCPListener.h" 34 #include "sal-stack-lwip/lwipv4_init.h" 50 awaiting_on_writeable(0) 55 void set_wsi( struct lws *_wsi) { wsi = _wsi; } 56 int actual_onRX(Socket *s); 58 void onError(Socket *s, socket_error_t err); 59 void onDisconnect(TCPStream *s); 60 void onSent(Socket *s, uint16_t len); 61 void serialized_writeable( struct lws *wsi); 69 char awaiting_on_writeable; 75 srv(SOCKET_STACK_LWIP_IPV4) 77 srv.setOnError(TCPStream::ErrorHandler_t( this, 81 void start( const uint16_t port); 85 void onError(Socket *s, socket_error_t err); 86 void onIncoming(TCPListener *s, void *impl); 87 void onDisconnect(TCPStream *s); 100 #ifdef MBED_OPERATORS 107 #include "lws_config.h" 109 #if defined(WIN32) || defined(_WIN32) 110 #ifndef WIN32_LEAN_AND_MEAN 111 #define WIN32_LEAN_AND_MEAN 114 #include <winsock2.h> 115 #include <ws2tcpip.h> 122 #define _O_RDONLY 0x0000 123 #define O_RDONLY _O_RDONLY 127 #if (defined(_MSC_VER) && _MSC_VER < 1900) || defined(_WIN32_WCE) 128 #define strcasecmp _stricmp 130 #define strcasecmp stricmp 132 #define getdtablesize() 30000 134 #define LWS_INLINE __inline 136 #define LWS_WARN_UNUSED_RESULT 137 #define LWS_WARN_DEPRECATED 141 #define LWS_EXTERN extern __declspec(dllexport) 143 #define LWS_EXTERN extern __declspec(dllimport) 149 #define LWS_INVALID_FILE INVALID_HANDLE_VALUE 150 #define LWS_O_RDONLY _O_RDONLY 152 #if !defined(_MSC_VER) || _MSC_VER < 1900 153 #define snprintf _snprintf 157 #define __func__ __FUNCTION__ 163 #if defined(__NetBSD__) || defined(__FreeBSD__) 164 #include <netinet/in.h> 167 #define LWS_INLINE inline 168 #define LWS_O_RDONLY O_RDONLY 170 #ifndef MBED_OPERATORS 173 #define LWS_INVALID_FILE -1 175 #define getdtablesize() (20) 176 #define LWS_INVALID_FILE NULL 179 #if defined(__GNUC__) 182 #if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) 183 #define LWS_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) 185 #define LWS_WARN_UNUSED_RESULT 188 #define LWS_VISIBLE __attribute__((visibility("default"))) 189 #define LWS_WARN_DEPRECATED __attribute__ ((deprecated)) 192 #define LWS_WARN_UNUSED_RESULT 193 #define LWS_WARN_DEPRECATED 196 #if defined(__ANDROID__) 198 #define getdtablesize() sysconf(_SC_OPEN_MAX) 211 #define LWS_EXTERN extern 217 #include <sys/time.h> 221 #ifdef LWS_OPENSSL_SUPPORT 224 #ifdef USE_OLD_CYASSL 225 #include <cyassl/openssl/ssl.h> 226 #include <cyassl/error-ssl.h> 228 #include <wolfssl/openssl/ssl.h> 229 #include <wolfssl/error-ssl.h> 232 #if defined(LWS_USE_POLARSSL) 233 #include <polarssl/ssl.h> 240 typedef ssl_context SSL; 242 #if defined(LWS_USE_MBEDTLS) 243 #include <mbedtls/ssl.h> 245 #include <openssl/ssl.h> 246 #include <openssl/err.h> 253 #define CONTEXT_PORT_NO_LISTEN -1 267 enum lws_log_levels { 277 LLL_LATENCY = 1 << 9, 282 LWS_VISIBLE LWS_EXTERN void _lws_log( int filter, const char *format, ...); 283 LWS_VISIBLE LWS_EXTERN void _lws_logv( int filter, const char *format, va_list vl); 293 LWS_VISIBLE LWS_EXTERN int 297 #define lwsl_notice(...) _lws_log(LLL_NOTICE, __VA_ARGS__) 298 #define lwsl_warn(...) _lws_log(LLL_WARN, __VA_ARGS__) 299 #define lwsl_err(...) _lws_log(LLL_ERR, __VA_ARGS__) 307 #define lwsl_info(...) _lws_log(LLL_INFO, __VA_ARGS__) 308 #define lwsl_debug(...) _lws_log(LLL_DEBUG, __VA_ARGS__) 309 #define lwsl_parser(...) _lws_log(LLL_PARSER, __VA_ARGS__) 310 #define lwsl_header(...) _lws_log(LLL_HEADER, __VA_ARGS__) 311 #define lwsl_ext(...) _lws_log(LLL_EXT, __VA_ARGS__) 312 #define lwsl_client(...) _lws_log(LLL_CLIENT, __VA_ARGS__) 313 #define lwsl_latency(...) _lws_log(LLL_LATENCY, __VA_ARGS__) 320 LWS_VISIBLE LWS_EXTERN void lwsl_hexdump( void *buf, size_t len); 324 #define lwsl_info(...) {} 325 #define lwsl_debug(...) {} 326 #define lwsl_parser(...) {} 327 #define lwsl_header(...) {} 328 #define lwsl_ext(...) {} 329 #define lwsl_client(...) {} 330 #define lwsl_latency(...) {} 331 #define lwsl_hexdump(a, b) 345 LWS_VISIBLE LWS_EXTERN void 347 void (*log_emit_function)( int level, const char *line)); 358 LWS_VISIBLE LWS_EXTERN void 366 #ifndef lws_container_of 367 #define lws_container_of(P,T,M) ((T *)((char *)(P) - offsetof(T, M))) 373 #define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0])) 378 #define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_ARG 381 #define LWS_FEATURE_PROTOCOLS_HAS_ID_FIELD 384 #define LWS_FEATURE_PROTOCOLS_HAS_PEER_WRITE_ALLOWANCE 387 #define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_LEN 390 #define LWS_FEATURE_FOPS 394 typedef SOCKET lws_sockfd_type; 395 typedef HANDLE lws_filefd_type; 396 #define lws_sockfd_valid(sfd) (!!sfd) 404 #if defined(MBED_OPERATORS) 406 typedef void * lws_sockfd_type; 407 typedef void * lws_filefd_type; 408 #define lws_sockfd_valid(sfd) (!!sfd) 414 #define POLLIN 0x0001 415 #define POLLPRI 0x0002 416 #define POLLOUT 0x0004 417 #define POLLERR 0x0008 418 #define POLLHUP 0x0010 419 #define POLLNVAL 0x0020 423 void * mbed3_create_tcp_stream_socket( void); 424 void mbed3_delete_tcp_stream_socket( void *sockfd); 425 void mbed3_tcp_stream_bind( void *sock, int port, struct lws *); 426 void mbed3_tcp_stream_accept( void *sock, struct lws *); 428 typedef int lws_sockfd_type; 429 typedef int lws_filefd_type; 430 #define lws_sockfd_valid(sfd) (sfd >= 0) 433 #define lws_pollfd pollfd 462 LWS_CLOSE_STATUS_NOSTATUS = 0, 526 LWS_CLOSE_STATUS_NOSTATUS_CONTEXT_DESTROY = 9999, 541 LWS_VISIBLE LWS_EXTERN void 543 unsigned char *buf, size_t len); 876 LWS_CALLBACK_WS_EXT_DEFAULTS = 39, 879 LWS_CALLBACK_CGI = 40, 881 LWS_CALLBACK_CGI_TERMINATED = 41, 883 LWS_CALLBACK_CGI_STDIN_DATA = 42, 885 LWS_CALLBACK_CGI_STDIN_COMPLETED = 43, 887 LWS_CALLBACK_ESTABLISHED_CLIENT_HTTP = 44, 889 LWS_CALLBACK_CLOSED_CLIENT_HTTP = 45, 891 LWS_CALLBACK_RECEIVE_CLIENT_HTTP = 46, 893 LWS_CALLBACK_COMPLETED_CLIENT_HTTP = 47, 895 LWS_CALLBACK_RECEIVE_CLIENT_HTTP_READ = 48, 897 LWS_CALLBACK_HTTP_BIND_PROTOCOL = 49, 899 LWS_CALLBACK_HTTP_DROP_PROTOCOL = 50, 901 LWS_CALLBACK_CHECK_ACCESS_RIGHTS = 51, 903 LWS_CALLBACK_PROCESS_HTML = 52, 905 LWS_CALLBACK_ADD_HEADERS = 53, 907 LWS_CALLBACK_SESSION_INFO = 54, 910 LWS_CALLBACK_GS_EVENT = 55, 938 void *user, void *in, size_t len); 956 enum lws_extension_callback_reasons { 957 LWS_EXT_CB_SERVER_CONTEXT_CONSTRUCT = 0, 958 LWS_EXT_CB_CLIENT_CONTEXT_CONSTRUCT = 1, 959 LWS_EXT_CB_SERVER_CONTEXT_DESTRUCT = 2, 960 LWS_EXT_CB_CLIENT_CONTEXT_DESTRUCT = 3, 961 LWS_EXT_CB_CONSTRUCT = 4, 962 LWS_EXT_CB_CLIENT_CONSTRUCT = 5, 963 LWS_EXT_CB_CHECK_OK_TO_REALLY_CLOSE = 6, 964 LWS_EXT_CB_CHECK_OK_TO_PROPOSE_EXTENSION = 7, 965 LWS_EXT_CB_DESTROY = 8, 966 LWS_EXT_CB_DESTROY_ANY_WSI_CLOSING = 9, 967 LWS_EXT_CB_ANY_WSI_ESTABLISHED = 10, 968 LWS_EXT_CB_PACKET_RX_PREPARSE = 11, 969 LWS_EXT_CB_PACKET_TX_PRESEND = 12, 970 LWS_EXT_CB_PACKET_TX_DO_SEND = 13, 971 LWS_EXT_CB_HANDSHAKE_REPLY_TX = 14, 972 LWS_EXT_CB_FLUSH_PENDING_TX = 15, 973 LWS_EXT_CB_EXTENDED_PAYLOAD_RX = 16, 974 LWS_EXT_CB_CAN_PROXY_CLIENT_CONNECTION = 17, 976 LWS_EXT_CB_REQUEST_ON_WRITEABLE = 19, 977 LWS_EXT_CB_IS_WRITEABLE = 20, 978 LWS_EXT_CB_PAYLOAD_TX = 21, 979 LWS_EXT_CB_PAYLOAD_RX = 22, 980 LWS_EXT_CB_OPTION_DEFAULT = 23, 981 LWS_EXT_CB_OPTION_SET = 24, 982 LWS_EXT_CB_OPTION_CONFIRM = 25, 983 LWS_EXT_CB_NAMED_OPTION_SET = 26, 1081 enum lws_extension_callback_reasons reason, 1082 void *user, void *in, size_t len); 1102 LWS_VISIBLE LWS_EXTERN int 1104 const char *opt_name, const char *opt_val); 1106 #ifndef LWS_NO_EXTENSIONS 1113 static LWS_INLINE LWS_WARN_DEPRECATED const struct lws_extension * 1114 lws_get_internal_extensions() { return NULL; } 1126 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT 1129 const char *o, int len); 1146 struct lws_context *context, const struct lws_extension *ext, 1147 struct lws *wsi, enum lws_extension_callback_reasons reason, 1148 void *user, void *in, size_t len); 1250 LWS_VISIBLE LWS_EXTERN void * 1263 LWS_VISIBLE LWS_EXTERN void * 1274 LWS_VISIBLE LWS_EXTERN int 1277 #ifdef LWS_WITH_PLUGINS 1281 #define LWS_PLUGIN_API_MAGIC 180 1292 typedef int (*lws_plugin_init_func)( struct lws_context *, 1294 typedef int (*lws_plugin_destroy_func)( struct lws_context *); 1299 #if (UV_VERSION_MAJOR > 0) 1323 #define LWSGS_EMAIL_CONTENT_SIZE 16384 1439 #define lws_check_opt(c, f) (((c) & (f)) == (f)) 1515 #ifdef LWS_OPENSSL_SUPPORT 1630 LWS_VISIBLE LWS_EXTERN struct lws_context * 1641 LWS_VISIBLE LWS_EXTERN void 1661 LWS_VISIBLE LWS_EXTERN int 1676 LWS_EXTERN LWS_VISIBLE struct lws_vhost * 1694 LWS_VISIBLE LWS_EXTERN int 1696 char **config_strings, int *len); 1713 LWS_VISIBLE LWS_EXTERN int 1716 char **config_strings, int *len); 1719 LWS_VISIBLE LWS_EXTERN struct lws_vhost * 1727 LWS_VISIBLE LWS_EXTERN struct lws_vhost * 1737 LWS_VISIBLE LWS_EXTERN int 1747 LWS_VISIBLE LWS_EXTERN int 1759 LWS_VISIBLE LWS_EXTERN void * 1827 unsigned int cache_reusable:1; 1828 unsigned int cache_revalidate:1; 1829 unsigned int cache_intermediaries:1; 1914 LWS_VISIBLE LWS_EXTERN struct lws * 1938 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT 1940 int port, int ssl_connection, const char *path, 1941 const char *host, const char *origin, const char *protocol, 1942 int ietf_version_or_minus_one) LWS_WARN_DEPRECATED; 1964 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT 1966 int port, int ssl_connection, const char *path, 1967 const char *host, const char *origin, 1968 const char *protocol, int ietf_version_or_minus_one, 1969 void *userdata) LWS_WARN_DEPRECATED; 1996 LWS_VISIBLE LWS_EXTERN int 1998 struct lws_vhost *vhost); 2000 LWS_VISIBLE LWS_EXTERN int 2001 lws_http_client_read( struct lws *wsi, char **buf, int *len); 2044 LWS_VISIBLE LWS_EXTERN int 2045 lws_service( struct lws_context *context, int timeout_ms); 2058 LWS_VISIBLE LWS_EXTERN int 2059 lws_service_tsi( struct lws_context *context, int timeout_ms, int tsi); 2076 LWS_VISIBLE LWS_EXTERN void 2090 LWS_VISIBLE LWS_EXTERN void 2115 LWS_VISIBLE LWS_EXTERN int 2127 LWS_VISIBLE LWS_EXTERN int 2157 LWS_VISIBLE LWS_EXTERN const char * 2178 LWS_VISIBLE LWS_EXTERN int 2180 const char *other_headers, int other_headers_len); 2181 LWS_VISIBLE LWS_EXTERN int 2182 lws_serve_http_file_fragment( struct lws *wsi); 2197 HTTP_STATUS_OK = 200, 2198 HTTP_STATUS_NO_CONTENT = 204, 2200 HTTP_STATUS_MOVED_PERMANENTLY = 301, 2201 HTTP_STATUS_FOUND = 302, 2202 HTTP_STATUS_SEE_OTHER = 303, 2204 HTTP_STATUS_BAD_REQUEST = 400, 2205 HTTP_STATUS_UNAUTHORIZED, 2206 HTTP_STATUS_PAYMENT_REQUIRED, 2207 HTTP_STATUS_FORBIDDEN, 2208 HTTP_STATUS_NOT_FOUND, 2209 HTTP_STATUS_METHOD_NOT_ALLOWED, 2210 HTTP_STATUS_NOT_ACCEPTABLE, 2211 HTTP_STATUS_PROXY_AUTH_REQUIRED, 2212 HTTP_STATUS_REQUEST_TIMEOUT, 2213 HTTP_STATUS_CONFLICT, 2215 HTTP_STATUS_LENGTH_REQUIRED, 2216 HTTP_STATUS_PRECONDITION_FAILED, 2217 HTTP_STATUS_REQ_ENTITY_TOO_LARGE, 2218 HTTP_STATUS_REQ_URI_TOO_LONG, 2219 HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE, 2220 HTTP_STATUS_REQ_RANGE_NOT_SATISFIABLE, 2221 HTTP_STATUS_EXPECTATION_FAILED, 2223 HTTP_STATUS_INTERNAL_SERVER_ERROR = 500, 2224 HTTP_STATUS_NOT_IMPLEMENTED, 2225 HTTP_STATUS_BAD_GATEWAY, 2226 HTTP_STATUS_SERVICE_UNAVAILABLE, 2227 HTTP_STATUS_GATEWAY_TIMEOUT, 2228 HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED, 2238 typedef const char *(*lws_process_html_state_cb)( void *data, int index); 2255 LWS_VISIBLE LWS_EXTERN int 2311 enum lws_token_indexes { 2312 WSI_TOKEN_GET_URI = 0, 2313 WSI_TOKEN_POST_URI = 1, 2314 WSI_TOKEN_OPTIONS_URI = 2, 2316 WSI_TOKEN_CONNECTION = 4, 2317 WSI_TOKEN_UPGRADE = 5, 2318 WSI_TOKEN_ORIGIN = 6, 2319 WSI_TOKEN_DRAFT = 7, 2320 WSI_TOKEN_CHALLENGE = 8, 2321 WSI_TOKEN_EXTENSIONS = 9, 2322 WSI_TOKEN_KEY1 = 10, 2323 WSI_TOKEN_KEY2 = 11, 2324 WSI_TOKEN_PROTOCOL = 12, 2325 WSI_TOKEN_ACCEPT = 13, 2326 WSI_TOKEN_NONCE = 14, 2327 WSI_TOKEN_HTTP = 15, 2328 WSI_TOKEN_HTTP2_SETTINGS = 16, 2329 WSI_TOKEN_HTTP_ACCEPT = 17, 2330 WSI_TOKEN_HTTP_AC_REQUEST_HEADERS = 18, 2331 WSI_TOKEN_HTTP_IF_MODIFIED_SINCE = 19, 2332 WSI_TOKEN_HTTP_IF_NONE_MATCH = 20, 2333 WSI_TOKEN_HTTP_ACCEPT_ENCODING = 21, 2334 WSI_TOKEN_HTTP_ACCEPT_LANGUAGE = 22, 2335 WSI_TOKEN_HTTP_PRAGMA = 23, 2336 WSI_TOKEN_HTTP_CACHE_CONTROL = 24, 2337 WSI_TOKEN_HTTP_AUTHORIZATION = 25, 2338 WSI_TOKEN_HTTP_COOKIE = 26, 2339 WSI_TOKEN_HTTP_CONTENT_LENGTH = 27, 2340 WSI_TOKEN_HTTP_CONTENT_TYPE = 28, 2341 WSI_TOKEN_HTTP_DATE = 29, 2342 WSI_TOKEN_HTTP_RANGE = 30, 2343 WSI_TOKEN_HTTP_REFERER = 31, 2345 WSI_TOKEN_VERSION = 33, 2346 WSI_TOKEN_SWORIGIN = 34, 2348 WSI_TOKEN_HTTP_COLON_AUTHORITY = 35, 2349 WSI_TOKEN_HTTP_COLON_METHOD = 36, 2350 WSI_TOKEN_HTTP_COLON_PATH = 37, 2351 WSI_TOKEN_HTTP_COLON_SCHEME = 38, 2352 WSI_TOKEN_HTTP_COLON_STATUS = 39, 2354 WSI_TOKEN_HTTP_ACCEPT_CHARSET = 40, 2355 WSI_TOKEN_HTTP_ACCEPT_RANGES = 41, 2356 WSI_TOKEN_HTTP_ACCESS_CONTROL_ALLOW_ORIGIN = 42, 2357 WSI_TOKEN_HTTP_AGE = 43, 2358 WSI_TOKEN_HTTP_ALLOW = 44, 2359 WSI_TOKEN_HTTP_CONTENT_DISPOSITION = 45, 2360 WSI_TOKEN_HTTP_CONTENT_ENCODING = 46, 2361 WSI_TOKEN_HTTP_CONTENT_LANGUAGE = 47, 2362 WSI_TOKEN_HTTP_CONTENT_LOCATION = 48, 2363 WSI_TOKEN_HTTP_CONTENT_RANGE = 49, 2364 WSI_TOKEN_HTTP_ETAG = 50, 2365 WSI_TOKEN_HTTP_EXPECT = 51, 2366 WSI_TOKEN_HTTP_EXPIRES = 52, 2367 WSI_TOKEN_HTTP_FROM = 53, 2368 WSI_TOKEN_HTTP_IF_MATCH = 54, 2369 WSI_TOKEN_HTTP_IF_RANGE = 55, 2370 WSI_TOKEN_HTTP_IF_UNMODIFIED_SINCE = 56, 2371 WSI_TOKEN_HTTP_LAST_MODIFIED = 57, 2372 WSI_TOKEN_HTTP_LINK = 58, 2373 WSI_TOKEN_HTTP_LOCATION = 59, 2374 WSI_TOKEN_HTTP_MAX_FORWARDS = 60, 2375 WSI_TOKEN_HTTP_PROXY_AUTHENTICATE = 61, 2376 WSI_TOKEN_HTTP_PROXY_AUTHORIZATION = 62, 2377 WSI_TOKEN_HTTP_REFRESH = 63, 2378 WSI_TOKEN_HTTP_RETRY_AFTER = 64, 2379 WSI_TOKEN_HTTP_SERVER = 65, 2380 WSI_TOKEN_HTTP_SET_COOKIE = 66, 2381 WSI_TOKEN_HTTP_STRICT_TRANSPORT_SECURITY = 67, 2382 WSI_TOKEN_HTTP_TRANSFER_ENCODING = 68, 2383 WSI_TOKEN_HTTP_USER_AGENT = 69, 2384 WSI_TOKEN_HTTP_VARY = 70, 2385 WSI_TOKEN_HTTP_VIA = 71, 2386 WSI_TOKEN_HTTP_WWW_AUTHENTICATE = 72, 2388 WSI_TOKEN_PATCH_URI = 73, 2389 WSI_TOKEN_PUT_URI = 74, 2390 WSI_TOKEN_DELETE_URI = 75, 2392 WSI_TOKEN_HTTP_URI_ARGS = 76, 2393 WSI_TOKEN_PROXY = 77, 2394 WSI_TOKEN_HTTP_X_REAL_IP = 78, 2395 WSI_TOKEN_HTTP1_0 = 79, 2402 _WSI_TOKEN_CLIENT_SENT_PROTOCOLS, 2403 _WSI_TOKEN_CLIENT_PEER_ADDRESS, 2404 _WSI_TOKEN_CLIENT_URI, 2405 _WSI_TOKEN_CLIENT_HOST, 2406 _WSI_TOKEN_CLIENT_ORIGIN, 2407 _WSI_TOKEN_CLIENT_METHOD, 2413 WSI_TOKEN_NAME_PART, 2415 WSI_TOKEN_SKIPPING_SAW_CR, 2416 WSI_PARSING_COMPLETE, 2417 WSI_INIT_TOKEN_MUXURL, 2421 unsigned short token_limit[WSI_TOKEN_COUNT]; 2429 LWS_VISIBLE LWS_EXTERN const unsigned char * 2441 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT 2453 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT 2469 LWS_VISIBLE LWS_EXTERN int 2470 lws_hdr_copy( struct lws *wsi, char *dest, int len, enum lws_token_indexes h); 2489 LWS_VISIBLE LWS_EXTERN int 2491 enum lws_token_indexes h, int frag_idx); 2503 LWS_VISIBLE LWS_EXTERN const char * 2532 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT 2534 unsigned int code, unsigned char **p, 2535 unsigned char *end); 2548 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT 2550 const unsigned char *value, int length, 2551 unsigned char **p, unsigned char *end); 2565 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT 2567 const unsigned char *value, int length, 2568 unsigned char **p, unsigned char *end); 2579 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT 2581 unsigned long content_length, 2582 unsigned char **p, unsigned char *end); 2592 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT 2594 unsigned char *end); 2641 const char *filename, char *buf, int len, 2666 LWS_VISIBLE LWS_EXTERN struct lws_spa * 2678 LWS_VISIBLE LWS_EXTERN int 2686 LWS_VISIBLE LWS_EXTERN int 2695 LWS_VISIBLE LWS_EXTERN int 2703 LWS_VISIBLE LWS_EXTERN const char * 2711 LWS_VISIBLE LWS_EXTERN int 2736 LWS_VISIBLE LWS_EXTERN const char * 2757 LWS_VISIBLE LWS_EXTERN int 2769 LWS_VISIBLE LWS_EXTERN int 2771 const char *html_body); 2783 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT 2785 unsigned char **p, unsigned char *end); 2795 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT 2817 LWS_VISIBLE LWS_EXTERN const char * 2830 LWS_VISIBLE LWS_EXTERN const char * 2842 #ifdef LWS_USE_LIBEV 2843 typedef void (lws_ev_signal_cb_t)(EV_P_ struct ev_signal *w, int revents); 2845 LWS_VISIBLE LWS_EXTERN int 2846 lws_ev_sigint_cfg( struct lws_context *context, int use_ev_sigint, 2847 lws_ev_signal_cb_t *cb); 2849 LWS_VISIBLE LWS_EXTERN int 2850 lws_ev_initloop( struct lws_context *context, struct ev_loop *loop, int tsi); 2852 LWS_VISIBLE LWS_EXTERN void 2853 lws_ev_sigint_cb( struct ev_loop *loop, struct ev_signal *watcher, int revents); 2864 #ifdef LWS_USE_LIBUV 2866 LWS_VISIBLE LWS_EXTERN int 2867 lws_uv_sigint_cfg( struct lws_context *context, int use_uv_sigint, 2870 LWS_VISIBLE LWS_EXTERN void 2871 lws_libuv_run( const struct lws_context *context, int tsi); 2873 LWS_VISIBLE LWS_EXTERN void 2874 lws_libuv_stop( struct lws_context *context); 2876 LWS_VISIBLE LWS_EXTERN int 2877 lws_uv_initloop( struct lws_context *context, uv_loop_t *loop, int tsi); 2879 LWS_VISIBLE LWS_EXTERN uv_loop_t * 2880 lws_uv_getloop( struct lws_context *context, int tsi); 2882 LWS_VISIBLE LWS_EXTERN void 2883 lws_uv_sigint_cb(uv_signal_t *watcher, int signum); 2897 enum pending_timeout { 2898 NO_PENDING_TIMEOUT = 0, 2899 PENDING_TIMEOUT_AWAITING_PROXY_RESPONSE = 1, 2900 PENDING_TIMEOUT_AWAITING_CONNECT_RESPONSE = 2, 2901 PENDING_TIMEOUT_ESTABLISH_WITH_SERVER = 3, 2902 PENDING_TIMEOUT_AWAITING_SERVER_RESPONSE = 4, 2903 PENDING_TIMEOUT_AWAITING_PING = 5, 2904 PENDING_TIMEOUT_CLOSE_ACK = 6, 2905 PENDING_TIMEOUT_AWAITING_EXTENSION_CONNECT_RESPONSE = 7, 2906 PENDING_TIMEOUT_SENT_CLIENT_HANDSHAKE = 8, 2907 PENDING_TIMEOUT_SSL_ACCEPT = 9, 2908 PENDING_TIMEOUT_HTTP_CONTENT = 10, 2909 PENDING_TIMEOUT_AWAITING_CLIENT_HS_SEND = 11, 2910 PENDING_FLUSH_STORED_SEND_BEFORE_CLOSE = 12, 2911 PENDING_TIMEOUT_SHUTDOWN_FLUSH = 13, 2912 PENDING_TIMEOUT_CGI = 14, 2913 PENDING_TIMEOUT_HTTP_KEEPALIVE_IDLE = 15, 2927 LWS_VISIBLE LWS_EXTERN void 2928 lws_set_timeout( struct lws *wsi, enum pending_timeout reason, int secs); 2936 #if !defined(LWS_SIZEOFPTR) 2937 #define LWS_SIZEOFPTR (sizeof (void *)) 2939 #if !defined(u_int64_t) 2940 #define u_int64_t unsigned long long 2943 #if defined(__x86_64__) 2944 #define _LWS_PAD_SIZE 16 2946 #define _LWS_PAD_SIZE LWS_SIZEOFPTR 2948 #define _LWS_PAD(n) (((n) % _LWS_PAD_SIZE) ? \ 2949 ((n) + (_LWS_PAD_SIZE - ((n) % _LWS_PAD_SIZE))) : (n)) 2950 #define LWS_PRE _LWS_PAD(4 + 10) 2952 #define LWS_SEND_BUFFER_PRE_PADDING LWS_PRE 2953 #define LWS_SEND_BUFFER_POST_PADDING 0 2978 LWS_WRITE_HTTP_FINAL = 7, 3074 LWS_VISIBLE LWS_EXTERN int 3075 lws_write( struct lws *wsi, unsigned char *buf, size_t len, 3079 #define lws_write_http(wsi, buf, len) \ 3080 lws_write(wsi, (unsigned char *)(buf), len, LWS_WRITE_HTTP) 3115 LWS_VISIBLE LWS_EXTERN int 3131 LWS_VISIBLE LWS_EXTERN int 3148 LWS_VISIBLE LWS_EXTERN int 3164 LWS_VISIBLE LWS_EXTERN int 3180 LWS_VISIBLE LWS_EXTERN int 3197 LWS_VISIBLE LWS_EXTERN int 3207 LWS_VISIBLE LWS_EXTERN int 3231 LWS_VISIBLE LWS_EXTERN size_t 3245 LWS_VISIBLE LWS_EXTERN int 3257 LWS_VISIBLE LWS_EXTERN void 3277 LWS_VISIBLE LWS_EXTERN size_t 3302 LWS_VISIBLE LWS_EXTERN struct lws * 3326 LWS_VISIBLE LWS_EXTERN struct lws * 3328 const char *readbuf, size_t len); 3347 LWS_VISIBLE LWS_EXTERN const char * LWS_WARN_UNUSED_RESULT 3364 LWS_VISIBLE LWS_EXTERN void 3366 int name_len, char *rip, int rip_len); 3378 LWS_VISIBLE LWS_EXTERN const char * 3392 LWS_VISIBLE LWS_EXTERN int 3415 LWS_VISIBLE LWS_EXTERN int 3424 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT 3431 LWS_VISIBLE LWS_EXTERN const char * LWS_WARN_UNUSED_RESULT 3440 LWS_VISIBLE LWS_EXTERN void * 3454 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT 3455 lws_parse_uri( char *p, const char **prot, const char **ads, int *port, 3461 LWS_VISIBLE LWS_EXTERN unsigned long 3473 LWS_VISIBLE LWS_EXTERN struct lws_context * LWS_WARN_UNUSED_RESULT 3485 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT 3495 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT 3504 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT 3513 LWS_VISIBLE LWS_EXTERN int 3514 lws_read( struct lws *wsi, unsigned char *buf, size_t len); 3523 LWS_VISIBLE LWS_EXTERN void 3539 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT 3546 LWS_VISIBLE LWS_EXTERN int 3553 LWS_VISIBLE LWS_EXTERN unsigned char 3572 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT 3584 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT 3595 LWS_VISIBLE LWS_EXTERN int 3601 LWS_VISIBLE LWS_EXTERN int 3611 #ifdef LWS_SHA1_USE_OPENSSL_NAME 3613 #define lws_SHA1 SHA1 3624 LWS_VISIBLE LWS_EXTERN unsigned char * 3625 lws_SHA1( const unsigned char *d, size_t n, unsigned char *md); 3637 LWS_VISIBLE LWS_EXTERN int 3648 LWS_VISIBLE LWS_EXTERN int 3663 enum lws_enum_stdinouterr { 3669 enum lws_cgi_hdr_state { 3681 enum lws_enum_stdinouterr ch; 3683 enum lws_cgi_hdr_state hdr_state; 3697 LWS_VISIBLE LWS_EXTERN int 3698 lws_cgi( struct lws *wsi, const char * const *exec_array, 3699 int script_uri_path_len, int timeout_secs, 3707 LWS_VISIBLE LWS_EXTERN int 3715 LWS_VISIBLE LWS_EXTERN int 3744 lws_filefd_type (*open)( struct lws *wsi, const char *filename, 3745 unsigned long *filelen, int flags); 3749 int (*close)( struct lws *wsi, lws_filefd_type fd); 3751 unsigned long (*seek_cur)( struct lws *wsi, lws_filefd_type fd, 3752 long offset_from_cur_pos); 3754 int (*read)( struct lws *wsi, lws_filefd_type fd, unsigned long *amount, 3755 unsigned char *buf, unsigned long len); 3757 int (*write)( struct lws *wsi, lws_filefd_type fd, unsigned long *amount, 3758 unsigned char *buf, unsigned long len); 3781 static LWS_INLINE lws_filefd_type LWS_WARN_UNUSED_RESULT 3782 lws_plat_file_open( struct lws *wsi, const char *filename, 3783 unsigned long *filelen, int flags) 3795 static LWS_INLINE int 3796 lws_plat_file_close( struct lws *wsi, lws_filefd_type fd) 3808 static LWS_INLINE unsigned long 3809 lws_plat_file_seek_cur( struct lws *wsi, lws_filefd_type fd, long offset) 3822 static LWS_INLINE int LWS_WARN_UNUSED_RESULT 3823 lws_plat_file_read( struct lws *wsi, lws_filefd_type fd, unsigned long *amount, 3824 unsigned char *buf, unsigned long len) 3838 static LWS_INLINE int LWS_WARN_UNUSED_RESULT 3839 lws_plat_file_write( struct lws *wsi, lws_filefd_type fd, unsigned long *amount, 3840 unsigned char *buf, unsigned long len) 3878 #ifdef LWS_WITH_SMTP 3900 char email_smtp_ip[32]; 3901 char email_helo[32]; 3902 char email_from[100]; 3945 LWS_VISIBLE LWS_EXTERN int 3956 LWS_VISIBLE LWS_EXTERN void 3965 LWS_VISIBLE LWS_EXTERN void
LWS_VISIBLE LWS_EXTERN const char * lws_json_purify(char *escaped, const char *string, int len)
- Definition: libwebsockets.h:3665
+ Definition: libwebsockets.h:3679
size_t rx_buffer_size Definition: libwebsockets.h:1188
LWS_VISIBLE LWS_EXTERN struct lws_vhost * lws_vhost_get(struct lws *wsi) LWS_WARN_DEPRECATED
@@ -82,15 +82,15 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
Definition: libwebsockets.h:806
LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_daemonize(const char *_lock_path)
Definition: libwebsockets.h:1789
- Definition: libwebsockets.h:2956
- Definition: libwebsockets.h:3870
+ Definition: libwebsockets.h:2970
+ Definition: libwebsockets.h:3884
LWS_VISIBLE LWS_EXTERN struct lws * lws_adopt_socket_readbuf(struct lws_context *context, lws_sockfd_type accept_fd, const char *readbuf, size_t len)
unsigned int auth_mask Definition: libwebsockets.h:1824
- Definition: libwebsockets.h:2979
- void * data Definition: libwebsockets.h:3881
+ Definition: libwebsockets.h:2993
+ void * data Definition: libwebsockets.h:3895
const char * uri_replace_from Definition: libwebsockets.h:1877
- int(* write)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount, unsigned char *buf, unsigned long len) Definition: libwebsockets.h:3743
+ int(* write)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount, unsigned char *buf, unsigned long len) Definition: libwebsockets.h:3757
lws_callback_reasons Definition: libwebsockets.h:571
Definition: libwebsockets.h:721
@@ -109,7 +109,7 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
LWS_VISIBLE LWS_EXTERN size_t lws_get_peer_write_allowance(struct lws *wsi)
Definition: libwebsockets.h:655
LWS_VISIBLE LWS_EXTERN const char *LWS_WARN_UNUSED_RESULT lws_get_library_version(void)
- int(* on_sent)(struct lws_email *email) Definition: libwebsockets.h:3901
+ int(* on_sent)(struct lws_email *email) Definition: libwebsockets.h:3915
Definition: libwebsockets.h:1328
struct lws ** pwsi Definition: libwebsockets.h:1884
Definition: libwebsockets.h:689
@@ -118,24 +118,25 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
Definition: libwebsockets.h:490
Definition: libwebsockets.h:1284
LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_ext_parse_options(const struct lws_extension *ext, struct lws *wsi, void *ext_user, const struct lws_ext_options *opts, const char *o, int len)
- time_t email_connect_started Definition: libwebsockets.h:3917
+ time_t email_connect_started Definition: libwebsockets.h:3931
lws_close_status Definition: libwebsockets.h:461
LWS_VISIBLE LWS_EXTERN int lws_callback_all_protocol(struct lws_context *context, const struct lws_protocols *protocol, int reason)
Definition: libwebsockets.h:501
Definition: libwebsockets.h:1388
- int token_len Definition: libwebsockets.h:2288
+ int token_len Definition: libwebsockets.h:2302
const struct lws_http_mount * mounts Definition: libwebsockets.h:1564
Definition: libwebsockets.h:830
LWS_VISIBLE LWS_EXTERN struct lws_context *LWS_WARN_UNUSED_RESULT lws_get_context(const struct lws *wsi)
const char * value Definition: libwebsockets.h:1778
-
- Definition: libwebsockets.h:3875
+
+ Definition: libwebsockets.h:3889
const char * username Definition: libwebsockets.h:1359
LWS_VISIBLE LWS_EXTERN struct lws * lws_client_connect_via_info(struct lws_client_connect_info *ccinfo)
const char * protocol Definition: libwebsockets.h:1808
- struct lws ** stdwsi Definition: libwebsockets.h:3666
+ struct lws ** stdwsi Definition: libwebsockets.h:3680
LWS_VISIBLE LWS_EXTERN int lws_json_dump_vhost(const struct lws_vhost *vh, char *buf, int len)
Definition: libwebsockets.h:776
+ LWS_VISIBLE LWS_EXTERN const char * lws_get_mimetype(const char *file, const struct lws_http_mount *m)
Definition: libwebsockets.h:1330
int cache_max_age Definition: libwebsockets.h:1822
long ssl_options_clear Definition: libwebsockets.h:1582
@@ -143,10 +144,10 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
Definition: libwebsockets.h:1450
LWS_VISIBLE LWS_EXTERN void lws_context_destroy(struct lws_context *context)
Definition: libwebsockets.h:517
- char * start Definition: libwebsockets.h:2227
+ char * start Definition: libwebsockets.h:2241
LWS_VISIBLE LWS_EXTERN void lws_set_allocator(void *(*realloc)(void *ptr, size_t size))
lws_callback_function * callback Definition: libwebsockets.h:1179
- Definition: libwebsockets.h:2946
+ Definition: libwebsockets.h:2960
LWS_VISIBLE LWS_EXTERN int lws_get_socket_fd(struct lws *wsi)
Definition: libwebsockets.h:867
Definition: libwebsockets.h:859
@@ -154,22 +155,22 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
Definition: libwebsockets.h:856
unsigned int pt_serv_buf_size Definition: libwebsockets.h:1569
LWS_VISIBLE LWS_EXTERN struct lws * lws_adopt_socket(struct lws_context *context, lws_sockfd_type accept_fd)
- int len Definition: libwebsockets.h:2219
+ int len Definition: libwebsockets.h:2233
int ka_time Definition: libwebsockets.h:1505
Definition: libwebsockets.h:1404
LWS_VISIBLE LWS_EXTERN int lws_callback_on_writable_all_protocol(const struct lws_context *context, const struct lws_protocols *protocol)
LWS_VISIBLE LWS_EXTERN void lws_set_log_level(int level, void(*log_emit_function)(int level, const char *line))
int count_extensions Definition: libwebsockets.h:1289
- Definition: libwebsockets.h:2950
+ Definition: libwebsockets.h:2964
int port Definition: libwebsockets.h:1852
struct lws_context * context Definition: libwebsockets.h:1848
Definition: libwebsockets.h:1336
int ietf_version_or_minus_one Definition: libwebsockets.h:1864
LWS_VISIBLE LWS_EXTERN int lws_callback_all_protocol_vhost(struct lws_vhost *vh, const struct lws_protocols *protocol, int reason)
- Definition: libwebsockets.h:3868
+ Definition: libwebsockets.h:3882
Definition: libwebsockets.h:1774
LWS_VISIBLE LWS_EXTERN int lws_callback_on_writable(struct lws *wsi)
- const char *const * vars Definition: libwebsockets.h:2231
+ const char *const * vars Definition: libwebsockets.h:2245
Definition: libwebsockets.h:469
Definition: libwebsockets.h:1847
int lws_extension_callback_function(struct lws_context *context, const struct lws_extension *ext, struct lws *wsi, enum lws_extension_callback_reasons reason, void *user, void *in, size_t len) Definition: libwebsockets.h:1079
@@ -196,17 +197,17 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
Definition: libwebsockets.h:627
Definition: libwebsockets.h:814
LWS_VISIBLE LWS_EXTERN int lws_service_tsi(struct lws_context *context, int timeout_ms, int tsi)
- unsigned char * data Definition: libwebsockets.h:3668
+ unsigned char * data Definition: libwebsockets.h:3682
const struct lws_protocol_vhost_options * extra_mimetypes Definition: libwebsockets.h:1815
Definition: libwebsockets.h:620
LWS_VISIBLE LWS_EXTERN const char * lws_urlencode(char *escaped, const char *string, int len)
Definition: libwebsockets.h:701
- uv_loop_t * loop Definition: libwebsockets.h:3883
+ uv_loop_t * loop Definition: libwebsockets.h:3897
Definition: libwebsockets.h:799
Definition: libwebsockets.h:72
- Definition: libwebsockets.h:2982
- int pos Definition: libwebsockets.h:2229
+ Definition: libwebsockets.h:2996
+ int pos Definition: libwebsockets.h:2243
struct lws_plugin * list Definition: libwebsockets.h:1298
LWS_VISIBLE LWS_EXTERN struct lws *LWS_WARN_UNUSED_RESULT lws_client_connect_extended(struct lws_context *clients, const char *address, int port, int ssl_connection, const char *path, const char *host, const char *origin, const char *protocol, int ietf_version_or_minus_one, void *userdata) LWS_WARN_DEPRECATED
short max_http_header_data Definition: libwebsockets.h:1525
@@ -230,7 +231,7 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
unsigned char origin_protocol Definition: libwebsockets.h:1831
const char * log_filepath Definition: libwebsockets.h:1561
Definition: libwebsockets.h:676
- unsigned int max_content_size Definition: libwebsockets.h:3891
+ unsigned int max_content_size Definition: libwebsockets.h:3905
int option_index Definition: libwebsockets.h:1013
LWS_VISIBLE LWS_EXTERN struct lws *LWS_WARN_UNUSED_RESULT lws_get_child(const struct lws *wsi)
@@ -238,7 +239,7 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
const char * uri_replace_to Definition: libwebsockets.h:1880
struct lws * parent_wsi Definition: libwebsockets.h:1873
LWS_VISIBLE LWS_EXTERN int lws_b64_decode_string(const char *in, char *out, int out_size)
- enum lwsgs_smtp_states estate Definition: libwebsockets.h:3914
+ enum lwsgs_smtp_states estate Definition: libwebsockets.h:3928
Definition: libwebsockets.h:572
LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_get_count_threads(struct lws_context *context)
@@ -246,26 +247,26 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
char name[64] Definition: libwebsockets.h:1304
LWS_VISIBLE LWS_EXTERN int lws_cgi_kill(struct lws *wsi)
- char email_buf[256] Definition: libwebsockets.h:3918
+ char email_buf[256] Definition: libwebsockets.h:3932
LWS_VISIBLE LWS_EXTERN int lws_is_ssl(struct lws *wsi)
Definition: libwebsockets.h:1393
- int(* close)(struct lws *wsi, lws_filefd_type fd) Definition: libwebsockets.h:3735
+ int(* close)(struct lws *wsi, lws_filefd_type fd) Definition: libwebsockets.h:3749
uv_lib_t lib Definition: libwebsockets.h:1300
LWS_VISIBLE LWS_EXTERN void lws_get_peer_addresses(struct lws *wsi, lws_sockfd_type fd, char *name, int name_len, char *rip, int rip_len)
- Definition: libwebsockets.h:3869
+ Definition: libwebsockets.h:3883
LWS_VISIBLE LWS_EXTERN int lws_is_cgi(struct lws *wsi)
int ssl_connection Definition: libwebsockets.h:1854
Definition: libwebsockets.h:1352
SSL_CTX * provided_client_ssl_ctx Definition: libwebsockets.h:1516
LWS_VISIBLE LWS_EXTERN int lws_rx_flow_control(struct lws *wsi, int enable)
- Definition: libwebsockets.h:2217
+ Definition: libwebsockets.h:2231
LWS_VISIBLE LWS_EXTERN struct lws_plat_file_ops *LWS_WARN_UNUSED_RESULT lws_get_fops(struct lws_context *context)
Definition: libwebsockets.h:438
const struct lws_protocol_vhost_options * cgienv Definition: libwebsockets.h:1811
const char * name Definition: libwebsockets.h:1777
unsigned char mountpoint_len Definition: libwebsockets.h:1832
- Definition: libwebsockets.h:2953
+ Definition: libwebsockets.h:2967
Definition: libwebsockets.h:1411
lws_sockfd_type fd Definition: libwebsockets.h:398
Definition: libwebsockets.h:1788
@@ -306,15 +307,15 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
Definition: libwebsockets.h:1421
LWS_VISIBLE LWS_EXTERN int lwsl_timestamp(int level, char *p, int len)
Definition: libwebsockets.h:1433
- uv_timer_t timeout_email Definition: libwebsockets.h:3913
+ uv_timer_t timeout_email Definition: libwebsockets.h:3927
Definition: libwebsockets.h:1402
short max_http_header_pool Definition: libwebsockets.h:1528
LWS_VISIBLE LWS_EXTERN int lws_chunked_html_process(struct lws_process_html_args *args, struct lws_process_html_state *s)
- char * p Definition: libwebsockets.h:2218
+ char * p Definition: libwebsockets.h:2232
size_t per_session_data_size Definition: libwebsockets.h:1183
Definition: libwebsockets.h:479
- lwsgs_smtp_states Definition: libwebsockets.h:3867
+ lwsgs_smtp_states Definition: libwebsockets.h:3881
Definition: libwebsockets.h:1414
Definition: libwebsockets.h:752
Definition: libwebsockets.h:638
@@ -325,7 +326,7 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
const char * email Definition: libwebsockets.h:1360
LWS_VISIBLE LWS_EXTERN int lws_get_random(struct lws_context *context, void *buf, int len)
Definition: libwebsockets.h:466
- uv_connect_t email_connect_req Definition: libwebsockets.h:3915
+ uv_connect_t email_connect_req Definition: libwebsockets.h:3929
const char * server_string Definition: libwebsockets.h:1566
Definition: libwebsockets.h:1426
SHORT events Definition: libwebsockets.h:399
@@ -343,12 +344,12 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
int ka_interval Definition: libwebsockets.h:1512
Definition: libwebsockets.h:1334
int uid Definition: libwebsockets.h:1498
-
+
LWS_VISIBLE LWS_EXTERN int lws_b64_encode_string(const char *in, int in_len, char *out, int out_size)
LWS_VISIBLE LWS_EXTERN void * lws_context_user(struct lws_context *context)
const char * name Definition: libwebsockets.h:1176
LWS_VISIBLE LWS_EXTERN int lws_init_vhost_client_ssl(const struct lws_context_creation_info *info, struct lws_vhost *vhost)
- Definition: libwebsockets.h:3873
+ Definition: libwebsockets.h:3887
unsigned int http_proxy_port Definition: libwebsockets.h:1494
LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_partial_buffered(struct lws *wsi)
unsigned int timeout_secs Definition: libwebsockets.h:1541
@@ -361,36 +362,36 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
int keepalive_timeout Definition: libwebsockets.h:1558
Definition: libwebsockets.h:1341
Definition: libwebsockets.h:1002
- Definition: libwebsockets.h:2406
+ Definition: libwebsockets.h:2420
LWS_VISIBLE LWS_EXTERN int lws_write(struct lws *wsi, unsigned char *buf, size_t len, enum lws_write_protocol protocol)
const struct lws_protocol_vhost_options * pvo Definition: libwebsockets.h:1555
const char * host Definition: libwebsockets.h:1858
Definition: libwebsockets.h:1011
Definition: libwebsockets.h:505
LWS_VISIBLE LWS_EXTERN const struct lws_protocols * lws_vhost_name_to_protocol(struct lws_vhost *vh, const char *name)
- int len Definition: libwebsockets.h:3670
+ int len Definition: libwebsockets.h:3684
struct lws_http_mount * mount_next Definition: libwebsockets.h:1800
const char * iface Definition: libwebsockets.h:1456
- Definition: libwebsockets.h:3729
+ Definition: libwebsockets.h:3743
LWS_VISIBLE LWS_EXTERN void lwsl_hexdump(void *buf, size_t len)
-
+
LWS_VISIBLE LWS_EXTERN int lws_service_fd(struct lws_context *context, struct lws_pollfd *pollfd)
LWS_VISIBLE LWS_EXTERN int lws_callback_vhost_protocols(struct lws *wsi, int reason, void *in, int len)
Definition: libwebsockets.h:728
Definition: libwebsockets.h:463
Definition: libwebsockets.h:472
LWS_VISIBLE LWS_EXTERN const char * lws_sql_purify(char *escaped, const char *string, int len)
- uv_tcp_t email_client Definition: libwebsockets.h:3916
+ uv_tcp_t email_client Definition: libwebsockets.h:3930
LWS_VISIBLE LWS_EXTERN int lws_json_dump_context(const struct lws_context *context, char *buf, int len)
Definition: libwebsockets.h:397
Definition: libwebsockets.h:576
- lws_filefd_type(* open)(struct lws *wsi, const char *filename, unsigned long *filelen, int flags) Definition: libwebsockets.h:3730
- lws_write_protocol Definition: libwebsockets.h:2945
+ lws_filefd_type(* open)(struct lws *wsi, const char *filename, unsigned long *filelen, int flags) Definition: libwebsockets.h:3744
+ lws_write_protocol Definition: libwebsockets.h:2959
const char * client_offer Definition: libwebsockets.h:1088
- int(* read)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount, unsigned char *buf, unsigned long len) Definition: libwebsockets.h:3740
+ int(* read)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount, unsigned char *buf, unsigned long len) Definition: libwebsockets.h:3754
LWS_VISIBLE LWS_EXTERN void lws_cancel_service(struct lws_context *context)
-
+
Definition: libwebsockets.h:477
const char * origin Definition: libwebsockets.h:1804
const char * name Definition: libwebsockets.h:1003
@@ -401,7 +402,7 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
Definition: libwebsockets.h:653
const char * name Definition: libwebsockets.h:1086
- Definition: libwebsockets.h:3872
+ Definition: libwebsockets.h:3886
short revents Definition: libwebsockets.h:412
lws_extension_callback_function * callback Definition: libwebsockets.h:1087
long ssl_options_set Definition: libwebsockets.h:1580
@@ -421,37 +422,37 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
LWS_VISIBLE LWS_EXTERN int lws_service(struct lws_context *context, int timeout_ms)
Definition: libwebsockets.h:1407
LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_http_transaction_completed(struct lws *wsi)
- int count_vars Definition: libwebsockets.h:2232
+ int count_vars Definition: libwebsockets.h:2246
- Definition: libwebsockets.h:2286
+ Definition: libwebsockets.h:2300
LWS_VISIBLE LWS_EXTERN struct lws_context * lws_create_context(struct lws_context_creation_info *info)
Definition: libwebsockets.h:632
- void * data Definition: libwebsockets.h:2230
- char * content Definition: libwebsockets.h:3919
+ void * data Definition: libwebsockets.h:2244
+ char * content Definition: libwebsockets.h:3933
LWS_VISIBLE LWS_EXTERN int lws_interface_to_sa(int ipv6, const char *ifname, struct sockaddr_in *addr, size_t addrlen)
const struct lws_token_limits * token_limits Definition: libwebsockets.h:1470
- lws_process_html_state_cb replace Definition: libwebsockets.h:2234
- Definition: libwebsockets.h:3880
+ lws_process_html_state_cb replace Definition: libwebsockets.h:2248
+ Definition: libwebsockets.h:3894
const char * address Definition: libwebsockets.h:1850
- unsigned long(* seek_cur)(struct lws *wsi, lws_filefd_type fd, long offset_from_cur_pos) Definition: libwebsockets.h:3737
+ unsigned long(* seek_cur)(struct lws *wsi, lws_filefd_type fd, long offset_from_cur_pos) Definition: libwebsockets.h:3751
void * user Definition: libwebsockets.h:1204
int events Definition: libwebsockets.h:440
- int(* on_get_body)(struct lws_email *email, char *buf, int len) Definition: libwebsockets.h:3906
+ int(* on_get_body)(struct lws_email *email, char *buf, int len) Definition: libwebsockets.h:3920
Definition: libwebsockets.h:1792
void * user Definition: libwebsockets.h:1502
- Definition: libwebsockets.h:3876
- Definition: libwebsockets.h:2968
- char * token Definition: libwebsockets.h:2287
+ Definition: libwebsockets.h:3890
+ Definition: libwebsockets.h:2982
+ char * token Definition: libwebsockets.h:2301
LWS_VISIBLE LWS_EXTERN void * lws_protocol_vh_priv_get(struct lws_vhost *vhost, const struct lws_protocols *prot)
int count_protocols Definition: libwebsockets.h:1287
void * l Definition: libwebsockets.h:1302
const char * ssl_private_key_filepath Definition: libwebsockets.h:1479
- int max_len Definition: libwebsockets.h:2220
+ int max_len Definition: libwebsockets.h:2234
Definition: libwebsockets.h:634
const struct lws_protocol_vhost_options * next Definition: libwebsockets.h:1775
Definition: libwebsockets.h:645
LWS_VISIBLE LWS_EXTERN void lws_rx_flow_allow_all_protocol(const struct lws_context *context, const struct lws_protocols *protocol)
- Definition: libwebsockets.h:2226
+ Definition: libwebsockets.h:2240
LWS_VISIBLE LWS_EXTERN const char *LWS_WARN_UNUSED_RESULT lws_canonical_hostname(struct lws_context *context)
Definition: libwebsockets.h:844
const char * ssl_ca_filepath Definition: libwebsockets.h:1485
@@ -461,12 +462,12 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
LWS_VISIBLE LWS_EXTERN void lws_cancel_service_pt(struct lws *wsi)
Definition: libwebsockets.h:1428
Definition: libwebsockets.h:513
- Definition: libwebsockets.h:3871
+ Definition: libwebsockets.h:3885
unsigned int api_magic Definition: libwebsockets.h:1285
Definition: libwebsockets.h:1431
LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_send_pipe_choked(struct lws *wsi)
- Definition: libwebsockets.h:3874
-
+ Definition: libwebsockets.h:3888
+
diff --git a/doc/html/navtreedata.js b/doc/html/navtreedata.js
index 66d4e104..ecc526ed 100644
--- a/doc/html/navtreedata.js
+++ b/doc/html/navtreedata.js
@@ -36,8 +36,8 @@ var NAVTREEINDEX =
[
"annotated.html",
"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5accc9d0d11d1124a21659586164b0962e",
-"group__smtp.html#ga25298a5afc1074e13b2d5711a86432b2",
-"libwebsockets_8h.html#abddb8d337fb2692586d892b494739003"
+"group__smtp.html#ga116be79bf44f9dc2a97f46e051fe4dc0",
+"libwebsockets_8h.html#a9032a3062641d334161c29adcc4fa15d"
];
var SYNCONMSG = 'click to disable panel synchronisation';
diff --git a/doc/html/navtreeindex0.js b/doc/html/navtreeindex0.js
index fbd1f9e7..d3d94eb8 100644
--- a/doc/html/navtreeindex0.js
+++ b/doc/html/navtreeindex0.js
@@ -43,23 +43,23 @@ var NAVTREEINDEX0 =
"group__HTTP-headers-create.html#ga2b36bf44405755ff51c1939303b995a8":[7,6,3,0],
"group__HTTP-headers-create.html#ga4887605ff2242a54db3a7fa01f6f864b":[7,6,3,4],
"group__HTTP-headers-create.html#ga4887605ff2242a54db3a7fa01f6f864b":[9,0,0,0,75],
-"group__HTTP-headers-create.html#gacc76a5babcb4dce1b01b1955aa7a2faf":[9,0,0,0,39],
"group__HTTP-headers-create.html#gacc76a5babcb4dce1b01b1955aa7a2faf":[7,6,3,2],
+"group__HTTP-headers-create.html#gacc76a5babcb4dce1b01b1955aa7a2faf":[9,0,0,0,39],
"group__HTTP-headers-create.html#gaf74adb761b22566ad70004882712dce1":[9,0,0,0,38],
"group__HTTP-headers-create.html#gaf74adb761b22566ad70004882712dce1":[7,6,3,1],
"group__HTTP-headers-read.html":[7,6,4],
"group__HTTP-headers-read.html#ga2c0597b2ef1d2cee35736c338bcbd17b":[7,6,4,7],
-"group__HTTP-headers-read.html#ga2c0597b2ef1d2cee35736c338bcbd17b":[9,0,0,0,141],
-"group__HTTP-headers-read.html#ga594f3d0ece5b09c2ccf9f98ea533bb4e":[9,0,0,0,95],
+"group__HTTP-headers-read.html#ga2c0597b2ef1d2cee35736c338bcbd17b":[9,0,0,0,142],
+"group__HTTP-headers-read.html#ga594f3d0ece5b09c2ccf9f98ea533bb4e":[9,0,0,0,96],
"group__HTTP-headers-read.html#ga594f3d0ece5b09c2ccf9f98ea533bb4e":[7,6,4,5],
-"group__HTTP-headers-read.html#ga6ce6aa1c0155ea42b7708bed271d1c77":[9,0,0,0,93],
+"group__HTTP-headers-read.html#ga6ce6aa1c0155ea42b7708bed271d1c77":[9,0,0,0,94],
"group__HTTP-headers-read.html#ga6ce6aa1c0155ea42b7708bed271d1c77":[7,6,4,3],
"group__HTTP-headers-read.html#ga6e747906f9d76532ec118d6ef418b82e":[9,0,0,0,30],
-"group__HTTP-headers-read.html#ga84e9ce5e71a77501a0998ac403a984c2":[9,0,0,0,91],
+"group__HTTP-headers-read.html#ga84e9ce5e71a77501a0998ac403a984c2":[9,0,0,0,92],
"group__HTTP-headers-read.html#ga84e9ce5e71a77501a0998ac403a984c2":[7,6,4,2],
-"group__HTTP-headers-read.html#ga8ade0e1ffb0da7e62b989d8d867bf6c8":[9,0,0,0,96],
+"group__HTTP-headers-read.html#ga8ade0e1ffb0da7e62b989d8d867bf6c8":[9,0,0,0,97],
"group__HTTP-headers-read.html#ga8ade0e1ffb0da7e62b989d8d867bf6c8":[7,6,4,6],
-"group__HTTP-headers-read.html#gaa427cad61a9a5e3004afd65c4527b5e9":[9,0,0,0,94],
+"group__HTTP-headers-read.html#gaa427cad61a9a5e3004afd65c4527b5e9":[9,0,0,0,95],
"group__HTTP-headers-read.html#gaa427cad61a9a5e3004afd65c4527b5e9":[7,6,4,4],
"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea03293996964a8bb617215508908048d4":[9,0,0,0,30,42],
"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea05c73ad09f25570a50068de13333e41a":[9,0,0,0,30,57],
@@ -157,17 +157,17 @@ var NAVTREEINDEX0 =
"group__Protocols-and-Plugins.html#ga106b37ae9c247e84d191ab09441adc43":[7,10,4],
"group__Protocols-and-Plugins.html#ga106b37ae9c247e84d191ab09441adc43":[9,0,0,0,76],
"group__Protocols-and-Plugins.html#ga25754726d97c5f519d313e691a9fe29d":[7,10,9],
-"group__Protocols-and-Plugins.html#ga25754726d97c5f519d313e691a9fe29d":[9,0,0,0,149],
+"group__Protocols-and-Plugins.html#ga25754726d97c5f519d313e691a9fe29d":[9,0,0,0,150],
"group__Protocols-and-Plugins.html#ga40994491e1567f91f579d2b444775266":[9,0,0,0,12],
"group__Protocols-and-Plugins.html#ga72ad550786ca7976463589d347e62112":[7,10,5],
-"group__Protocols-and-Plugins.html#ga72ad550786ca7976463589d347e62112":[9,0,0,0,87],
+"group__Protocols-and-Plugins.html#ga72ad550786ca7976463589d347e62112":[9,0,0,0,88],
"group__Protocols-and-Plugins.html#ga83f7a924ba790fa273476075a59f08b0":[9,0,0,0,11],
"group__Protocols-and-Plugins.html#ga8bbe5e65faca068845704bab911a5030":[7,10,6],
-"group__Protocols-and-Plugins.html#ga8bbe5e65faca068845704bab911a5030":[9,0,0,0,113],
+"group__Protocols-and-Plugins.html#ga8bbe5e65faca068845704bab911a5030":[9,0,0,0,114],
"group__Protocols-and-Plugins.html#gaec0c0477288ff3f83aff38d357b883d1":[7,10,8],
-"group__Protocols-and-Plugins.html#gaec0c0477288ff3f83aff38d357b883d1":[9,0,0,0,115],
+"group__Protocols-and-Plugins.html#gaec0c0477288ff3f83aff38d357b883d1":[9,0,0,0,116],
"group__Protocols-and-Plugins.html#gaf3be4243443baac0f8be1fcfb4d25129":[7,10,7],
-"group__Protocols-and-Plugins.html#gaf3be4243443baac0f8be1fcfb4d25129":[9,0,0,0,114],
+"group__Protocols-and-Plugins.html#gaf3be4243443baac0f8be1fcfb4d25129":[9,0,0,0,115],
"group__callback-when-writeable.html":[7,1],
"group__callback-when-writeable.html#ga13c984d8c5a44a745fd02bc2fba36053":[7,1,1],
"group__callback-when-writeable.html#ga13c984d8c5a44a745fd02bc2fba36053":[9,0,0,0,46],
@@ -178,45 +178,45 @@ var NAVTREEINDEX0 =
"group__callback-when-writeable.html#ga941caaa468bc507b1cae52275f58800d":[7,1,2],
"group__callback-when-writeable.html#ga941caaa468bc507b1cae52275f58800d":[9,0,0,0,47],
"group__callback-when-writeable.html#gaa709e02a10558753c851e58f1e2c16ba":[7,1,7],
-"group__callback-when-writeable.html#gaa709e02a10558753c851e58f1e2c16ba":[9,0,0,0,90],
+"group__callback-when-writeable.html#gaa709e02a10558753c851e58f1e2c16ba":[9,0,0,0,91],
"group__callback-when-writeable.html#gabbe4655c7eeb3eb1671b2323ec6b3107":[7,1,3],
"group__callback-when-writeable.html#gabbe4655c7eeb3eb1671b2323ec6b3107":[9,0,0,0,48],
"group__callback-when-writeable.html#gac4643fe16b0940ae5b68b4ee6195cbde":[7,1,6],
-"group__callback-when-writeable.html#gac4643fe16b0940ae5b68b4ee6195cbde":[9,0,0,0,86],
+"group__callback-when-writeable.html#gac4643fe16b0940ae5b68b4ee6195cbde":[9,0,0,0,87],
"group__callback-when-writeable.html#gacf04bbe089f47c971c6408c5efe2ac70":[7,1,0],
"group__callback-when-writeable.html#gacf04bbe089f47c971c6408c5efe2ac70":[9,0,0,0,45],
"group__cgi.html":[7,19],
"group__client.html":[7,2],
"group__client.html#ga0c966136905f467816307cfba6deb5fd":[7,2,3],
"group__client.html#ga0c966136905f467816307cfba6deb5fd":[9,0,0,0,60],
-"group__client.html#ga4450c34200bf9dab3beb90ef23221870":[9,0,0,0,97],
+"group__client.html#ga4450c34200bf9dab3beb90ef23221870":[9,0,0,0,98],
"group__client.html#ga4af0a20108a95e8b6d94dd4d80055ff3":[7,2,1],
"group__client.html#ga4af0a20108a95e8b6d94dd4d80055ff3":[9,0,0,0,58],
"group__client.html#ga4f44b8230e6732816ca5cd8d1aaaf340":[7,2,4],
-"group__client.html#ga4f44b8230e6732816ca5cd8d1aaaf340":[9,0,0,0,100],
+"group__client.html#ga4f44b8230e6732816ca5cd8d1aaaf340":[9,0,0,0,101],
"group__client.html#gac6a8558b4410961a880241c2ac1271e2":[7,2,2],
"group__client.html#gac6a8558b4410961a880241c2ac1271e2":[9,0,0,0,59],
"group__context-and-vhost.html":[7,4],
"group__context-and-vhost.html#ga06e77ce2916f8bc9826ef8d9d68e3932":[7,4,8],
-"group__context-and-vhost.html#ga06e77ce2916f8bc9826ef8d9d68e3932":[9,0,0,0,92],
+"group__context-and-vhost.html#ga06e77ce2916f8bc9826ef8d9d68e3932":[9,0,0,0,93],
"group__context-and-vhost.html#ga0c54c667ccd9b8b3dddcd123ca72f87c":[7,4,7],
"group__context-and-vhost.html#ga0c54c667ccd9b8b3dddcd123ca72f87c":[9,0,0,0,65],
"group__context-and-vhost.html#ga341064721add2618ae1b29717493a212":[7,4,14],
-"group__context-and-vhost.html#ga341064721add2618ae1b29717493a212":[9,0,0,0,156],
+"group__context-and-vhost.html#ga341064721add2618ae1b29717493a212":[9,0,0,0,157],
"group__context-and-vhost.html#ga41c2d763f78cc248df3b9f8645dbd2a5":[7,4,3],
"group__context-and-vhost.html#ga41c2d763f78cc248df3b9f8645dbd2a5":[9,0,0,0,22],
"group__context-and-vhost.html#ga7e9d5405547a457d86e0b4f0ae2bb1c4":[7,4,11],
-"group__context-and-vhost.html#ga7e9d5405547a457d86e0b4f0ae2bb1c4":[9,0,0,0,131],
+"group__context-and-vhost.html#ga7e9d5405547a457d86e0b4f0ae2bb1c4":[9,0,0,0,132],
"group__context-and-vhost.html#ga8db03e19a372e34ac25cf21af894a02c":[7,4,12],
-"group__context-and-vhost.html#ga8db03e19a372e34ac25cf21af894a02c":[9,0,0,0,148],
+"group__context-and-vhost.html#ga8db03e19a372e34ac25cf21af894a02c":[9,0,0,0,149],
"group__context-and-vhost.html#ga8ee0314028755f1ddfa9428e09b4fddb":[7,4,4],
"group__context-and-vhost.html#ga8ee0314028755f1ddfa9428e09b4fddb":[9,0,0,0,62],
"group__context-and-vhost.html#ga94e6cc2223c4eec316b13bcebc3628b6":[7,4,10],
-"group__context-and-vhost.html#ga94e6cc2223c4eec316b13bcebc3628b6":[9,0,0,0,106],
+"group__context-and-vhost.html#ga94e6cc2223c4eec316b13bcebc3628b6":[9,0,0,0,107],
"group__context-and-vhost.html#ga98d88c9080fd89c37114363a6474ea73":[7,4,13],
-"group__context-and-vhost.html#ga98d88c9080fd89c37114363a6474ea73":[9,0,0,0,155],
+"group__context-and-vhost.html#ga98d88c9080fd89c37114363a6474ea73":[9,0,0,0,156],
"group__context-and-vhost.html#gae2134657cdd2ea7a59e13ad314e4c50d":[7,4,9],
-"group__context-and-vhost.html#gae2134657cdd2ea7a59e13ad314e4c50d":[9,0,0,0,105],
+"group__context-and-vhost.html#gae2134657cdd2ea7a59e13ad314e4c50d":[9,0,0,0,106],
"group__context-and-vhost.html#gaeb12f934bfd178bd2132a9e73fc641da":[7,4,5],
"group__context-and-vhost.html#gaeb12f934bfd178bd2132a9e73fc641da":[9,0,0,0,63],
"group__context-and-vhost.html#gaf2fff58562caab7510c41eeac85a8648":[7,4,6],
diff --git a/doc/html/navtreeindex1.js b/doc/html/navtreeindex1.js
index 408efbc0..cc8bf20b 100644
--- a/doc/html/navtreeindex1.js
+++ b/doc/html/navtreeindex1.js
@@ -20,7 +20,7 @@ var NAVTREEINDEX1 =
"group__extensions.html#gacc9f55936dc165257a2e1f7d47bce89e":[9,0,0,0,24],
"group__extensions.html#gacc9f55936dc165257a2e1f7d47bce89e":[7,5,4],
"group__extensions.html#gae0e24e1768f83a7fb07896ce975704b9":[7,5,7],
-"group__extensions.html#gae0e24e1768f83a7fb07896ce975704b9":[9,0,0,0,129],
+"group__extensions.html#gae0e24e1768f83a7fb07896ce975704b9":[9,0,0,0,130],
"group__extensions.html#gae9993815eee72c6070300a0ae2f022d7":[9,0,0,0,25],
"group__extensions.html#ggacc9f55936dc165257a2e1f7d47bce89ea1c86adf924c8786a12bee9687094673e":[9,0,0,0,24,1],
"group__extensions.html#ggacc9f55936dc165257a2e1f7d47bce89ea1c86adf924c8786a12bee9687094673e":[7,5,4,1],
@@ -60,21 +60,21 @@ var NAVTREEINDEX1 =
"group__fops.html#gac08aef64c4c34647ed699b24759b6b0e":[9,0,0,0,81],
"group__form-parsing.html":[7,6,0],
"group__form-parsing.html#ga162f86762173a2bc8c28497941d74815":[7,6,0,2],
-"group__form-parsing.html#ga162f86762173a2bc8c28497941d74815":[9,0,0,0,134],
+"group__form-parsing.html#ga162f86762173a2bc8c28497941d74815":[9,0,0,0,135],
"group__form-parsing.html#ga2da476217166da02704b90d3a8d4f3cd":[7,6,0,6],
-"group__form-parsing.html#ga2da476217166da02704b90d3a8d4f3cd":[9,0,0,0,138],
+"group__form-parsing.html#ga2da476217166da02704b90d3a8d4f3cd":[9,0,0,0,139],
"group__form-parsing.html#ga3fbe378632f85ec9a14cc2c1687bf05f":[7,6,0,5],
-"group__form-parsing.html#ga3fbe378632f85ec9a14cc2c1687bf05f":[9,0,0,0,137],
+"group__form-parsing.html#ga3fbe378632f85ec9a14cc2c1687bf05f":[9,0,0,0,138],
"group__form-parsing.html#ga41a74a822771d3dce89751aa3bce28ae":[9,0,0,0,29],
"group__form-parsing.html#ga41a74a822771d3dce89751aa3bce28ae":[7,6,0,1],
"group__form-parsing.html#ga5a70527c0861c2ffa3d29333a6aa7f8e":[7,6,0,0],
"group__form-parsing.html#ga5a70527c0861c2ffa3d29333a6aa7f8e":[9,0,0,0,15],
"group__form-parsing.html#ga83835bf250ee3d4a60f36a182f2b8d24":[7,6,0,4],
-"group__form-parsing.html#ga83835bf250ee3d4a60f36a182f2b8d24":[9,0,0,0,136],
+"group__form-parsing.html#ga83835bf250ee3d4a60f36a182f2b8d24":[9,0,0,0,137],
"group__form-parsing.html#ga9ad9ebf5ea1a7108415ed7e04cb231d2":[7,6,0,7],
-"group__form-parsing.html#ga9ad9ebf5ea1a7108415ed7e04cb231d2":[9,0,0,0,139],
+"group__form-parsing.html#ga9ad9ebf5ea1a7108415ed7e04cb231d2":[9,0,0,0,140],
"group__form-parsing.html#gaaa482f07dad3f04b391cccf0a814e13b":[7,6,0,3],
-"group__form-parsing.html#gaaa482f07dad3f04b391cccf0a814e13b":[9,0,0,0,135],
+"group__form-parsing.html#gaaa482f07dad3f04b391cccf0a814e13b":[9,0,0,0,136],
"group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea2d25de44865bd44e5a3903a2bab9ca83":[9,0,0,0,29,2],
"group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea2d25de44865bd44e5a3903a2bab9ca83":[7,6,0,1,2],
"group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea6ce2a55a4c3695cdb640c893d95bd3a7":[9,0,0,0,29,1],
@@ -133,26 +133,28 @@ var NAVTREEINDEX1 =
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8daf06c31278cb67d7eec4b2b8157b9ad25":[9,0,0,0,18,9],
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dafac24097912a70f224166528ce44b83b":[9,0,0,0,18,7],
"group__http.html":[7,6],
-"group__http.html#ga8fbf01e473ac421fc33ad9f8da8b8a25":[9,0,0,0,98],
+"group__http.html#ga8fbf01e473ac421fc33ad9f8da8b8a25":[9,0,0,0,99],
"group__http.html#ga8fbf01e473ac421fc33ad9f8da8b8a25":[7,6,7],
-"group__http.html#gac8a4a71240857dc6b2ed70456b6923f4":[9,0,0,0,118],
+"group__http.html#gac8a4a71240857dc6b2ed70456b6923f4":[9,0,0,0,119],
"group__http.html#gac8a4a71240857dc6b2ed70456b6923f4":[7,6,9],
-"group__http.html#gad27aed6c66a41b2b89ffe4da2a309e8a":[9,0,0,0,99],
+"group__http.html#gad27aed6c66a41b2b89ffe4da2a309e8a":[9,0,0,0,100],
"group__http.html#gad27aed6c66a41b2b89ffe4da2a309e8a":[7,6,8],
"group__httpft.html":[7,6,2],
-"group__httpft.html#ga29e1123f6d56cd777b3e5bf9ca40f9e5":[9,0,0,0,123],
-"group__httpft.html#gab393a06d3d2722af4c3f8b06842c80d7":[7,6,2,0],
-"group__httpft.html#gab393a06d3d2722af4c3f8b06842c80d7":[9,0,0,0,122],
+"group__httpft.html#ga29e1123f6d56cd777b3e5bf9ca40f9e5":[9,0,0,0,124],
+"group__httpft.html#gab393a06d3d2722af4c3f8b06842c80d7":[7,6,2,1],
+"group__httpft.html#gab393a06d3d2722af4c3f8b06842c80d7":[9,0,0,0,123],
+"group__httpft.html#gab4da87a4800413f15e7aba649fb1d77c":[7,6,2,0],
+"group__httpft.html#gab4da87a4800413f15e7aba649fb1d77c":[9,0,0,0,83],
"group__log.html":[7,7],
"group__log.html#ga14542b84d2c76efa7814124bb10f9c5f":[9,0,0,0,27],
-"group__log.html#ga244647f9e1bf0097ccdde66d74f41e26":[9,0,0,0,130],
+"group__log.html#ga244647f9e1bf0097ccdde66d74f41e26":[9,0,0,0,131],
"group__log.html#ga244647f9e1bf0097ccdde66d74f41e26":[7,7,0],
-"group__log.html#ga42e39775c6b69b7251bdbf5a2cdd5dcd":[9,0,0,0,154],
+"group__log.html#ga42e39775c6b69b7251bdbf5a2cdd5dcd":[9,0,0,0,155],
"group__log.html#ga42e39775c6b69b7251bdbf5a2cdd5dcd":[7,7,3],
"group__log.html#ga74eb146969f0595e12ea835851b4588e":[9,0,0,0,36],
-"group__log.html#ga898b1f03872ad019f507d4e35bbefa90":[9,0,0,0,153],
+"group__log.html#ga898b1f03872ad019f507d4e35bbefa90":[9,0,0,0,154],
"group__log.html#ga898b1f03872ad019f507d4e35bbefa90":[7,7,2],
-"group__log.html#gab7c0fc936cc9f1eb58e2bb234c15147c":[9,0,0,0,152],
+"group__log.html#gab7c0fc936cc9f1eb58e2bb234c15147c":[9,0,0,0,153],
"group__log.html#gab7c0fc936cc9f1eb58e2bb234c15147c":[7,7,1],
"group__log.html#gaf5f07837692b2f231a79da8a058288aa":[9,0,0,0,35],
"group__log.html#gga14542b84d2c76efa7814124bb10f9c5fa083a44e71966a0e768426e477e1bc358":[9,0,0,0,27,8],
@@ -169,20 +171,20 @@ var NAVTREEINDEX1 =
"group__misc.html":[7,8],
"group__misc.html#ga0af4f7d2dd375aeedcfa7eb0e1101c4b":[9,0,0,0,79],
"group__misc.html#ga0af4f7d2dd375aeedcfa7eb0e1101c4b":[7,8,2],
-"group__misc.html#ga0e705d498e8c8500649a26ba30a1e106":[9,0,0,0,116],
-"group__misc.html#ga1ec0d9faac5d3a5824d765c287c043aa":[9,0,0,0,111],
+"group__misc.html#ga0e705d498e8c8500649a26ba30a1e106":[9,0,0,0,117],
+"group__misc.html#ga1ec0d9faac5d3a5824d765c287c043aa":[9,0,0,0,112],
"group__misc.html#ga1ec0d9faac5d3a5824d765c287c043aa":[7,8,8],
-"group__misc.html#ga33bf2635033710b25f931b57ed663e1e":[9,0,0,0,110],
+"group__misc.html#ga33bf2635033710b25f931b57ed663e1e":[9,0,0,0,111],
"group__misc.html#ga33bf2635033710b25f931b57ed663e1e":[7,8,7],
-"group__misc.html#ga58f906c6be0ca80efd813f694569dd4a":[9,0,0,0,88],
+"group__misc.html#ga58f906c6be0ca80efd813f694569dd4a":[9,0,0,0,89],
"group__misc.html#ga58f906c6be0ca80efd813f694569dd4a":[7,8,6],
"group__misc.html#ga629f48268fd1856b54b11172991b97d9":[9,0,0,0,80],
"group__misc.html#ga629f48268fd1856b54b11172991b97d9":[7,8,3],
-"group__misc.html#ga8930fe36a3f3eefe4a6a4fd499d8e899":[9,0,0,0,83],
+"group__misc.html#ga8930fe36a3f3eefe4a6a4fd499d8e899":[9,0,0,0,84],
"group__misc.html#ga8930fe36a3f3eefe4a6a4fd499d8e899":[7,8,5],
-"group__misc.html#gaa194584fff9698f3b280658f770ccd0f":[9,0,0,0,151],
+"group__misc.html#gaa194584fff9698f3b280658f770ccd0f":[9,0,0,0,152],
"group__misc.html#gaa194584fff9698f3b280658f770ccd0f":[7,8,10],
-"group__misc.html#gab321ed812f46f6dc7ef9e3ca6f00cf1b":[9,0,0,0,128],
+"group__misc.html#gab321ed812f46f6dc7ef9e3ca6f00cf1b":[9,0,0,0,129],
"group__misc.html#gab321ed812f46f6dc7ef9e3ca6f00cf1b":[7,8,9],
"group__misc.html#gac6abfc0b2bd5b2f09281a4432bb2f5f0":[9,0,0,0,82],
"group__misc.html#gac6abfc0b2bd5b2f09281a4432bb2f5f0":[7,8,4],
@@ -192,23 +194,23 @@ var NAVTREEINDEX1 =
"group__misc.html#gace5171b1dbbc03ec89a98f8afdb5c9af":[7,8,0],
"group__net.html":[7,9],
"group__net.html#ga092e5f473b3347f03ffeef8a950080f3":[7,9,1],
-"group__net.html#ga092e5f473b3347f03ffeef8a950080f3":[9,0,0,0,84],
+"group__net.html#ga092e5f473b3347f03ffeef8a950080f3":[9,0,0,0,85],
"group__net.html#ga869d8bdffb0f2a7ce08e3ce10d6be3d8":[7,9,3],
-"group__net.html#ga869d8bdffb0f2a7ce08e3ce10d6be3d8":[9,0,0,0,101],
+"group__net.html#ga869d8bdffb0f2a7ce08e3ce10d6be3d8":[9,0,0,0,102],
"group__net.html#gad01014fed09759741b6d23afccfdaacc":[7,9,2],
-"group__net.html#gad01014fed09759741b6d23afccfdaacc":[9,0,0,0,85],
-"group__net.html#gad0df22db2be9fc65a667a1e83f9a92a4":[9,0,0,0,53],
+"group__net.html#gad01014fed09759741b6d23afccfdaacc":[9,0,0,0,86],
"group__net.html#gad0df22db2be9fc65a667a1e83f9a92a4":[7,9,0],
+"group__net.html#gad0df22db2be9fc65a667a1e83f9a92a4":[9,0,0,0,53],
"group__pur.html":[7,12],
"group__pur.html#ga9cc82f06e5ae7e71458626d7a39a5865":[7,12,1],
-"group__pur.html#ga9cc82f06e5ae7e71458626d7a39a5865":[9,0,0,0,140],
+"group__pur.html#ga9cc82f06e5ae7e71458626d7a39a5865":[9,0,0,0,141],
"group__pur.html#gab15187efcfa256b7c928562c182b92a3":[7,12,0],
-"group__pur.html#gab15187efcfa256b7c928562c182b92a3":[9,0,0,0,107],
+"group__pur.html#gab15187efcfa256b7c928562c182b92a3":[9,0,0,0,108],
"group__sending-data.html":[7,13],
"group__sending-data.html#ga98b099cf8c1c7e38ad78501f270e193d":[7,13,0],
"group__sending-data.html#ga98b099cf8c1c7e38ad78501f270e193d":[9,0,0,0,31],
"group__sending-data.html#gafd5fdd285a0e25ba7e3e1051deec1001":[7,13,1],
-"group__sending-data.html#gafd5fdd285a0e25ba7e3e1051deec1001":[9,0,0,0,150],
+"group__sending-data.html#gafd5fdd285a0e25ba7e3e1051deec1001":[9,0,0,0,151],
"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da10047eb05b5e1c298151dc47a5b44826":[7,13,0,2],
"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da10047eb05b5e1c298151dc47a5b44826":[9,0,0,0,31,2],
"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da115440f272a5d55518adfc8099acfee3":[7,13,0,5],
@@ -232,22 +234,20 @@ var NAVTREEINDEX1 =
"group__service.html#ga53e3d0801dfda7960a7249dd559e68a2":[9,0,0,0,51],
"group__service.html#ga53e3d0801dfda7960a7249dd559e68a2":[7,0,0],
"group__service.html#ga9b3cc4473fd8848e5bbee7f310712939":[7,0,5],
-"group__service.html#ga9b3cc4473fd8848e5bbee7f310712939":[9,0,0,0,127],
+"group__service.html#ga9b3cc4473fd8848e5bbee7f310712939":[9,0,0,0,128],
"group__service.html#gad82efa5466d14a9f05aa06416375b28d":[7,0,3],
-"group__service.html#gad82efa5466d14a9f05aa06416375b28d":[9,0,0,0,125],
+"group__service.html#gad82efa5466d14a9f05aa06416375b28d":[9,0,0,0,126],
"group__service.html#gaebf426eda371ba23642fc11d8e0ace6b":[7,0,4],
-"group__service.html#gaebf426eda371ba23642fc11d8e0ace6b":[9,0,0,0,126],
-"group__service.html#gaf95bd0c663d6516a0c80047d9b1167a8":[9,0,0,0,124],
+"group__service.html#gaebf426eda371ba23642fc11d8e0ace6b":[9,0,0,0,127],
+"group__service.html#gaf95bd0c663d6516a0c80047d9b1167a8":[9,0,0,0,125],
"group__service.html#gaf95bd0c663d6516a0c80047d9b1167a8":[7,0,2],
"group__sha.html":[7,11],
"group__sha.html#ga66316e6a5a0644a09d5a10e919dfdd8d":[7,11,0],
"group__sha.html#ga66316e6a5a0644a09d5a10e919dfdd8d":[9,0,0,0,43],
"group__sha.html#ga7b09ab74646266f0b555103b3bb8dfe5":[7,11,2],
-"group__sha.html#ga7b09ab74646266f0b555103b3bb8dfe5":[9,0,0,0,133],
+"group__sha.html#ga7b09ab74646266f0b555103b3bb8dfe5":[9,0,0,0,134],
"group__sha.html#gaf39765e4a3b413efb65e4698b2ec3575":[7,11,1],
"group__sha.html#gaf39765e4a3b413efb65e4698b2ec3575":[9,0,0,0,44],
"group__smtp.html":[7,14],
-"group__smtp.html#ga116be79bf44f9dc2a97f46e051fe4dc0":[7,14,1],
-"group__smtp.html#ga116be79bf44f9dc2a97f46e051fe4dc0":[9,0,0,0,33],
-"group__smtp.html#ga25298a5afc1074e13b2d5711a86432b2":[7,14,3]
+"group__smtp.html#ga116be79bf44f9dc2a97f46e051fe4dc0":[7,14,1]
};
diff --git a/doc/html/navtreeindex2.js b/doc/html/navtreeindex2.js
index 578f950d..e5efbf9d 100644
--- a/doc/html/navtreeindex2.js
+++ b/doc/html/navtreeindex2.js
@@ -1,8 +1,10 @@
var NAVTREEINDEX2 =
{
+"group__smtp.html#ga116be79bf44f9dc2a97f46e051fe4dc0":[9,0,0,0,33],
+"group__smtp.html#ga25298a5afc1074e13b2d5711a86432b2":[7,14,3],
"group__smtp.html#ga25298a5afc1074e13b2d5711a86432b2":[9,0,0,0,68],
-"group__smtp.html#ga5e535e346d92a9daf00be33abf79d4eb":[9,0,0,0,67],
"group__smtp.html#ga5e535e346d92a9daf00be33abf79d4eb":[7,14,2],
+"group__smtp.html#ga5e535e346d92a9daf00be33abf79d4eb":[9,0,0,0,67],
"group__smtp.html#ga77fc9b56a1bb39484844981ec375fc29":[7,14,4],
"group__smtp.html#ga77fc9b56a1bb39484844981ec375fc29":[9,0,0,0,69],
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad":[7,14,1,3],
@@ -17,12 +19,12 @@ var NAVTREEINDEX2 =
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14":[9,0,0,0,33,6],
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab":[7,14,1,4],
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab":[9,0,0,0,33,4],
-"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83":[9,0,0,0,33,5],
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83":[7,14,1,5],
+"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83":[9,0,0,0,33,5],
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d":[7,14,1,2],
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d":[9,0,0,0,33,2],
-"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933":[7,14,1,1],
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933":[9,0,0,0,33,1],
+"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933":[7,14,1,1],
"group__sock-adopt.html":[7,15],
"group__sock-adopt.html#gab2d045df0f81afe00891aaed312d552b":[7,15,1],
"group__sock-adopt.html#gab2d045df0f81afe00891aaed312d552b":[9,0,0,0,42],
@@ -31,7 +33,7 @@ var NAVTREEINDEX2 =
"group__timeout.html":[7,3],
"group__timeout.html#ga2c0aa4b9c3c55bae7b35cbfac3246c87":[9,0,0,0,34],
"group__timeout.html#gaced9f9237f6172fed9f730a2af51345a":[7,3,0],
-"group__timeout.html#gaced9f9237f6172fed9f730a2af51345a":[9,0,0,0,132],
+"group__timeout.html#gaced9f9237f6172fed9f730a2af51345a":[9,0,0,0,133],
"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a0d6b956db11acb6d263af3ea054a914e":[9,0,0,0,34,12],
"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a0eef059426f37d00b75142d4dc3e25e3":[9,0,0,0,34,3],
"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a1104c39d0177378713a9332ab7a9d7fe":[9,0,0,0,34,4],
@@ -50,9 +52,9 @@ var NAVTREEINDEX2 =
"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87ae8b3de955cec5da5ea52fe040f914501":[9,0,0,0,34,10],
"group__urlendec.html":[7,6,5],
"group__urlendec.html#gaa373a9c16acdd96c395af61ab915ece3":[7,6,5,0],
-"group__urlendec.html#gaa373a9c16acdd96c395af61ab915ece3":[9,0,0,0,142],
+"group__urlendec.html#gaa373a9c16acdd96c395af61ab915ece3":[9,0,0,0,143],
"group__urlendec.html#gabc2888476e50e001c875c1a8abf455b7":[7,6,5,1],
-"group__urlendec.html#gabc2888476e50e001c875c1a8abf455b7":[9,0,0,0,143],
+"group__urlendec.html#gabc2888476e50e001c875c1a8abf455b7":[9,0,0,0,144],
"group__usercb.html":[7,16],
"group__usercb.html#gad4fcb82e68d60ffacca61a3f783a0a2f":[7,16,0],
"group__usercb.html#gad4fcb82e68d60ffacca61a3f783a0a2f":[9,0,0,0,7],
@@ -98,8 +100,8 @@ var NAVTREEINDEX2 =
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7ec8e2e9557ee02a4fc9f7dec7e2babc":[7,16,1,11],
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a838b18d255c1b94a533287ba302a2eba":[7,16,1,5],
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a838b18d255c1b94a533287ba302a2eba":[9,0,0,0,19,5],
-"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8909732521d379179003d97ab7a05428":[7,16,1,35],
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8909732521d379179003d97ab7a05428":[9,0,0,0,19,35],
+"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8909732521d379179003d97ab7a05428":[7,16,1,35],
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a89862929a72bff65257ca1d51a0fce4d":[9,0,0,0,19,52],
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8e8b2e6dbeac76d8d126947d2166a514":[9,0,0,0,19,10],
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8e8b2e6dbeac76d8d126947d2166a514":[7,16,1,10],
@@ -123,8 +125,8 @@ var NAVTREEINDEX2 =
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7abbbe7a0a67c5866ca9109d46823fc5b1":[7,16,1,8],
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7abcf9c720cd3d361a83d1ac65bf052a25":[9,0,0,0,19,39],
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac11c336f7052abf3618962902a71ebc8":[9,0,0,0,19,54],
-"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac3fc5bbb55e69f90396526287ee84a51":[7,16,1,38],
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac3fc5bbb55e69f90396526287ee84a51":[9,0,0,0,19,38],
+"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac3fc5bbb55e69f90396526287ee84a51":[7,16,1,38],
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac432e9f891c733ba8f968c1bf57c0ddc":[9,0,0,0,19,45],
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac4c68e00efcf1ff7bda7ada462aff8ae":[9,0,0,0,19,13],
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac4c68e00efcf1ff7bda7ada462aff8ae":[7,16,1,13],
@@ -145,23 +147,23 @@ var NAVTREEINDEX2 =
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae4986291b7a810fe290851d73bebeb1c":[7,16,1,21],
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae5ad65d779b7eab32ab67ceff91a3bac":[9,0,0,0,19,23],
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae5ad65d779b7eab32ab67ceff91a3bac":[7,16,1,23],
-"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae8d1de0bb56e03aa58cb4d44b18edd2e":[9,0,0,0,19,12],
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae8d1de0bb56e03aa58cb4d44b18edd2e":[7,16,1,12],
+"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae8d1de0bb56e03aa58cb4d44b18edd2e":[9,0,0,0,19,12],
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae9734e1d7af2abf291665ce9e4a728d3":[9,0,0,0,19,19],
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae9734e1d7af2abf291665ce9e4a728d3":[7,16,1,19],
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7af6cf80e57aae8ba0a57a5c456b1fe026":[9,0,0,0,19,55],
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afc4b2f72cc9e424a750b506ce0cc4310":[9,0,0,0,19,51],
-"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afd8fd77a1cc9405fcb4f26915d7f2d01":[7,16,1,29],
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afd8fd77a1cc9405fcb4f26915d7f2d01":[9,0,0,0,19,29],
+"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afd8fd77a1cc9405fcb4f26915d7f2d01":[7,16,1,29],
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afedadfb3cde37a8ea4c84ed535f26d09":[9,0,0,0,19,16],
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afedadfb3cde37a8ea4c84ed535f26d09":[7,16,1,16],
"group__uv.html":[7,22],
-"group__uv.html#ga097c89497824d4de225a85a00661fc89":[9,0,0,0,108],
-"group__uv.html#ga3c75cd6ec3f80fc0a0c8ead4c4e71a15":[9,0,0,0,109],
-"group__uv.html#ga99099e045993383f251a8026e1e40414":[9,0,0,0,147],
-"group__uv.html#gaa5e3593c94f91910d9d928dfa0c18f6c":[9,0,0,0,144],
-"group__uv.html#gac5f60dba13a45e5d554b4fb7df7b9610":[9,0,0,0,146],
-"group__uv.html#gad85ce3bfc53ff754988d36bf5de39e21":[9,0,0,0,145],
+"group__uv.html#ga097c89497824d4de225a85a00661fc89":[9,0,0,0,109],
+"group__uv.html#ga3c75cd6ec3f80fc0a0c8ead4c4e71a15":[9,0,0,0,110],
+"group__uv.html#ga99099e045993383f251a8026e1e40414":[9,0,0,0,148],
+"group__uv.html#gaa5e3593c94f91910d9d928dfa0c18f6c":[9,0,0,0,145],
+"group__uv.html#gac5f60dba13a45e5d554b4fb7df7b9610":[9,0,0,0,147],
+"group__uv.html#gad85ce3bfc53ff754988d36bf5de39e21":[9,0,0,0,146],
"group__vhost-mounts.html":[7,4,0],
"group__vhost-mounts.html#ga31eca18e50cb4357480f2fcad36ff437":[7,4,0,2],
"group__vhost-mounts.html#ga31eca18e50cb4357480f2fcad36ff437":[9,0,0,0,28],
@@ -169,69 +171,69 @@ var NAVTREEINDEX2 =
"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a13ab58b01ac6e05f595977f1e0f0db69":[9,0,0,0,28,3],
"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a1e9f0842b0e85db50fe648ed4ba9a4b0":[7,4,0,2,0],
"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a1e9f0842b0e85db50fe648ed4ba9a4b0":[9,0,0,0,28,0],
-"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2":[9,0,0,0,28,2],
"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2":[7,4,0,2,2],
+"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2":[9,0,0,0,28,2],
"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67":[7,4,0,2,5],
"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67":[9,0,0,0,28,5],
-"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da":[7,4,0,2,6],
"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da":[9,0,0,0,28,6],
+"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da":[7,4,0,2,6],
"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437aec137a2434851bd856ceebfb697b9970":[7,4,0,2,4],
"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437aec137a2434851bd856ceebfb697b9970":[9,0,0,0,28,4],
-"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437afbd10eb4777517ed1f6bfdcf3b9ea1d1":[9,0,0,0,28,1],
"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437afbd10eb4777517ed1f6bfdcf3b9ea1d1":[7,4,0,2,1],
+"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437afbd10eb4777517ed1f6bfdcf3b9ea1d1":[9,0,0,0,28,1],
"group__wsclose.html":[7,17],
-"group__wsclose.html#gaa1c863415d1783cd8de7938aa6efa262":[9,0,0,0,61],
"group__wsclose.html#gaa1c863415d1783cd8de7938aa6efa262":[7,17,1],
+"group__wsclose.html#gaa1c863415d1783cd8de7938aa6efa262":[9,0,0,0,61],
"group__wsclose.html#gae399c571df32ba532c0ca67da9284985":[9,0,0,0,21],
"group__wsclose.html#gae399c571df32ba532c0ca67da9284985":[7,17,0],
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a1bb501d212fa4d57053db681b1dfab98":[9,0,0,0,21,3],
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a1bb501d212fa4d57053db681b1dfab98":[7,17,0,2],
-"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a2e1f0113494a58e762eed3d22e7080d8":[9,0,0,0,21,10],
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a2e1f0113494a58e762eed3d22e7080d8":[7,17,0,9],
+"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a2e1f0113494a58e762eed3d22e7080d8":[9,0,0,0,21,10],
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a32c38edab10d1379febac0c479ab2e9c":[9,0,0,0,21,14],
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a3ffa38d5081b85fb739e02a747ccf2c4":[9,0,0,0,21,1],
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a3ffa38d5081b85fb739e02a747ccf2c4":[7,17,0,0],
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a462c99b05459df700919cfd3f53c8276":[9,0,0,0,21,4],
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a462c99b05459df700919cfd3f53c8276":[7,17,0,3],
-"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a4b8a3b7ce6f731e5248e4b0fb64a5044":[9,0,0,0,21,6],
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a4b8a3b7ce6f731e5248e4b0fb64a5044":[7,17,0,5],
+"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a4b8a3b7ce6f731e5248e4b0fb64a5044":[9,0,0,0,21,6],
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a68b3d34bebd88547dcfa5cadba0acd6c":[9,0,0,0,21,7],
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a68b3d34bebd88547dcfa5cadba0acd6c":[7,17,0,6],
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a7aef2da0062da606eeb35aaca5cf9050":[9,0,0,0,21,8],
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a7aef2da0062da606eeb35aaca5cf9050":[7,17,0,7],
-"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a9737a68759e739856b150ff9dfa30218":[7,17,0,1],
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a9737a68759e739856b150ff9dfa30218":[9,0,0,0,21,2],
-"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ac6a161822783ee873be1c66f48d14e0e":[9,0,0,0,21,11],
+"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a9737a68759e739856b150ff9dfa30218":[7,17,0,1],
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ac6a161822783ee873be1c66f48d14e0e":[7,17,0,10],
+"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ac6a161822783ee873be1c66f48d14e0e":[9,0,0,0,21,11],
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985acc9a317c70363dd88e823e066b2c73b7":[9,0,0,0,21,0],
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad0869604d79e13700ae5d196a431b350":[9,0,0,0,21,12],
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad0869604d79e13700ae5d196a431b350":[7,17,0,11],
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad09e68295eabdddcba4e332fbea70ae5":[9,0,0,0,21,9],
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad09e68295eabdddcba4e332fbea70ae5":[7,17,0,8],
-"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad2b477a91c8445bf34ecd43977f9b390":[7,17,0,12],
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad2b477a91c8445bf34ecd43977f9b390":[9,0,0,0,21,13],
-"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985af90cb98d983ad3d4c79df9b6f3d4a4d2":[7,17,0,4],
+"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad2b477a91c8445bf34ecd43977f9b390":[7,17,0,12],
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985af90cb98d983ad3d4c79df9b6f3d4a4d2":[9,0,0,0,21,5],
+"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985af90cb98d983ad3d4c79df9b6f3d4a4d2":[7,17,0,4],
"group__wsstatus.html":[7,18],
-"group__wsstatus.html#ga08e9ee165fca503fd9427d55cfecac37":[9,0,0,0,103],
"group__wsstatus.html#ga08e9ee165fca503fd9427d55cfecac37":[7,18,3],
-"group__wsstatus.html#ga26a140623d202dd2bf2004deb6994baa":[9,0,0,0,104],
+"group__wsstatus.html#ga08e9ee165fca503fd9427d55cfecac37":[9,0,0,0,104],
+"group__wsstatus.html#ga26a140623d202dd2bf2004deb6994baa":[9,0,0,0,105],
"group__wsstatus.html#ga26a140623d202dd2bf2004deb6994baa":[7,18,4],
"group__wsstatus.html#ga2bb3655329b4651cd06f79ee3a764421":[7,18,6],
-"group__wsstatus.html#ga2bb3655329b4651cd06f79ee3a764421":[9,0,0,0,121],
+"group__wsstatus.html#ga2bb3655329b4651cd06f79ee3a764421":[9,0,0,0,122],
"group__wsstatus.html#ga3df5045656dfb6b0e63a38de2dca79d2":[7,18,1],
-"group__wsstatus.html#ga3df5045656dfb6b0e63a38de2dca79d2":[9,0,0,0,89],
-"group__wsstatus.html#ga4ad226d5e01024b4046f4a5a37199aa1":[9,0,0,0,102],
+"group__wsstatus.html#ga3df5045656dfb6b0e63a38de2dca79d2":[9,0,0,0,90],
"group__wsstatus.html#ga4ad226d5e01024b4046f4a5a37199aa1":[7,18,2],
+"group__wsstatus.html#ga4ad226d5e01024b4046f4a5a37199aa1":[9,0,0,0,103],
"group__wsstatus.html#gaccd9c59336efad8af0554f79cc5966fd":[7,18,0],
"group__wsstatus.html#gaccd9c59336efad8af0554f79cc5966fd":[9,0,0,0,77],
-"group__wsstatus.html#gaeca4afc94b1f026034f99cbba37e2f85":[9,0,0,0,112],
"group__wsstatus.html#gaeca4afc94b1f026034f99cbba37e2f85":[7,18,5],
+"group__wsstatus.html#gaeca4afc94b1f026034f99cbba37e2f85":[9,0,0,0,113],
"hierarchy.html":[8,2],
"index.html":[],
"index.html":[0],
"libwebsockets_8h.html":[9,0,0,0],
-"libwebsockets_8h.html#a0b056fdcf949a838ff82209b4a627dd9":[9,0,0,0,157],
+"libwebsockets_8h.html#a0b056fdcf949a838ff82209b4a627dd9":[9,0,0,0,158],
"libwebsockets_8h.html#a2271141d8be8d72b47ba327130b4905f":[9,0,0,0,23],
"libwebsockets_8h.html#a2271141d8be8d72b47ba327130b4905fa7741c12fc97574fa73a810fedae2be76":[9,0,0,0,23,1],
"libwebsockets_8h.html#a2271141d8be8d72b47ba327130b4905fa9ce9c65d4229d1d168fca3cc12e7f535":[9,0,0,0,23,2],
@@ -246,8 +248,6 @@ var NAVTREEINDEX2 =
"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedbad9cdc12a796e6c7d912278834d9c7dde":[9,0,0,0,20,3],
"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedbada3dca91d96bcde5df08a67b5a66e972":[9,0,0,0,20,5],
"libwebsockets_8h.html#a5326d3402af8429a166dd991dc65c4a2":[9,0,0,0,56],
-"libwebsockets_8h.html#a5e627dbf1db48170ef486edbaf268672":[9,0,0,0,119],
-"libwebsockets_8h.html#a72fe65e83b8bb03f904a1a256c673536":[9,0,0,0,117],
-"libwebsockets_8h.html#a9032a3062641d334161c29adcc4fa15d":[9,0,0,0,159],
-"libwebsockets_8h.html#a9f2a8506fd963db95a5103823c60fb0a":[9,0,0,0,160]
+"libwebsockets_8h.html#a5e627dbf1db48170ef486edbaf268672":[9,0,0,0,120],
+"libwebsockets_8h.html#a72fe65e83b8bb03f904a1a256c673536":[9,0,0,0,118]
};
diff --git a/doc/html/navtreeindex3.js b/doc/html/navtreeindex3.js
index 572cfad4..b6ffc936 100644
--- a/doc/html/navtreeindex3.js
+++ b/doc/html/navtreeindex3.js
@@ -1,10 +1,12 @@
var NAVTREEINDEX3 =
{
+"libwebsockets_8h.html#a9032a3062641d334161c29adcc4fa15d":[9,0,0,0,160],
+"libwebsockets_8h.html#a9f2a8506fd963db95a5103823c60fb0a":[9,0,0,0,161],
"libwebsockets_8h.html#abddb8d337fb2692586d892b494739003":[9,0,0,0,17],
"libwebsockets_8h.html#ac3abb8b7e6d29a0292797230e4031681":[9,0,0,0,16],
"libwebsockets_8h.html#adedbc79528b71a5c7f27cde87100c9aa":[9,0,0,0,14],
-"libwebsockets_8h.html#adf4abd01e8c43f07c6e498ce13590c3e":[9,0,0,0,120],
-"libwebsockets_8h.html#aefb2f20fe5bb29d79701a399838ef4ce":[9,0,0,0,158],
+"libwebsockets_8h.html#adf4abd01e8c43f07c6e498ce13590c3e":[9,0,0,0,121],
+"libwebsockets_8h.html#aefb2f20fe5bb29d79701a399838ef4ce":[9,0,0,0,159],
"libwebsockets_8h.html#af52923473c59e643a974d65e12290831":[9,0,0,0,54],
"libwebsockets_8h.html#aff42d53861afdc1a6edfb999ba688ecb":[9,0,0,0,10],
"libwebsockets_8h_source.html":[9,0,0,0],
@@ -176,14 +178,14 @@ var NAVTREEINDEX3 =
"structlws__process__html__state.html#af21119890fdfebe28fb5c4dabfc1bdf5":[7,6,1,1,1],
"structlws__protocol__vhost__options.html":[7,4,0,0],
"structlws__protocol__vhost__options.html":[7,4,2],
-"structlws__protocol__vhost__options.html#a0640a92513c70ee6b9b295a9ad1658e7":[7,4,0,0,3],
"structlws__protocol__vhost__options.html#a0640a92513c70ee6b9b295a9ad1658e7":[7,4,2,3],
-"structlws__protocol__vhost__options.html#abc714ddb4171756fc8196e9823a1e21c":[7,4,0,0,1],
+"structlws__protocol__vhost__options.html#a0640a92513c70ee6b9b295a9ad1658e7":[7,4,0,0,3],
"structlws__protocol__vhost__options.html#abc714ddb4171756fc8196e9823a1e21c":[7,4,2,1],
+"structlws__protocol__vhost__options.html#abc714ddb4171756fc8196e9823a1e21c":[7,4,0,0,1],
"structlws__protocol__vhost__options.html#acf9db77f8eb64cd4e314be9b43d8a8b9":[7,4,0,0,0],
"structlws__protocol__vhost__options.html#acf9db77f8eb64cd4e314be9b43d8a8b9":[7,4,2,0],
-"structlws__protocol__vhost__options.html#afd99fbc90be51ea2465b550c2ec47822":[7,4,0,0,2],
"structlws__protocol__vhost__options.html#afd99fbc90be51ea2465b550c2ec47822":[7,4,2,2],
+"structlws__protocol__vhost__options.html#afd99fbc90be51ea2465b550c2ec47822":[7,4,0,0,2],
"structlws__protocols.html":[7,10,1],
"structlws__protocols.html#a0d1d4996d81b2f5e125bcec981e461c5":[7,10,1,4],
"structlws__protocols.html#a0e63edb457a613c3fa4271e0a8f19624":[7,10,1,2],
@@ -201,10 +203,10 @@ var NAVTREEINDEX3 =
"structlws__token__limits.html#a6ec712306cbf8585bce7a56758a3ceff":[7,6,4,1,0],
"structlws__tokens.html":[7,6,4,0],
"structlws__tokens.html":[7,6,6],
-"structlws__tokens.html#a855b7375d1d58516c0ecd4b60e9a7766":[7,6,6,1],
"structlws__tokens.html#a855b7375d1d58516c0ecd4b60e9a7766":[7,6,4,0,1],
-"structlws__tokens.html#a9f3635412bc71a5cb78e9862b55f10cd":[7,6,6,0],
+"structlws__tokens.html#a855b7375d1d58516c0ecd4b60e9a7766":[7,6,6,1],
"structlws__tokens.html#a9f3635412bc71a5cb78e9862b55f10cd":[7,6,4,0,0],
+"structlws__tokens.html#a9f3635412bc71a5cb78e9862b55f10cd":[7,6,6,0],
"structlwsgw__hash.html":[7,10,0,1],
"structlwsgw__hash.html#a29435f5cf78747d4257695b0f141d164":[7,10,0,1,0],
"structlwsgw__hash__bin.html":[7,10,0,0],
diff --git a/doc/latex/group__form-parsing.tex b/doc/latex/group__form-parsing.tex
index dbbb54bf..db54f682 100644
--- a/doc/latex/group__form-parsing.tex
+++ b/doc/latex/group__form-parsing.tex
@@ -89,11 +89,11 @@ L\+W\+S\+\_\+\+U\+F\+S\+\_\+\+O\+P\+EN\hypertarget{group__form-parsing_gga41a74a
\end{Desc}
\begin{DoxyCode}
-2604 \{
-2605 \hyperlink{group__form-parsing_gga41a74a822771d3dce89751aa3bce28aead3a958e7719ac273c3ba4f684f00c87f}{LWS\_UFS\_CONTENT},
-2607 \hyperlink{group__form-parsing_gga41a74a822771d3dce89751aa3bce28aea6ce2a55a4c3695cdb640c893d95bd3a7}{LWS\_UFS\_FINAL\_CONTENT},
-2609 \hyperlink{group__form-parsing_gga41a74a822771d3dce89751aa3bce28aea2d25de44865bd44e5a3903a2bab9ca83}{LWS\_UFS\_OPEN}
-2611 \};
+2618 \{
+2619 \hyperlink{group__form-parsing_gga41a74a822771d3dce89751aa3bce28aead3a958e7719ac273c3ba4f684f00c87f}{LWS\_UFS\_CONTENT},
+2621 \hyperlink{group__form-parsing_gga41a74a822771d3dce89751aa3bce28aea6ce2a55a4c3695cdb640c893d95bd3a7}{LWS\_UFS\_FINAL\_CONTENT},
+2623 \hyperlink{group__form-parsing_gga41a74a822771d3dce89751aa3bce28aea2d25de44865bd44e5a3903a2bab9ca83}{LWS\_UFS\_OPEN}
+2625 \};
\end{DoxyCode}
diff --git a/doc/latex/group__httpft.tex b/doc/latex/group__httpft.tex
index b3710cfa..a430d8a6 100644
--- a/doc/latex/group__httpft.tex
+++ b/doc/latex/group__httpft.tex
@@ -3,6 +3,8 @@
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item
+L\+W\+S\+\_\+\+V\+I\+S\+I\+B\+LE L\+W\+S\+\_\+\+E\+X\+T\+E\+RN const char $\ast$ \hyperlink{group__httpft_gab4da87a4800413f15e7aba649fb1d77c}{lws\+\_\+get\+\_\+mimetype} (const char $\ast$file, const struct \hyperlink{structlws__http__mount}{lws\+\_\+http\+\_\+mount} $\ast$m)
+\item
L\+W\+S\+\_\+\+V\+I\+S\+I\+B\+LE L\+W\+S\+\_\+\+E\+X\+T\+E\+RN int \hyperlink{group__httpft_gab393a06d3d2722af4c3f8b06842c80d7}{lws\+\_\+serve\+\_\+http\+\_\+file} (struct lws $\ast$wsi, const char $\ast$file, const char $\ast$content\+\_\+type, const char $\ast$other\+\_\+headers, int other\+\_\+headers\+\_\+len)
\item
L\+W\+S\+\_\+\+V\+I\+S\+I\+B\+LE L\+W\+S\+\_\+\+E\+X\+T\+E\+RN int {\bfseries lws\+\_\+serve\+\_\+http\+\_\+file\+\_\+fragment} (struct lws $\ast$wsi)\hypertarget{group__httpft_ga29e1123f6d56cd777b3e5bf9ca40f9e5}{}\label{group__httpft_ga29e1123f6d56cd777b3e5bf9ca40f9e5}
@@ -14,7 +16,30 @@ L\+W\+S\+\_\+\+V\+I\+S\+I\+B\+LE L\+W\+S\+\_\+\+E\+X\+T\+E\+RN int {\bfseries lw
A\+P\+Is for sending local files in response to H\+T\+TP requests
\subsection{Function Documentation}
-\index{H\+T\+T\+P File transfer@{H\+T\+T\+P File transfer}!lws\+\_\+serve\+\_\+http\+\_\+file@{lws\+\_\+serve\+\_\+http\+\_\+file}}
+\index{H\+T\+T\+P File transfer@{H\+T\+T\+P File transfer}!lws\+\_\+get\+\_\+mimetype@{lws\+\_\+get\+\_\+mimetype}}
+\index{lws\+\_\+get\+\_\+mimetype@{lws\+\_\+get\+\_\+mimetype}!H\+T\+T\+P File transfer@{H\+T\+T\+P File transfer}}
+\subsubsection[{\texorpdfstring{lws\+\_\+get\+\_\+mimetype(const char $\ast$file, const struct lws\+\_\+http\+\_\+mount $\ast$m)}{lws\_get\_mimetype(const char *file, const struct lws\_http\_mount *m)}}]{\setlength{\rightskip}{0pt plus 5cm}L\+W\+S\+\_\+\+V\+I\+S\+I\+B\+LE L\+W\+S\+\_\+\+E\+X\+T\+E\+RN const char$\ast$ lws\+\_\+get\+\_\+mimetype (
+\begin{DoxyParamCaption}
+\item[{const char $\ast$}]{file, }
+\item[{const struct {\bf lws\+\_\+http\+\_\+mount} $\ast$}]{m}
+\end{DoxyParamCaption}
+)}\hypertarget{group__httpft_gab4da87a4800413f15e7aba649fb1d77c}{}\label{group__httpft_gab4da87a4800413f15e7aba649fb1d77c}
+
+
+{\ttfamily \#include $<$\hyperlink{libwebsockets_8h}{lib/libwebsockets.\+h}$>$}
+
+\hyperlink{group__httpft_gab4da87a4800413f15e7aba649fb1d77c}{lws\+\_\+get\+\_\+mimetype()} -\/ Determine mimetype to use from filename
+
+
+\begin{DoxyParams}{Parameters}
+{\em file} & filename \\
+\hline
+{\em m} & N\+U\+LL, or mount context\\
+\hline
+\end{DoxyParams}
+This uses a canned list of known filetypes first, if no match and m is non-\/\+N\+U\+LL, then tries a list of per-\/mount file suffix to mimtype mappings.
+
+Returns either N\+U\+LL or a pointer to the mimetype matching the file. \index{H\+T\+T\+P File transfer@{H\+T\+T\+P File transfer}!lws\+\_\+serve\+\_\+http\+\_\+file@{lws\+\_\+serve\+\_\+http\+\_\+file}}
\index{lws\+\_\+serve\+\_\+http\+\_\+file@{lws\+\_\+serve\+\_\+http\+\_\+file}!H\+T\+T\+P File transfer@{H\+T\+T\+P File transfer}}
\subsubsection[{\texorpdfstring{lws\+\_\+serve\+\_\+http\+\_\+file(struct lws $\ast$wsi, const char $\ast$file, const char $\ast$content\+\_\+type, const char $\ast$other\+\_\+headers, int other\+\_\+headers\+\_\+len)}{lws\_serve\_http\_file(struct lws *wsi, const char *file, const char *content\_type, const char *other\_headers, int other\_headers\_len)}}]{\setlength{\rightskip}{0pt plus 5cm}L\+W\+S\+\_\+\+V\+I\+S\+I\+B\+LE L\+W\+S\+\_\+\+E\+X\+T\+E\+RN int lws\+\_\+serve\+\_\+http\+\_\+file (
\begin{DoxyParamCaption}
diff --git a/doc/latex/group__sending-data.tex b/doc/latex/group__sending-data.tex
index 2d90a8d3..cc54a8c6 100644
--- a/doc/latex/group__sending-data.tex
+++ b/doc/latex/group__sending-data.tex
@@ -57,28 +57,28 @@ L\+W\+S\+\_\+\+W\+R\+I\+T\+E\+\_\+\+C\+L\+I\+E\+N\+T\+\_\+\+I\+G\+N\+O\+R\+E\+\_
\end{Desc}
\begin{DoxyCode}
-2945 \{
-2946 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193da80e8f169fda236c56bfb795ed62903db}{LWS\_WRITE\_TEXT} = 0,
-2950 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193daf6486c0dba50c44198100717721d9ab2}{LWS\_WRITE\_BINARY} = 1,
-2953 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193da10047eb05b5e1c298151dc47a5b44826}{LWS\_WRITE\_CONTINUATION} = 2,
-2956 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193dabb6705e1d1327cdda5025be28f07712e}{LWS\_WRITE\_HTTP} = 3,
-2959 \textcolor{comment}{/* LWS\_WRITE\_CLOSE is handled by lws\_close\_reason() */}
-2960 LWS\_WRITE\_PING = 5,
-2961 LWS\_WRITE\_PONG = 6,
-2962
-2963 \textcolor{comment}{/* Same as write\_http but we know this write ends the transaction */}
-2964 LWS\_WRITE\_HTTP\_FINAL = 7,
-2965
-2966 \textcolor{comment}{/* HTTP2 */}
-2967
-2968 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917}{LWS\_WRITE\_HTTP\_HEADERS} = 8,
-2975 \textcolor{comment}{/****** add new things just above ---^ ******/}
+2959 \{
+2960 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193da80e8f169fda236c56bfb795ed62903db}{LWS\_WRITE\_TEXT} = 0,
+2964 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193daf6486c0dba50c44198100717721d9ab2}{LWS\_WRITE\_BINARY} = 1,
+2967 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193da10047eb05b5e1c298151dc47a5b44826}{LWS\_WRITE\_CONTINUATION} = 2,
+2970 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193dabb6705e1d1327cdda5025be28f07712e}{LWS\_WRITE\_HTTP} = 3,
+2973 \textcolor{comment}{/* LWS\_WRITE\_CLOSE is handled by lws\_close\_reason() */}
+2974 LWS\_WRITE\_PING = 5,
+2975 LWS\_WRITE\_PONG = 6,
2976
-2977 \textcolor{comment}{/* flags */}
-2978
-2979 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193da115440f272a5d55518adfc8099acfee3}{LWS\_WRITE\_NO\_FIN} = 0x40,
-2982 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193da220d8e8652d9b97fb66e476e2a60ffce}{LWS\_WRITE\_CLIENT\_IGNORE\_XOR\_MASK} = 0x80
-2986 \};
+2977 \textcolor{comment}{/* Same as write\_http but we know this write ends the transaction */}
+2978 LWS\_WRITE\_HTTP\_FINAL = 7,
+2979
+2980 \textcolor{comment}{/* HTTP2 */}
+2981
+2982 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917}{LWS\_WRITE\_HTTP\_HEADERS} = 8,
+2989 \textcolor{comment}{/****** add new things just above ---^ ******/}
+2990
+2991 \textcolor{comment}{/* flags */}
+2992
+2993 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193da115440f272a5d55518adfc8099acfee3}{LWS\_WRITE\_NO\_FIN} = 0x40,
+2996 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193da220d8e8652d9b97fb66e476e2a60ffce}{LWS\_WRITE\_CLIENT\_IGNORE\_XOR\_MASK} = 0x80
+3000 \};
\end{DoxyCode}
diff --git a/doc/latex/group__smtp.tex b/doc/latex/group__smtp.tex
index 5b2cc78d..fd2b5aa9 100644
--- a/doc/latex/group__smtp.tex
+++ b/doc/latex/group__smtp.tex
@@ -88,17 +88,17 @@ L\+G\+S\+S\+M\+T\+P\+\_\+\+S\+E\+N\+T\+\_\+\+Q\+U\+IT\hypertarget{group__smtp_gg
\end{Desc}
\begin{DoxyCode}
-3867 \{
-3868 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c}{LGSSMTP\_IDLE},
-3869 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933}{LGSSMTP\_CONNECTING},
-3870 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d}{LGSSMTP\_CONNECTED},
-3871 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad}{LGSSMTP\_SENT\_HELO},
-3872 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab}{LGSSMTP\_SENT\_FROM},
-3873 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83}{LGSSMTP\_SENT\_TO},
-3874 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14}{LGSSMTP\_SENT\_DATA},
-3875 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69}{LGSSMTP\_SENT\_BODY},
-3876 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5}{LGSSMTP\_SENT\_QUIT},
-3877 \};
+3881 \{
+3882 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c}{LGSSMTP\_IDLE},
+3883 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933}{LGSSMTP\_CONNECTING},
+3884 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d}{LGSSMTP\_CONNECTED},
+3885 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad}{LGSSMTP\_SENT\_HELO},
+3886 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab}{LGSSMTP\_SENT\_FROM},
+3887 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83}{LGSSMTP\_SENT\_TO},
+3888 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14}{LGSSMTP\_SENT\_DATA},
+3889 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69}{LGSSMTP\_SENT\_BODY},
+3890 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5}{LGSSMTP\_SENT\_QUIT},
+3891 \};
\end{DoxyCode}
diff --git a/doc/latex/libwebsockets_8h.tex b/doc/latex/libwebsockets_8h.tex
index e3caff51..48b1326b 100644
--- a/doc/latex/libwebsockets_8h.tex
+++ b/doc/latex/libwebsockets_8h.tex
@@ -612,6 +612,8 @@ L\+W\+S\+\_\+\+V\+I\+S\+I\+B\+LE L\+W\+S\+\_\+\+E\+X\+T\+E\+RN int \hyperlink{gr
\item
L\+W\+S\+\_\+\+V\+I\+S\+I\+B\+LE L\+W\+S\+\_\+\+E\+X\+T\+E\+RN int \hyperlink{group__service_gaebf426eda371ba23642fc11d8e0ace6b}{lws\+\_\+service\+\_\+fd\+\_\+tsi} (struct lws\+\_\+context $\ast$context, struct \hyperlink{structlws__pollfd}{lws\+\_\+pollfd} $\ast$\hyperlink{structpollfd}{pollfd}, int tsi)
\item
+L\+W\+S\+\_\+\+V\+I\+S\+I\+B\+LE L\+W\+S\+\_\+\+E\+X\+T\+E\+RN const char $\ast$ \hyperlink{group__httpft_gab4da87a4800413f15e7aba649fb1d77c}{lws\+\_\+get\+\_\+mimetype} (const char $\ast$file, const struct \hyperlink{structlws__http__mount}{lws\+\_\+http\+\_\+mount} $\ast$m)
+\item
L\+W\+S\+\_\+\+V\+I\+S\+I\+B\+LE L\+W\+S\+\_\+\+E\+X\+T\+E\+RN int \hyperlink{group__httpft_gab393a06d3d2722af4c3f8b06842c80d7}{lws\+\_\+serve\+\_\+http\+\_\+file} (struct lws $\ast$wsi, const char $\ast$file, const char $\ast$content\+\_\+type, const char $\ast$other\+\_\+headers, int other\+\_\+headers\+\_\+len)
\item
L\+W\+S\+\_\+\+V\+I\+S\+I\+B\+LE L\+W\+S\+\_\+\+E\+X\+T\+E\+RN int {\bfseries lws\+\_\+serve\+\_\+http\+\_\+file\+\_\+fragment} (struct lws $\ast$wsi)
diff --git a/lib/libwebsockets.h b/lib/libwebsockets.h
index e927276e..ba55ea3c 100644
--- a/lib/libwebsockets.h
+++ b/lib/libwebsockets.h
@@ -2143,6 +2143,20 @@ lws_service_fd_tsi(struct lws_context *context, struct lws_pollfd *pollfd,
*/
//@{
+/**
+ * lws_get_mimetype() - Determine mimetype to use from filename
+ *
+ * \param file: filename
+ * \param m: NULL, or mount context
+ *
+ * This uses a canned list of known filetypes first, if no match and m is
+ * non-NULL, then tries a list of per-mount file suffix to mimtype mappings.
+ *
+ * Returns either NULL or a pointer to the mimetype matching the file.
+ */
+LWS_VISIBLE LWS_EXTERN const char *
+lws_get_mimetype(const char *file, const struct lws_http_mount *m);
+
/**
* lws_serve_http_file() - Send a file back to the client using http
* \param wsi: Websocket instance (available from user callback)
diff --git a/lib/server.c b/lib/server.c
index 5d4b246e..3524d45f 100644
--- a/lib/server.c
+++ b/lib/server.c
@@ -218,8 +218,8 @@ lws_vhost_name_to_protocol(struct lws_vhost *vh, const char *name)
return NULL;
}
-static const char *
-get_mimetype(const char *file, const struct lws_http_mount *m)
+LWS_VISIBLE LWS_EXTERN const char *
+lws_get_mimetype(const char *file, const struct lws_http_mount *m)
{
int n = strlen(file);
const struct lws_protocol_vhost_options *pvo = NULL;
@@ -371,7 +371,7 @@ lws_http_serve(struct lws *wsi, char *uri, const char *origin,
return -1;
#endif
- mimetype = get_mimetype(path, m);
+ mimetype = lws_get_mimetype(path, m);
if (!mimetype) {
lwsl_err("unknown mimetype for %s", path);
goto bail;
|