diff --git a/README.lwsws.md b/README.lwsws.md index d9f6f073..b15dcd00 100644 --- a/README.lwsws.md +++ b/README.lwsws.md @@ -42,6 +42,7 @@ There is a single file intended for global settings "gid": "48", # apache user "count-threads": "1", "server-string": "myserver v1", # returned in http headers + "ws-pingpong-secs": "200", # confirm idle established ws connections this often "init-ssl": "yes" } } diff --git a/doc/html/functions.html b/doc/html/functions.html index 5394803b..38f2718d 100644 --- a/doc/html/functions.html +++ b/doc/html/functions.html @@ -642,6 +642,9 @@ $(document).ready(function(){initNavTree('functions.html','');});
  • write : lws_plat_file_ops
  • +
  • ws_ping_pong_interval +: lws_context_creation_info +
  • diff --git a/doc/html/functions_vars.html b/doc/html/functions_vars.html index e778a9fc..db3225d8 100644 --- a/doc/html/functions_vars.html +++ b/doc/html/functions_vars.html @@ -629,6 +629,9 @@ $(document).ready(function(){initNavTree('functions_vars.html','');});
  • write : lws_plat_file_ops
  • +
  • ws_ping_pong_interval +: lws_context_creation_info +
  • diff --git a/doc/html/group__client.html b/doc/html/group__client.html index a8a241a8..5e2a448d 100644 --- a/doc/html/group__client.html +++ b/doc/html/group__client.html @@ -112,7 +112,7 @@ LWS_VISIBLE LWS_EXTERN int #include <lib/libwebsockets.h>

    enum lws_client_connect_ssl_connection_flags - flags that may be used with struct lws_client_connect_info ssl_connection member to control if and how SSL checks apply to the client connection being created

    -
    1859  {
    1860  LCCSCF_USE_SSL = (1 << 0),
    1861  LCCSCF_ALLOW_SELFSIGNED = (1 << 1),
    1862  LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK = (1 << 2)
    1863 };
    +
    1871  {
    1872  LCCSCF_USE_SSL = (1 << 0),
    1873  LCCSCF_ALLOW_SELFSIGNED = (1 << 1),
    1874  LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK = (1 << 2)
    1875 };

    Function Documentation

    diff --git a/doc/html/group__context-and-vhost.js b/doc/html/group__context-and-vhost.js index e6317dfa..a0c37cac 100644 --- a/doc/html/group__context-and-vhost.js +++ b/doc/html/group__context-and-vhost.js @@ -40,7 +40,8 @@ var group__context_and_vhost = [ "token_limits", "structlws__context__creation__info.html#ac8a75b7b259a3c3a5fbb4219a3f06c29", null ], [ "uid", "structlws__context__creation__info.html#ac105b4180008cb3e672d57beead8382e", null ], [ "user", "structlws__context__creation__info.html#a0e9d94cdfb893d777b4a4db81e7b5ac0", null ], - [ "vhost_name", "structlws__context__creation__info.html#ad50db098a208f045f7811207d2bee4b9", null ] + [ "vhost_name", "structlws__context__creation__info.html#ad50db098a208f045f7811207d2bee4b9", null ], + [ "ws_ping_pong_interval", "structlws__context__creation__info.html#a33a1a25a7df3793f59047e20dd580078", null ] ] ], [ "lws_protocol_vhost_options", "structlws__protocol__vhost__options.html", [ [ "name", "structlws__protocol__vhost__options.html#acf9db77f8eb64cd4e314be9b43d8a8b9", null ], diff --git a/doc/html/group__form-parsing.html b/doc/html/group__form-parsing.html index 98048db0..48661a21 100644 --- a/doc/html/group__form-parsing.html +++ b/doc/html/group__form-parsing.html @@ -156,9 +156,9 @@ Functions

    a new file is starting to arrive

    -
    2639  {
    2644  LWS_UFS_OPEN
    2646 };
    Definition: libwebsockets.h:2642
    -
    Definition: libwebsockets.h:2644
    -
    Definition: libwebsockets.h:2640
    +
    2651  {
    2656  LWS_UFS_OPEN
    2658 };
    Definition: libwebsockets.h:2654
    +
    Definition: libwebsockets.h:2656
    +
    Definition: libwebsockets.h:2652
    diff --git a/doc/html/group__sending-data.html b/doc/html/group__sending-data.html index 40863bae..c9722e07 100644 --- a/doc/html/group__sending-data.html +++ b/doc/html/group__sending-data.html @@ -130,13 +130,13 @@ Functions

    client packet payload goes out on wire unmunged only useful for security tests since normal servers cannot decode the content if used

    -
    2980  {
    2981  LWS_WRITE_TEXT = 0,
    2985  LWS_WRITE_BINARY = 1,
    2991  LWS_WRITE_HTTP = 3,
    2994  /* LWS_WRITE_CLOSE is handled by lws_close_reason() */
    2995  LWS_WRITE_PING = 5,
    2996  LWS_WRITE_PONG = 6,
    2997 
    2998  /* Same as write_http but we know this write ends the transaction */
    2999  LWS_WRITE_HTTP_FINAL = 7,
    3000 
    3001  /* HTTP2 */
    3002 
    3010  /****** add new things just above ---^ ******/
    3011 
    3012  /* flags */
    3013 
    3014  LWS_WRITE_NO_FIN = 0x40,
    3021 };
    Definition: libwebsockets.h:2991
    -
    Definition: libwebsockets.h:3014
    -
    Definition: libwebsockets.h:2981
    -
    Definition: libwebsockets.h:2985
    -
    Definition: libwebsockets.h:3017
    -
    Definition: libwebsockets.h:2988
    -
    Definition: libwebsockets.h:3003
    +
    2994  {
    2995  LWS_WRITE_TEXT = 0,
    2999  LWS_WRITE_BINARY = 1,
    3005  LWS_WRITE_HTTP = 3,
    3008  /* LWS_WRITE_CLOSE is handled by lws_close_reason() */
    3009  LWS_WRITE_PING = 5,
    3010  LWS_WRITE_PONG = 6,
    3011 
    3012  /* Same as write_http but we know this write ends the transaction */
    3013  LWS_WRITE_HTTP_FINAL = 7,
    3014 
    3015  /* HTTP2 */
    3016 
    3024  /****** add new things just above ---^ ******/
    3025 
    3026  /* flags */
    3027 
    3028  LWS_WRITE_NO_FIN = 0x40,
    3035 };
    Definition: libwebsockets.h:3005
    +
    Definition: libwebsockets.h:3028
    +
    Definition: libwebsockets.h:2995
    +
    Definition: libwebsockets.h:2999
    +
    Definition: libwebsockets.h:3031
    +
    Definition: libwebsockets.h:3002
    +
    Definition: libwebsockets.h:3017
    diff --git a/doc/html/group__smtp.html b/doc/html/group__smtp.html index 15f0e3e3..8b7ebed9 100644 --- a/doc/html/group__smtp.html +++ b/doc/html/group__smtp.html @@ -157,15 +157,15 @@ Functions

    sent the session quit

    -
    3902  {
    3903  LGSSMTP_IDLE,
    3908  LGSSMTP_SENT_TO,
    3912 };
    Definition: libwebsockets.h:3905
    -
    Definition: libwebsockets.h:3910
    -
    Definition: libwebsockets.h:3903
    -
    Definition: libwebsockets.h:3904
    -
    Definition: libwebsockets.h:3908
    -
    Definition: libwebsockets.h:3907
    -
    Definition: libwebsockets.h:3911
    -
    Definition: libwebsockets.h:3906
    -
    Definition: libwebsockets.h:3909
    +
    3916  {
    3917  LGSSMTP_IDLE,
    3922  LGSSMTP_SENT_TO,
    3926 };
    Definition: libwebsockets.h:3919
    +
    Definition: libwebsockets.h:3924
    +
    Definition: libwebsockets.h:3917
    +
    Definition: libwebsockets.h:3918
    +
    Definition: libwebsockets.h:3922
    +
    Definition: libwebsockets.h:3921
    +
    Definition: libwebsockets.h:3925
    +
    Definition: libwebsockets.h:3920
    +
    Definition: libwebsockets.h:3923
    diff --git a/doc/html/group__timeout.html b/doc/html/group__timeout.html index 964ecbd1..db6e20dc 100644 --- a/doc/html/group__timeout.html +++ b/doc/html/group__timeout.html @@ -90,7 +90,10 @@ Enumerations   PENDING_FLUSH_STORED_SEND_BEFORE_CLOSE = 12, PENDING_TIMEOUT_SHUTDOWN_FLUSH = 13, PENDING_TIMEOUT_CGI = 14, -PENDING_TIMEOUT_HTTP_KEEPALIVE_IDLE = 15 +PENDING_TIMEOUT_HTTP_KEEPALIVE_IDLE = 15, +
    +  PENDING_TIMEOUT_WS_PONG_CHECK_SEND_PING = 16, +PENDING_TIMEOUT_WS_PONG_CHECK_GET_PONG = 17
    }   diff --git a/doc/html/group__vhost-mounts.html b/doc/html/group__vhost-mounts.html index caf59c3b..e149b09e 100644 --- a/doc/html/group__vhost-mounts.html +++ b/doc/html/group__vhost-mounts.html @@ -129,13 +129,13 @@ Enumerations

    hand by named protocol's callback

    -
    1795  {
    1796  LWSMPRO_HTTP = 0,
    1797  LWSMPRO_HTTPS = 1,
    1798  LWSMPRO_FILE = 2,
    1799  LWSMPRO_CGI = 3,
    1800  LWSMPRO_REDIR_HTTP = 4,
    1801  LWSMPRO_REDIR_HTTPS = 5,
    1802  LWSMPRO_CALLBACK = 6,
    1803 };
    Definition: libwebsockets.h:1799
    -
    Definition: libwebsockets.h:1797
    -
    Definition: libwebsockets.h:1798
    -
    Definition: libwebsockets.h:1800
    -
    Definition: libwebsockets.h:1801
    -
    Definition: libwebsockets.h:1796
    -
    Definition: libwebsockets.h:1802
    +
    1807  {
    1808  LWSMPRO_HTTP = 0,
    1809  LWSMPRO_HTTPS = 1,
    1810  LWSMPRO_FILE = 2,
    1811  LWSMPRO_CGI = 3,
    1812  LWSMPRO_REDIR_HTTP = 4,
    1813  LWSMPRO_REDIR_HTTPS = 5,
    1814  LWSMPRO_CALLBACK = 6,
    1815 };
    Definition: libwebsockets.h:1811
    +
    Definition: libwebsockets.h:1809
    +
    Definition: libwebsockets.h:1810
    +
    Definition: libwebsockets.h:1812
    +
    Definition: libwebsockets.h:1813
    +
    Definition: libwebsockets.h:1808
    +
    Definition: libwebsockets.h:1814
    diff --git a/doc/html/libwebsockets_8h.html b/doc/html/libwebsockets_8h.html index 293b8f94..f2a2e8d1 100644 --- a/doc/html/libwebsockets_8h.html +++ b/doc/html/libwebsockets_8h.html @@ -562,7 +562,10 @@ Enumerations   PENDING_FLUSH_STORED_SEND_BEFORE_CLOSE = 12, PENDING_TIMEOUT_SHUTDOWN_FLUSH = 13, PENDING_TIMEOUT_CGI = 14, -PENDING_TIMEOUT_HTTP_KEEPALIVE_IDLE = 15 +PENDING_TIMEOUT_HTTP_KEEPALIVE_IDLE = 15, +
    +  PENDING_TIMEOUT_WS_PONG_CHECK_SEND_PING = 16, +PENDING_TIMEOUT_WS_PONG_CHECK_GET_PONG = 17
    }   diff --git a/doc/html/libwebsockets_8h.js b/doc/html/libwebsockets_8h.js index b102347b..21a80e6f 100644 --- a/doc/html/libwebsockets_8h.js +++ b/doc/html/libwebsockets_8h.js @@ -368,7 +368,9 @@ var libwebsockets_8h = [ "PENDING_FLUSH_STORED_SEND_BEFORE_CLOSE", "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a0d6b956db11acb6d263af3ea054a914e", null ], [ "PENDING_TIMEOUT_SHUTDOWN_FLUSH", "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a11292263c9eccd090294e7e316200d7f", null ], [ "PENDING_TIMEOUT_CGI", "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a73f61afae387e16f7ab8a4f299aca8d2", null ], - [ "PENDING_TIMEOUT_HTTP_KEEPALIVE_IDLE", "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a5fe48ea6f3f5363cca55d39b78490b45", null ] + [ "PENDING_TIMEOUT_HTTP_KEEPALIVE_IDLE", "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a5fe48ea6f3f5363cca55d39b78490b45", null ], + [ "PENDING_TIMEOUT_WS_PONG_CHECK_SEND_PING", "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87aaac32d9ca2f7c31f5649ad4059d7b985", null ], + [ "PENDING_TIMEOUT_WS_PONG_CHECK_GET_PONG", "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a62ae208399be1f872e14843fd15f9e06", null ] ] ], [ "_lws_log", "group__log.html#gaf5f07837692b2f231a79da8a058288aa", null ], [ "_lws_logv", "group__log.html#ga74eb146969f0595e12ea835851b4588e", null ], diff --git a/doc/html/libwebsockets_8h_source.html b/doc/html/libwebsockets_8h_source.html index 3eb9d675..d2de1e1e 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.
    1 /*
    2  * libwebsockets - small server side websockets and web server implementation
    3  *
    4  * Copyright (C) 2010-2016 Andy Green <andy@warmcat.com>
    5  *
    6  * This library is free software; you can redistribute it and/or
    7  * modify it under the terms of the GNU Lesser General Public
    8  * License as published by the Free Software Foundation:
    9  * version 2.1 of the License.
    10  *
    11  * This library is distributed in the hope that it will be useful,
    12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
    13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    14  * Lesser General Public License for more details.
    15  *
    16  * You should have received a copy of the GNU Lesser General Public
    17  * License along with this library; if not, write to the Free Software
    18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
    19  * MA 02110-1301 USA
    20  */
    21 
    24 #ifndef LIBWEBSOCKET_H_3060898B846849FF9F88F5DB59B5950C
    25 #define LIBWEBSOCKET_H_3060898B846849FF9F88F5DB59B5950C
    26 
    27 #ifdef __cplusplus
    28 #include <cstddef>
    29 #include <cstdarg>
    30 #ifdef MBED_OPERATORS
    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"
    35 
    36 namespace {
    37 }
    38 using namespace mbed::Sockets::v0;
    39 
    40 
    41 struct sockaddr_in;
    42 struct lws;
    43 
    44 class lws_conn {
    45  public:
    46  lws_conn():
    47  ts(NULL),
    48  wsi(NULL),
    49  writeable(1),
    50  awaiting_on_writeable(0)
    51  {
    52  }
    53 
    54 public:
    55  void set_wsi(struct lws *_wsi) { wsi = _wsi; }
    56  int actual_onRX(Socket *s);
    57  void 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);
    62 
    63 public:
    64  TCPStream *ts;
    65 
    66 public:
    67  struct lws *wsi;
    68  char writeable;
    69  char awaiting_on_writeable;
    70 };
    71 
    73 public:
    75  srv(SOCKET_STACK_LWIP_IPV4)
    76  {
    77  srv.setOnError(TCPStream::ErrorHandler_t(this,
    79  }
    80 
    81  void start(const uint16_t port);
    83 protected:
    84  void onRX(Socket *s);
    85  void onError(Socket *s, socket_error_t err);
    86  void onIncoming(TCPListener *s, void *impl);
    87  void onDisconnect(TCPStream *s);
    89 public:
    90  TCPListener srv;
    91 };
    92 
    93 #endif
    94 
    95 extern "C" {
    96 #else
    97 #include <stdarg.h>
    98 #endif
    99 
    100 #ifdef MBED_OPERATORS
    101 struct sockaddr_in;
    102 #define LWS_POSIX 0
    103 #else
    104 #define LWS_POSIX 1
    105 #endif
    106 
    107 #include "lws_config.h"
    108 
    109 #if defined(WIN32) || defined(_WIN32)
    110 #ifndef WIN32_LEAN_AND_MEAN
    111 #define WIN32_LEAN_AND_MEAN
    112 #endif
    113 
    114 #include <winsock2.h>
    115 #include <ws2tcpip.h>
    116 #include <stddef.h>
    117 #include <basetsd.h>
    118 #ifndef _WIN32_WCE
    119 #include <stdint.h>
    120 #include <fcntl.h>
    121 #else
    122 #define _O_RDONLY 0x0000
    123 #define O_RDONLY _O_RDONLY
    124 #endif
    125 
    126 // Visual studio older than 2015 and WIN_CE has only _stricmp
    127 #if (defined(_MSC_VER) && _MSC_VER < 1900) || defined(_WIN32_WCE)
    128 #define strcasecmp _stricmp
    129 #else
    130 #define strcasecmp stricmp
    131 #endif
    132 #define getdtablesize() 30000
    133 
    134 #define LWS_INLINE __inline
    135 #define LWS_VISIBLE
    136 #define LWS_WARN_UNUSED_RESULT
    137 #define LWS_WARN_DEPRECATED
    138 
    139 #ifdef LWS_DLL
    140 #ifdef LWS_INTERNAL
    141 #define LWS_EXTERN extern __declspec(dllexport)
    142 #else
    143 #define LWS_EXTERN extern __declspec(dllimport)
    144 #endif
    145 #else
    146 #define LWS_EXTERN
    147 #endif
    148 
    149 #define LWS_INVALID_FILE INVALID_HANDLE_VALUE
    150 #define LWS_O_RDONLY _O_RDONLY
    151 
    152 #if !defined(_MSC_VER) || _MSC_VER < 1900 /* Visual Studio 2015 already defines this in <stdio.h> */
    153 #define snprintf _snprintf
    154 #endif
    155 
    156 #ifndef __func__
    157 #define __func__ __FUNCTION__
    158 #endif
    159 
    160 #else /* NOT WIN32 */
    161 #include <unistd.h>
    162 
    163 #if defined(__NetBSD__) || defined(__FreeBSD__)
    164 #include <netinet/in.h>
    165 #endif
    166 
    167 #define LWS_INLINE inline
    168 #define LWS_O_RDONLY O_RDONLY
    169 
    170 #ifndef MBED_OPERATORS
    171 #include <poll.h>
    172 #include <netdb.h>
    173 #define LWS_INVALID_FILE -1
    174 #else
    175 #define getdtablesize() (20)
    176 #define LWS_INVALID_FILE NULL
    177 #endif
    178 
    179 #if defined(__GNUC__)
    180 
    181 /* warn_unused_result attribute only supported by GCC 3.4 or later */
    182 #if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
    183 #define LWS_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
    184 #else
    185 #define LWS_WARN_UNUSED_RESULT
    186 #endif
    187 
    188 #define LWS_VISIBLE __attribute__((visibility("default")))
    189 #define LWS_WARN_DEPRECATED __attribute__ ((deprecated))
    190 #else
    191 #define LWS_VISIBLE
    192 #define LWS_WARN_UNUSED_RESULT
    193 #define LWS_WARN_DEPRECATED
    194 #endif
    195 
    196 #if defined(__ANDROID__)
    197 #include <unistd.h>
    198 #define getdtablesize() sysconf(_SC_OPEN_MAX)
    199 #endif
    200 
    201 #endif
    202 
    203 #ifdef LWS_USE_LIBEV
    204 #include <ev.h>
    205 #endif /* LWS_USE_LIBEV */
    206 #ifdef LWS_USE_LIBUV
    207 #include <uv.h>
    208 #endif /* LWS_USE_LIBUV */
    209 
    210 #ifndef LWS_EXTERN
    211 #define LWS_EXTERN extern
    212 #endif
    213 
    214 #ifdef _WIN32
    215 #define random rand
    216 #else
    217 #include <sys/time.h>
    218 #include <unistd.h>
    219 #endif
    220 
    221 #ifdef LWS_OPENSSL_SUPPORT
    222 
    223 #ifdef USE_WOLFSSL
    224 #ifdef USE_OLD_CYASSL
    225 #include <cyassl/openssl/ssl.h>
    226 #include <cyassl/error-ssl.h>
    227 #else
    228 #include <wolfssl/openssl/ssl.h>
    229 #include <wolfssl/error-ssl.h>
    230 #endif /* not USE_OLD_CYASSL */
    231 #else
    232 #if defined(LWS_USE_POLARSSL)
    233 #include <polarssl/ssl.h>
    235  x509_crt ca;
    236  x509_crt certificate;
    237  rsa_context key;
    238 };
    239 typedef struct lws_polarssl_context SSL_CTX;
    240 typedef ssl_context SSL;
    241 #else
    242 #if defined(LWS_USE_MBEDTLS)
    243 #include <mbedtls/ssl.h>
    244 #else
    245 #include <openssl/ssl.h>
    246 #include <openssl/err.h>
    247 #endif /* not USE_MBEDTLS */
    248 #endif /* not USE_POLARSSL */
    249 #endif /* not USE_WOLFSSL */
    250 #endif
    251 
    252 
    253 #define CONTEXT_PORT_NO_LISTEN -1
    254 
    265 
    267 enum lws_log_levels {
    268  LLL_ERR = 1 << 0,
    269  LLL_WARN = 1 << 1,
    270  LLL_NOTICE = 1 << 2,
    271  LLL_INFO = 1 << 3,
    272  LLL_DEBUG = 1 << 4,
    273  LLL_PARSER = 1 << 5,
    274  LLL_HEADER = 1 << 6,
    275  LLL_EXT = 1 << 7,
    276  LLL_CLIENT = 1 << 8,
    277  LLL_LATENCY = 1 << 9,
    278 
    279  LLL_COUNT = 10 /* set to count of valid flags */
    280 };
    281 
    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
    294 lwsl_timestamp(int level, char *p, int len);
    295 
    296 /* notice, warn and log are always compiled in */
    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__)
    300 /*
    301  * weaker logging can be deselected at configure time using --disable-debug
    302  * that gets rid of the overhead of checking while keeping _warn and _err
    303  * active
    304  */
    305 #ifdef _DEBUG
    306 
    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__)
    314 
    320 LWS_VISIBLE LWS_EXTERN void lwsl_hexdump(void *buf, size_t len);
    321 
    322 #else /* no debug */
    323 
    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)
    332 
    333 #endif
    334 
    345 LWS_VISIBLE LWS_EXTERN void
    346 lws_set_log_level(int level,
    347  void (*log_emit_function)(int level, const char *line));
    348 
    358 LWS_VISIBLE LWS_EXTERN void
    359 lwsl_emit_syslog(int level, const char *line);
    360 
    362 
    363 
    364 #include <stddef.h>
    365 
    366 #ifndef lws_container_of
    367 #define lws_container_of(P,T,M) ((T *)((char *)(P) - offsetof(T, M)))
    368 #endif
    369 
    370 
    371 struct lws;
    372 #ifndef ARRAY_SIZE
    373 #define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
    374 #endif
    375 
    376 /* api change list for user code to test against */
    377 
    378 #define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_ARG
    379 
    380 /* the struct lws_protocols has the id field present */
    381 #define LWS_FEATURE_PROTOCOLS_HAS_ID_FIELD
    382 
    383 /* you can call lws_get_peer_write_allowance */
    384 #define LWS_FEATURE_PROTOCOLS_HAS_PEER_WRITE_ALLOWANCE
    385 
    386 /* extra parameter introduced in 917f43ab821 */
    387 #define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_LEN
    388 
    389 /* File operations stuff exists */
    390 #define LWS_FEATURE_FOPS
    391 
    392 
    393 #if defined(_WIN32)
    394 typedef SOCKET lws_sockfd_type;
    395 typedef HANDLE lws_filefd_type;
    396 #define lws_sockfd_valid(sfd) (!!sfd)
    397 struct lws_pollfd {
    398  lws_sockfd_type fd;
    399  SHORT events;
    400  SHORT revents;
    401 };
    402 #define LWS_POLLHUP (FD_CLOSE)
    403 #define LWS_POLLIN (FD_READ | FD_ACCEPT)
    404 #define LWS_POLLOUT (FD_WRITE)
    405 #else
    406 
    407 #if defined(MBED_OPERATORS)
    408 /* it's a class lws_conn * */
    409 typedef void * lws_sockfd_type;
    410 typedef void * lws_filefd_type;
    411 #define lws_sockfd_valid(sfd) (!!sfd)
    412 struct pollfd {
    413  lws_sockfd_type fd;
    414  short events;
    415  short revents;
    416 };
    417 #define POLLIN 0x0001
    418 #define POLLPRI 0x0002
    419 #define POLLOUT 0x0004
    420 #define POLLERR 0x0008
    421 #define POLLHUP 0x0010
    422 #define POLLNVAL 0x0020
    423 
    424 struct lws;
    425 
    426 void * mbed3_create_tcp_stream_socket(void);
    427 void mbed3_delete_tcp_stream_socket(void *sockfd);
    428 void mbed3_tcp_stream_bind(void *sock, int port, struct lws *);
    429 void mbed3_tcp_stream_accept(void *sock, struct lws *);
    430 #else
    431 typedef int lws_sockfd_type;
    432 typedef int lws_filefd_type;
    433 #define lws_sockfd_valid(sfd) (sfd >= 0)
    434 #endif
    435 
    436 #define lws_pollfd pollfd
    437 #define LWS_POLLHUP (POLLHUP|POLLERR)
    438 #define LWS_POLLIN (POLLIN)
    439 #define LWS_POLLOUT (POLLOUT)
    440 #endif
    441 
    444 struct lws_pollargs {
    445  lws_sockfd_type fd;
    446  int events;
    448 };
    449 
    450 struct lws_tokens;
    451 struct lws_token_limits;
    452 
    460 
    462 /*
    463  * NOTE: These public enums are part of the abi. If you want to add one,
    464  * add it at where specified so existing users are unaffected.
    465  */
    468  LWS_CLOSE_STATUS_NOSTATUS = 0,
    530  /****** add new things just above ---^ ******/
    531 
    532  LWS_CLOSE_STATUS_NOSTATUS_CONTEXT_DESTROY = 9999,
    533 };
    534 
    547 LWS_VISIBLE LWS_EXTERN void
    548 lws_close_reason(struct lws *wsi, enum lws_close_status status,
    549  unsigned char *buf, size_t len);
    550 
    552 
    553 struct lws;
    554 struct lws_context;
    555 /* needed even with extensions disabled for create context */
    556 struct lws_extension;
    557 
    569 
    571 
    572 /*
    573  * NOTE: These public enums are part of the abi. If you want to add one,
    574  * add it at where specified so existing users are unaffected.
    575  */
    819  /* external poll() management support */
    882  LWS_CALLBACK_WS_EXT_DEFAULTS = 39,
    885  LWS_CALLBACK_CGI = 40,
    887  LWS_CALLBACK_CGI_TERMINATED = 41,
    889  LWS_CALLBACK_CGI_STDIN_DATA = 42,
    891  LWS_CALLBACK_CGI_STDIN_COMPLETED = 43,
    893  LWS_CALLBACK_ESTABLISHED_CLIENT_HTTP = 44,
    895  LWS_CALLBACK_CLOSED_CLIENT_HTTP = 45,
    897  LWS_CALLBACK_RECEIVE_CLIENT_HTTP = 46,
    899  LWS_CALLBACK_COMPLETED_CLIENT_HTTP = 47,
    901  LWS_CALLBACK_RECEIVE_CLIENT_HTTP_READ = 48,
    903  LWS_CALLBACK_HTTP_BIND_PROTOCOL = 49,
    905  LWS_CALLBACK_HTTP_DROP_PROTOCOL = 50,
    907  LWS_CALLBACK_CHECK_ACCESS_RIGHTS = 51,
    909  LWS_CALLBACK_PROCESS_HTML = 52,
    911  LWS_CALLBACK_ADD_HEADERS = 53,
    913  LWS_CALLBACK_SESSION_INFO = 54,
    916  LWS_CALLBACK_GS_EVENT = 55,
    924  /****** add new things just above ---^ ******/
    925 
    928 };
    929 
    930 
    931 
    947 typedef int
    948 lws_callback_function(struct lws *wsi, enum lws_callback_reasons reason,
    949  void *user, void *in, size_t len);
    951 
    961 
    963 /*
    964  * NOTE: These public enums are part of the abi. If you want to add one,
    965  * add it at where specified so existing users are unaffected.
    966  */
    967 enum lws_extension_callback_reasons {
    968  LWS_EXT_CB_SERVER_CONTEXT_CONSTRUCT = 0,
    969  LWS_EXT_CB_CLIENT_CONTEXT_CONSTRUCT = 1,
    970  LWS_EXT_CB_SERVER_CONTEXT_DESTRUCT = 2,
    971  LWS_EXT_CB_CLIENT_CONTEXT_DESTRUCT = 3,
    972  LWS_EXT_CB_CONSTRUCT = 4,
    973  LWS_EXT_CB_CLIENT_CONSTRUCT = 5,
    974  LWS_EXT_CB_CHECK_OK_TO_REALLY_CLOSE = 6,
    975  LWS_EXT_CB_CHECK_OK_TO_PROPOSE_EXTENSION = 7,
    976  LWS_EXT_CB_DESTROY = 8,
    977  LWS_EXT_CB_DESTROY_ANY_WSI_CLOSING = 9,
    978  LWS_EXT_CB_ANY_WSI_ESTABLISHED = 10,
    979  LWS_EXT_CB_PACKET_RX_PREPARSE = 11,
    980  LWS_EXT_CB_PACKET_TX_PRESEND = 12,
    981  LWS_EXT_CB_PACKET_TX_DO_SEND = 13,
    982  LWS_EXT_CB_HANDSHAKE_REPLY_TX = 14,
    983  LWS_EXT_CB_FLUSH_PENDING_TX = 15,
    984  LWS_EXT_CB_EXTENDED_PAYLOAD_RX = 16,
    985  LWS_EXT_CB_CAN_PROXY_CLIENT_CONNECTION = 17,
    986  LWS_EXT_CB_1HZ = 18,
    987  LWS_EXT_CB_REQUEST_ON_WRITEABLE = 19,
    988  LWS_EXT_CB_IS_WRITEABLE = 20,
    989  LWS_EXT_CB_PAYLOAD_TX = 21,
    990  LWS_EXT_CB_PAYLOAD_RX = 22,
    991  LWS_EXT_CB_OPTION_DEFAULT = 23,
    992  LWS_EXT_CB_OPTION_SET = 24,
    993  LWS_EXT_CB_OPTION_CONFIRM = 25,
    994  LWS_EXT_CB_NAMED_OPTION_SET = 26,
    995 
    996  /****** add new things just above ---^ ******/
    997 };
    998 
    1005  /* Add new things just above here ---^
    1006  * This is part of the ABI, don't needlessly break compatibility */
    1007 };
    1008 
    1014  const char *name;
    1017  /* Add new things just above here ---^
    1018  * This is part of the ABI, don't needlessly break compatibility */
    1019 };
    1020 
    1023  const char *option_name;
    1025  const char *start;
    1026  int len;
    1027 };
    1028 
    1089 typedef int
    1090 lws_extension_callback_function(struct lws_context *context,
    1091  const struct lws_extension *ext, struct lws *wsi,
    1092  enum lws_extension_callback_reasons reason,
    1093  void *user, void *in, size_t len);
    1094 
    1097  const char *name;
    1099  const char *client_offer;
    1101  /* Add new things just above here ---^
    1102  * This is part of the ABI, don't needlessly break compatibility */
    1103 };
    1104 
    1113 LWS_VISIBLE LWS_EXTERN int
    1114 lws_set_extension_option(struct lws *wsi, const char *ext_name,
    1115  const char *opt_name, const char *opt_val);
    1116 
    1117 #ifndef LWS_NO_EXTENSIONS
    1118 /* lws_get_internal_extensions() - DEPRECATED
    1119  *
    1120  * \Deprecated There is no longer a set internal extensions table. The table is provided
    1121  * by user code along with application-specific settings. See the test
    1122  * client and server for how to do.
    1123  */
    1124 static LWS_INLINE LWS_WARN_DEPRECATED const struct lws_extension *
    1125 lws_get_internal_extensions() { return NULL; }
    1126 
    1137 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    1138 lws_ext_parse_options(const struct lws_extension *ext, struct lws *wsi,
    1139  void *ext_user, const struct lws_ext_options *opts,
    1140  const char *o, int len);
    1141 #endif
    1142 
    1155 LWS_EXTERN
    1157  struct lws_context *context, const struct lws_extension *ext,
    1158  struct lws *wsi, enum lws_extension_callback_reasons reason,
    1159  void *user, void *in, size_t len);
    1160 
    1161 /*
    1162  * The internal exts are part of the public abi
    1163  * If we add more extensions, publish the callback here ------v
    1164  */
    1166 
    1182 
    1187  const char *name;
    1208  unsigned int id;
    1215  void *user;
    1218  /* Add new things just above here ---^
    1219  * This is part of the ABI, don't needlessly break compatibility */
    1220 };
    1221 
    1222 struct lws_vhost;
    1223 
    1232 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
    1233 lws_vhost_name_to_protocol(struct lws_vhost *vh, const char *name);
    1234 
    1244 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
    1245 lws_get_protocol(struct lws *wsi);
    1246 
    1248 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
    1249 lws_protocol_get(struct lws *wsi) LWS_WARN_DEPRECATED;
    1250 
    1261 LWS_VISIBLE LWS_EXTERN void *
    1262 lws_protocol_vh_priv_zalloc(struct lws_vhost *vhost, const struct lws_protocols *prot,
    1263  int size);
    1264 
    1274 LWS_VISIBLE LWS_EXTERN void *
    1275 lws_protocol_vh_priv_get(struct lws_vhost *vhost, const struct lws_protocols *prot);
    1276 
    1285 LWS_VISIBLE LWS_EXTERN int
    1286 lws_finalize_startup(struct lws_context *context);
    1287 
    1288 #ifdef LWS_WITH_PLUGINS
    1289 
    1290 /* PLUGINS implies LIBUV */
    1291 
    1292 #define LWS_PLUGIN_API_MAGIC 180
    1293 
    1296  unsigned int api_magic;
    1297  const struct lws_protocols *protocols;
    1299  const struct lws_extension *extensions;
    1301 };
    1302 
    1303 typedef int (*lws_plugin_init_func)(struct lws_context *,
    1304  struct lws_plugin_capability *);
    1305 typedef int (*lws_plugin_destroy_func)(struct lws_context *);
    1306 
    1308 struct lws_plugin {
    1309  struct lws_plugin *list;
    1310 #if (UV_VERSION_MAJOR > 0)
    1311  uv_lib_t lib;
    1312 #else
    1313  void *l;
    1314 #endif
    1315  char name[64];
    1317 };
    1318 
    1319 #endif
    1320 
    1322 
    1323 
    1332 
    1334 #define LWSGS_EMAIL_CONTENT_SIZE 16384
    1335 
    1337 /* SHA-1 binary and hexified versions */
    1339 typedef struct { unsigned char bin[20]; } lwsgw_hash_bin;
    1341 typedef struct { char id[41]; } lwsgw_hash;
    1342 
    1349 };
    1350 
    1353  char username[32];
    1354  char email[100];
    1355  char ip[72];
    1356  unsigned int mask;
    1358  char session[42];
    1359 };
    1360 
    1365 };
    1366 
    1369  enum lws_gs_event event;
    1370  const char *username;
    1371  const char *email;
    1372 };
    1373 
    1375 
    1376 
    1390 
    1392 /*
    1393  * NOTE: These public enums are part of the abi. If you want to add one,
    1394  * add it at where specified so existing users are unaffected.
    1395  */
    1396 
    1400  (1 << 12),
    1407  (1 << 12),
    1423  (1 << 12),
    1428  (1 << 12),
    1446  /****** add new things just above ---^ ******/
    1447 };
    1448 
    1449 #define lws_check_opt(c, f) (((c) & (f)) == (f))
    1450 
    1461  int port;
    1466  const char *iface;
    1473  const struct lws_protocols *protocols;
    1477  const struct lws_extension *extensions;
    1485  const char *ssl_cert_filepath;
    1495  const char *ssl_ca_filepath;
    1497  const char *ssl_cipher_list;
    1501  const char *http_proxy_address;
    1504  unsigned int http_proxy_port;
    1506  int gid;
    1508  int uid;
    1510  unsigned int options;
    1512  void *user;
    1515  int ka_time;
    1525 #ifdef LWS_OPENSSL_SUPPORT
    1531 #else /* maintain structure layout either way */
    1533 #endif
    1534 
    1545  unsigned int count_threads;
    1547  unsigned int fd_limit_per_thread;
    1551  unsigned int timeout_secs;
    1556  const char *ecdh_curve;
    1558  const char *vhost_name;
    1562  const char * const *plugin_dirs;
    1571  const char *log_filepath;
    1574  const struct lws_http_mount *mounts;
    1576  const char *server_string;
    1579  unsigned int pt_serv_buf_size;
    1595  /* Add new things just above here ---^
    1596  * This is part of the ABI, don't needlessly break compatibility
    1597  *
    1598  * The below is to ensure later library versions with new
    1599  * members added above will see 0 (default) even if the app
    1600  * was not built against the newer headers.
    1601  */
    1602 
    1603  void *_unused[8];
    1604 };
    1605 
    1640 LWS_VISIBLE LWS_EXTERN struct lws_context *
    1642 
    1651 LWS_VISIBLE LWS_EXTERN void
    1652 lws_context_destroy(struct lws_context *context);
    1653 
    1671 LWS_VISIBLE LWS_EXTERN int
    1672 lws_set_proxy(struct lws_vhost *vhost, const char *proxy);
    1673 
    1674 
    1675 struct lws_vhost;
    1676 
    1686 LWS_EXTERN LWS_VISIBLE struct lws_vhost *
    1687 lws_create_vhost(struct lws_context *context,
    1688  struct lws_context_creation_info *info);
    1689 
    1704 LWS_VISIBLE LWS_EXTERN int
    1705 lwsws_get_config_globals(struct lws_context_creation_info *info, const char *d,
    1706  char **config_strings, int *len);
    1707 
    1723 LWS_VISIBLE LWS_EXTERN int
    1724 lwsws_get_config_vhosts(struct lws_context *context,
    1725  struct lws_context_creation_info *info, const char *d,
    1726  char **config_strings, int *len);
    1727 
    1729 LWS_VISIBLE LWS_EXTERN struct lws_vhost *
    1730 lws_vhost_get(struct lws *wsi) LWS_WARN_DEPRECATED;
    1731 
    1737 LWS_VISIBLE LWS_EXTERN struct lws_vhost *
    1738 lws_get_vhost(struct lws *wsi);
    1739 
    1747 LWS_VISIBLE LWS_EXTERN int
    1748 lws_json_dump_vhost(const struct lws_vhost *vh, char *buf, int len);
    1749 
    1757 LWS_VISIBLE LWS_EXTERN int
    1758 lws_json_dump_context(const struct lws_context *context, char *buf, int len);
    1759 
    1769 LWS_VISIBLE LWS_EXTERN void *
    1770 lws_context_user(struct lws_context *context);
    1771 
    1777 
    1787  const char *name;
    1788  const char *value;
    1789 };
    1790 
    1803 };
    1804 
    1812  const char *mountpoint;
    1814  const char *origin;
    1816  const char *def;
    1818  const char *protocol;
    1834  unsigned int auth_mask;
    1837  unsigned int cache_reusable:1;
    1838  unsigned int cache_revalidate:1;
    1839  unsigned int cache_intermediaries:1;
    1841  unsigned char origin_protocol;
    1842  unsigned char mountpoint_len;
    1843 };
    1846 
    1852 
    1860  LCCSCF_USE_SSL = (1 << 0),
    1861  LCCSCF_ALLOW_SELFSIGNED = (1 << 1),
    1862  LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK = (1 << 2)
    1863 };
    1864 
    1869  struct lws_context *context;
    1871  const char *address;
    1873  int port;
    1877  const char *path;
    1879  const char *host;
    1881  const char *origin;
    1883  const char *protocol;
    1887  void *userdata;
    1891  const char *method;
    1894  struct lws *parent_wsi;
    1898  const char *uri_replace_from;
    1901  const char *uri_replace_to;
    1903  struct lws_vhost *vhost;
    1905  struct lws **pwsi;
    1917  /* Add new things just above here ---^
    1918  * This is part of the ABI, don't needlessly break compatibility
    1919  *
    1920  * The below is to ensure later library versions with new
    1921  * members added above will see 0 (default) even if the app
    1922  * was not built against the newer headers.
    1923  */
    1924 
    1925  void *_unused[4];
    1926 };
    1927 
    1935 LWS_VISIBLE LWS_EXTERN struct lws *
    1937 
    1958 /* deprecated, use lws_client_connect_via_info() */
    1959 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    1960 lws_client_connect(struct lws_context *clients, const char *address,
    1961  int port, int ssl_connection, const char *path,
    1962  const char *host, const char *origin, const char *protocol,
    1963  int ietf_version_or_minus_one) LWS_WARN_DEPRECATED;
    1964 /* deprecated, use lws_client_connect_via_info() */
    1985 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    1986 lws_client_connect_extended(struct lws_context *clients, const char *address,
    1987  int port, int ssl_connection, const char *path,
    1988  const char *host, const char *origin,
    1989  const char *protocol, int ietf_version_or_minus_one,
    1990  void *userdata) LWS_WARN_DEPRECATED;
    1991 
    2017 LWS_VISIBLE LWS_EXTERN int
    2019  struct lws_vhost *vhost);
    2020 
    2021 LWS_VISIBLE LWS_EXTERN int
    2022 lws_http_client_read(struct lws *wsi, char **buf, int *len);
    2024 
    2032 
    2065 LWS_VISIBLE LWS_EXTERN int
    2066 lws_service(struct lws_context *context, int timeout_ms);
    2067 
    2079 LWS_VISIBLE LWS_EXTERN int
    2080 lws_service_tsi(struct lws_context *context, int timeout_ms, int tsi);
    2081 
    2097 LWS_VISIBLE LWS_EXTERN void
    2098 lws_cancel_service_pt(struct lws *wsi);
    2099 
    2111 LWS_VISIBLE LWS_EXTERN void
    2112 lws_cancel_service(struct lws_context *context);
    2113 
    2136 LWS_VISIBLE LWS_EXTERN int
    2137 lws_service_fd(struct lws_context *context, struct lws_pollfd *pollfd);
    2138 
    2148 LWS_VISIBLE LWS_EXTERN int
    2149 lws_service_fd_tsi(struct lws_context *context, struct lws_pollfd *pollfd,
    2150  int tsi);
    2151 
    2153 
    2159 
    2166 
    2178 LWS_VISIBLE LWS_EXTERN const char *
    2179 lws_get_mimetype(const char *file, const struct lws_http_mount *m);
    2180 
    2199 LWS_VISIBLE LWS_EXTERN int
    2200 lws_serve_http_file(struct lws *wsi, const char *file, const char *content_type,
    2201  const char *other_headers, int other_headers_len);
    2202 LWS_VISIBLE LWS_EXTERN int
    2203 lws_serve_http_file_fragment(struct lws *wsi);
    2205 
    2216 
    2217 enum http_status {
    2218  HTTP_STATUS_OK = 200,
    2219  HTTP_STATUS_NO_CONTENT = 204,
    2220 
    2221  HTTP_STATUS_MOVED_PERMANENTLY = 301,
    2222  HTTP_STATUS_FOUND = 302,
    2223  HTTP_STATUS_SEE_OTHER = 303,
    2224 
    2225  HTTP_STATUS_BAD_REQUEST = 400,
    2226  HTTP_STATUS_UNAUTHORIZED,
    2227  HTTP_STATUS_PAYMENT_REQUIRED,
    2228  HTTP_STATUS_FORBIDDEN,
    2229  HTTP_STATUS_NOT_FOUND,
    2230  HTTP_STATUS_METHOD_NOT_ALLOWED,
    2231  HTTP_STATUS_NOT_ACCEPTABLE,
    2232  HTTP_STATUS_PROXY_AUTH_REQUIRED,
    2233  HTTP_STATUS_REQUEST_TIMEOUT,
    2234  HTTP_STATUS_CONFLICT,
    2235  HTTP_STATUS_GONE,
    2236  HTTP_STATUS_LENGTH_REQUIRED,
    2237  HTTP_STATUS_PRECONDITION_FAILED,
    2238  HTTP_STATUS_REQ_ENTITY_TOO_LARGE,
    2239  HTTP_STATUS_REQ_URI_TOO_LONG,
    2240  HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE,
    2241  HTTP_STATUS_REQ_RANGE_NOT_SATISFIABLE,
    2242  HTTP_STATUS_EXPECTATION_FAILED,
    2243 
    2244  HTTP_STATUS_INTERNAL_SERVER_ERROR = 500,
    2245  HTTP_STATUS_NOT_IMPLEMENTED,
    2246  HTTP_STATUS_BAD_GATEWAY,
    2247  HTTP_STATUS_SERVICE_UNAVAILABLE,
    2248  HTTP_STATUS_GATEWAY_TIMEOUT,
    2249  HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED,
    2250 };
    2251 
    2253  char *p;
    2254  int len;
    2255  int max_len;
    2256  int final;
    2257 };
    2258 
    2259 typedef const char *(*lws_process_html_state_cb)(void *data, int index);
    2260 
    2262  char *start;
    2263  char swallow[16];
    2264  int pos;
    2265  void *data;
    2266  const char * const *vars;
    2269  lws_process_html_state_cb replace;
    2270 };
    2271 
    2276 LWS_VISIBLE LWS_EXTERN int
    2278  struct lws_process_html_state *s);
    2280 
    2313 
    2321 struct lws_tokens {
    2322  char *token;
    2324 };
    2325 
    2326 /* enum lws_token_indexes
    2327  * these have to be kept in sync with lextable.h / minilex.c
    2328  *
    2329  * NOTE: These public enums are part of the abi. If you want to add one,
    2330  * add it at where specified so existing users are unaffected.
    2331  */
    2332 enum lws_token_indexes {
    2333  WSI_TOKEN_GET_URI = 0,
    2334  WSI_TOKEN_POST_URI = 1,
    2335  WSI_TOKEN_OPTIONS_URI = 2,
    2336  WSI_TOKEN_HOST = 3,
    2337  WSI_TOKEN_CONNECTION = 4,
    2338  WSI_TOKEN_UPGRADE = 5,
    2339  WSI_TOKEN_ORIGIN = 6,
    2340  WSI_TOKEN_DRAFT = 7,
    2341  WSI_TOKEN_CHALLENGE = 8,
    2342  WSI_TOKEN_EXTENSIONS = 9,
    2343  WSI_TOKEN_KEY1 = 10,
    2344  WSI_TOKEN_KEY2 = 11,
    2345  WSI_TOKEN_PROTOCOL = 12,
    2346  WSI_TOKEN_ACCEPT = 13,
    2347  WSI_TOKEN_NONCE = 14,
    2348  WSI_TOKEN_HTTP = 15,
    2349  WSI_TOKEN_HTTP2_SETTINGS = 16,
    2350  WSI_TOKEN_HTTP_ACCEPT = 17,
    2351  WSI_TOKEN_HTTP_AC_REQUEST_HEADERS = 18,
    2352  WSI_TOKEN_HTTP_IF_MODIFIED_SINCE = 19,
    2353  WSI_TOKEN_HTTP_IF_NONE_MATCH = 20,
    2354  WSI_TOKEN_HTTP_ACCEPT_ENCODING = 21,
    2355  WSI_TOKEN_HTTP_ACCEPT_LANGUAGE = 22,
    2356  WSI_TOKEN_HTTP_PRAGMA = 23,
    2357  WSI_TOKEN_HTTP_CACHE_CONTROL = 24,
    2358  WSI_TOKEN_HTTP_AUTHORIZATION = 25,
    2359  WSI_TOKEN_HTTP_COOKIE = 26,
    2360  WSI_TOKEN_HTTP_CONTENT_LENGTH = 27,
    2361  WSI_TOKEN_HTTP_CONTENT_TYPE = 28,
    2362  WSI_TOKEN_HTTP_DATE = 29,
    2363  WSI_TOKEN_HTTP_RANGE = 30,
    2364  WSI_TOKEN_HTTP_REFERER = 31,
    2365  WSI_TOKEN_KEY = 32,
    2366  WSI_TOKEN_VERSION = 33,
    2367  WSI_TOKEN_SWORIGIN = 34,
    2368 
    2369  WSI_TOKEN_HTTP_COLON_AUTHORITY = 35,
    2370  WSI_TOKEN_HTTP_COLON_METHOD = 36,
    2371  WSI_TOKEN_HTTP_COLON_PATH = 37,
    2372  WSI_TOKEN_HTTP_COLON_SCHEME = 38,
    2373  WSI_TOKEN_HTTP_COLON_STATUS = 39,
    2374 
    2375  WSI_TOKEN_HTTP_ACCEPT_CHARSET = 40,
    2376  WSI_TOKEN_HTTP_ACCEPT_RANGES = 41,
    2377  WSI_TOKEN_HTTP_ACCESS_CONTROL_ALLOW_ORIGIN = 42,
    2378  WSI_TOKEN_HTTP_AGE = 43,
    2379  WSI_TOKEN_HTTP_ALLOW = 44,
    2380  WSI_TOKEN_HTTP_CONTENT_DISPOSITION = 45,
    2381  WSI_TOKEN_HTTP_CONTENT_ENCODING = 46,
    2382  WSI_TOKEN_HTTP_CONTENT_LANGUAGE = 47,
    2383  WSI_TOKEN_HTTP_CONTENT_LOCATION = 48,
    2384  WSI_TOKEN_HTTP_CONTENT_RANGE = 49,
    2385  WSI_TOKEN_HTTP_ETAG = 50,
    2386  WSI_TOKEN_HTTP_EXPECT = 51,
    2387  WSI_TOKEN_HTTP_EXPIRES = 52,
    2388  WSI_TOKEN_HTTP_FROM = 53,
    2389  WSI_TOKEN_HTTP_IF_MATCH = 54,
    2390  WSI_TOKEN_HTTP_IF_RANGE = 55,
    2391  WSI_TOKEN_HTTP_IF_UNMODIFIED_SINCE = 56,
    2392  WSI_TOKEN_HTTP_LAST_MODIFIED = 57,
    2393  WSI_TOKEN_HTTP_LINK = 58,
    2394  WSI_TOKEN_HTTP_LOCATION = 59,
    2395  WSI_TOKEN_HTTP_MAX_FORWARDS = 60,
    2396  WSI_TOKEN_HTTP_PROXY_AUTHENTICATE = 61,
    2397  WSI_TOKEN_HTTP_PROXY_AUTHORIZATION = 62,
    2398  WSI_TOKEN_HTTP_REFRESH = 63,
    2399  WSI_TOKEN_HTTP_RETRY_AFTER = 64,
    2400  WSI_TOKEN_HTTP_SERVER = 65,
    2401  WSI_TOKEN_HTTP_SET_COOKIE = 66,
    2402  WSI_TOKEN_HTTP_STRICT_TRANSPORT_SECURITY = 67,
    2403  WSI_TOKEN_HTTP_TRANSFER_ENCODING = 68,
    2404  WSI_TOKEN_HTTP_USER_AGENT = 69,
    2405  WSI_TOKEN_HTTP_VARY = 70,
    2406  WSI_TOKEN_HTTP_VIA = 71,
    2407  WSI_TOKEN_HTTP_WWW_AUTHENTICATE = 72,
    2408 
    2409  WSI_TOKEN_PATCH_URI = 73,
    2410  WSI_TOKEN_PUT_URI = 74,
    2411  WSI_TOKEN_DELETE_URI = 75,
    2412 
    2413  WSI_TOKEN_HTTP_URI_ARGS = 76,
    2414  WSI_TOKEN_PROXY = 77,
    2415  WSI_TOKEN_HTTP_X_REAL_IP = 78,
    2416  WSI_TOKEN_HTTP1_0 = 79,
    2417 
    2418  /****** add new things just above ---^ ******/
    2419 
    2420  /* use token storage to stash these internally, not for
    2421  * user use */
    2422 
    2423  _WSI_TOKEN_CLIENT_SENT_PROTOCOLS,
    2424  _WSI_TOKEN_CLIENT_PEER_ADDRESS,
    2425  _WSI_TOKEN_CLIENT_URI,
    2426  _WSI_TOKEN_CLIENT_HOST,
    2427  _WSI_TOKEN_CLIENT_ORIGIN,
    2428  _WSI_TOKEN_CLIENT_METHOD,
    2429 
    2430  /* always last real token index*/
    2431  WSI_TOKEN_COUNT,
    2432 
    2433  /* parser state additions, no storage associated */
    2434  WSI_TOKEN_NAME_PART,
    2435  WSI_TOKEN_SKIPPING,
    2436  WSI_TOKEN_SKIPPING_SAW_CR,
    2437  WSI_PARSING_COMPLETE,
    2438  WSI_INIT_TOKEN_MUXURL,
    2439 };
    2440 
    2442  unsigned short token_limit[WSI_TOKEN_COUNT];
    2443 };
    2444 
    2450 LWS_VISIBLE LWS_EXTERN const unsigned char *
    2451 lws_token_to_string(enum lws_token_indexes token);
    2452 
    2453 
    2462 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2463 lws_hdr_total_length(struct lws *wsi, enum lws_token_indexes h);
    2464 
    2474 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2475 lws_hdr_fragment_length(struct lws *wsi, enum lws_token_indexes h, int frag_idx);
    2476 
    2490 LWS_VISIBLE LWS_EXTERN int
    2491 lws_hdr_copy(struct lws *wsi, char *dest, int len, enum lws_token_indexes h);
    2492 
    2510 LWS_VISIBLE LWS_EXTERN int
    2511 lws_hdr_copy_fragment(struct lws *wsi, char *dest, int len,
    2512  enum lws_token_indexes h, int frag_idx);
    2513 
    2524 LWS_VISIBLE LWS_EXTERN const char *
    2525 lws_get_urlarg_by_name(struct lws *wsi, const char *name, char *buf, int len);
    2527 
    2542 
    2553 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2554 lws_add_http_header_status(struct lws *wsi,
    2555  unsigned int code, unsigned char **p,
    2556  unsigned char *end);
    2569 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2570 lws_add_http_header_by_name(struct lws *wsi, const unsigned char *name,
    2571  const unsigned char *value, int length,
    2572  unsigned char **p, unsigned char *end);
    2586 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2587 lws_add_http_header_by_token(struct lws *wsi, enum lws_token_indexes token,
    2588  const unsigned char *value, int length,
    2589  unsigned char **p, unsigned char *end);
    2600 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2601 lws_add_http_header_content_length(struct lws *wsi,
    2602  unsigned long content_length,
    2603  unsigned char **p, unsigned char *end);
    2613 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2614 lws_finalize_http_header(struct lws *wsi, unsigned char **p,
    2615  unsigned char *end);
    2617 
    2636 
    2646 };
    2647 
    2661 typedef int (*lws_spa_fileupload_cb)(void *data, const char *name,
    2662  const char *filename, char *buf, int len,
    2663  enum lws_spa_fileupload_states state);
    2664 
    2667 struct lws_spa;
    2668 
    2687 LWS_VISIBLE LWS_EXTERN struct lws_spa *
    2688 lws_spa_create(struct lws *wsi, const char * const *param_names,
    2689  int count_params, int max_storage, lws_spa_fileupload_cb opt_cb,
    2690  void *opt_data);
    2691 
    2699 LWS_VISIBLE LWS_EXTERN int
    2700 lws_spa_process(struct lws_spa *spa, const char *in, int len);
    2701 
    2707 LWS_VISIBLE LWS_EXTERN int
    2708 lws_spa_finalize(struct lws_spa *spa);
    2709 
    2716 LWS_VISIBLE LWS_EXTERN int
    2717 lws_spa_get_length(struct lws_spa *spa, int n);
    2718 
    2724 LWS_VISIBLE LWS_EXTERN const char *
    2725 lws_spa_get_string(struct lws_spa *spa, int n);
    2726 
    2732 LWS_VISIBLE LWS_EXTERN int
    2733 lws_spa_destroy(struct lws_spa *spa);
    2735 
    2746 
    2757 LWS_VISIBLE LWS_EXTERN const char *
    2758 lws_urlencode(char *escaped, const char *string, int len);
    2759 
    2760 /*
    2761  * URLDECODE 1 / 2
    2762  *
    2763  * This simple urldecode only operates until the first '\0' and requires the
    2764  * data to exist all at once
    2765  */
    2778 LWS_VISIBLE LWS_EXTERN int
    2779 lws_urldecode(char *string, const char *escaped, int len);
    2781 
    2790 LWS_VISIBLE LWS_EXTERN int
    2791 lws_return_http_status(struct lws *wsi, unsigned int code,
    2792  const char *html_body);
    2793 
    2804 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2805 lws_http_redirect(struct lws *wsi, int code, const unsigned char *loc, int len,
    2806  unsigned char **p, unsigned char *end);
    2807 
    2816 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2817 lws_http_transaction_completed(struct lws *wsi);
    2819 
    2827 
    2838 LWS_VISIBLE LWS_EXTERN const char *
    2839 lws_sql_purify(char *escaped, const char *string, int len);
    2840 
    2851 LWS_VISIBLE LWS_EXTERN const char *
    2852 lws_json_purify(char *escaped, const char *string, int len);
    2854 
    2861 
    2863 #ifdef LWS_USE_LIBEV
    2864 typedef void (lws_ev_signal_cb_t)(EV_P_ struct ev_signal *w, int revents);
    2865 
    2866 LWS_VISIBLE LWS_EXTERN int
    2867 lws_ev_sigint_cfg(struct lws_context *context, int use_ev_sigint,
    2868  lws_ev_signal_cb_t *cb);
    2869 
    2870 LWS_VISIBLE LWS_EXTERN int
    2871 lws_ev_initloop(struct lws_context *context, struct ev_loop *loop, int tsi);
    2872 
    2873 LWS_VISIBLE LWS_EXTERN void
    2874 lws_ev_sigint_cb(struct ev_loop *loop, struct ev_signal *watcher, int revents);
    2875 #endif /* LWS_USE_LIBEV */
    2876 
    2878 
    2885 #ifdef LWS_USE_LIBUV
    2887 LWS_VISIBLE LWS_EXTERN int
    2888 lws_uv_sigint_cfg(struct lws_context *context, int use_uv_sigint,
    2889  uv_signal_cb cb);
    2890 
    2891 LWS_VISIBLE LWS_EXTERN void
    2892 lws_libuv_run(const struct lws_context *context, int tsi);
    2893 
    2894 LWS_VISIBLE LWS_EXTERN void
    2895 lws_libuv_stop(struct lws_context *context);
    2896 
    2897 LWS_VISIBLE LWS_EXTERN int
    2898 lws_uv_initloop(struct lws_context *context, uv_loop_t *loop, int tsi);
    2899 
    2900 LWS_VISIBLE LWS_EXTERN uv_loop_t *
    2901 lws_uv_getloop(struct lws_context *context, int tsi);
    2902 
    2903 LWS_VISIBLE LWS_EXTERN void
    2904 lws_uv_sigint_cb(uv_signal_t *watcher, int signum);
    2905 #endif /* LWS_USE_LIBUV */
    2906 
    2913 
    2914 /*
    2915  * NOTE: These public enums are part of the abi. If you want to add one,
    2916  * add it at where specified so existing users are unaffected.
    2917  */
    2918 enum pending_timeout {
    2919  NO_PENDING_TIMEOUT = 0,
    2920  PENDING_TIMEOUT_AWAITING_PROXY_RESPONSE = 1,
    2921  PENDING_TIMEOUT_AWAITING_CONNECT_RESPONSE = 2,
    2922  PENDING_TIMEOUT_ESTABLISH_WITH_SERVER = 3,
    2923  PENDING_TIMEOUT_AWAITING_SERVER_RESPONSE = 4,
    2924  PENDING_TIMEOUT_AWAITING_PING = 5,
    2925  PENDING_TIMEOUT_CLOSE_ACK = 6,
    2926  PENDING_TIMEOUT_AWAITING_EXTENSION_CONNECT_RESPONSE = 7,
    2927  PENDING_TIMEOUT_SENT_CLIENT_HANDSHAKE = 8,
    2928  PENDING_TIMEOUT_SSL_ACCEPT = 9,
    2929  PENDING_TIMEOUT_HTTP_CONTENT = 10,
    2930  PENDING_TIMEOUT_AWAITING_CLIENT_HS_SEND = 11,
    2931  PENDING_FLUSH_STORED_SEND_BEFORE_CLOSE = 12,
    2932  PENDING_TIMEOUT_SHUTDOWN_FLUSH = 13,
    2933  PENDING_TIMEOUT_CGI = 14,
    2934  PENDING_TIMEOUT_HTTP_KEEPALIVE_IDLE = 15,
    2935 
    2936  /****** add new things just above ---^ ******/
    2937 };
    2938 
    2948 LWS_VISIBLE LWS_EXTERN void
    2949 lws_set_timeout(struct lws *wsi, enum pending_timeout reason, int secs);
    2951 
    2957 #if !defined(LWS_SIZEOFPTR)
    2958 #define LWS_SIZEOFPTR (sizeof (void *))
    2959 #endif
    2960 #if !defined(u_int64_t)
    2961 #define u_int64_t unsigned long long
    2962 #endif
    2963 
    2964 #if defined(__x86_64__)
    2965 #define _LWS_PAD_SIZE 16 /* Intel recommended for best performance */
    2966 #else
    2967 #define _LWS_PAD_SIZE LWS_SIZEOFPTR /* Size of a pointer on the target arch */
    2968 #endif
    2969 #define _LWS_PAD(n) (((n) % _LWS_PAD_SIZE) ? \
    2970  ((n) + (_LWS_PAD_SIZE - ((n) % _LWS_PAD_SIZE))) : (n))
    2971 #define LWS_PRE _LWS_PAD(4 + 10)
    2972 /* used prior to 1.7 and retained for backward compatibility */
    2973 #define LWS_SEND_BUFFER_PRE_PADDING LWS_PRE
    2974 #define LWS_SEND_BUFFER_POST_PADDING 0
    2975 
    2976 /*
    2977  * NOTE: These public enums are part of the abi. If you want to add one,
    2978  * add it at where specified so existing users are unaffected.
    2979  */
    2994  /* LWS_WRITE_CLOSE is handled by lws_close_reason() */
    2995  LWS_WRITE_PING = 5,
    2996  LWS_WRITE_PONG = 6,
    2997 
    2998  /* Same as write_http but we know this write ends the transaction */
    2999  LWS_WRITE_HTTP_FINAL = 7,
    3000 
    3001  /* HTTP2 */
    3002 
    3010  /****** add new things just above ---^ ******/
    3011 
    3012  /* flags */
    3013 
    3021 };
    3022 
    3023 
    3095 LWS_VISIBLE LWS_EXTERN int
    3096 lws_write(struct lws *wsi, unsigned char *buf, size_t len,
    3097  enum lws_write_protocol protocol);
    3098 
    3099 /* helper for case where buffer may be const */
    3100 #define lws_write_http(wsi, buf, len) \
    3101  lws_write(wsi, (unsigned char *)(buf), len, LWS_WRITE_HTTP)
    3102 
    3104 
    3123 
    3136 LWS_VISIBLE LWS_EXTERN int
    3137 lws_callback_on_writable(struct lws *wsi);
    3138 
    3152 LWS_VISIBLE LWS_EXTERN int
    3153 lws_callback_on_writable_all_protocol(const struct lws_context *context,
    3154  const struct lws_protocols *protocol);
    3155 
    3169 LWS_VISIBLE LWS_EXTERN int
    3170 lws_callback_on_writable_all_protocol_vhost(const struct lws_vhost *vhost,
    3171  const struct lws_protocols *protocol);
    3172 
    3185 LWS_VISIBLE LWS_EXTERN int
    3186 lws_callback_all_protocol(struct lws_context *context,
    3187  const struct lws_protocols *protocol, int reason);
    3188 
    3201 LWS_VISIBLE LWS_EXTERN int
    3202 lws_callback_all_protocol_vhost(struct lws_vhost *vh,
    3203  const struct lws_protocols *protocol, int reason);
    3204 
    3218 LWS_VISIBLE LWS_EXTERN int
    3219 lws_callback_vhost_protocols(struct lws *wsi, int reason, void *in, int len);
    3220 
    3228 LWS_VISIBLE LWS_EXTERN int
    3229 lws_get_socket_fd(struct lws *wsi);
    3230 
    3252 LWS_VISIBLE LWS_EXTERN size_t
    3253 lws_get_peer_write_allowance(struct lws *wsi);
    3255 
    3266 LWS_VISIBLE LWS_EXTERN int
    3267 lws_rx_flow_control(struct lws *wsi, int enable);
    3268 
    3278 LWS_VISIBLE LWS_EXTERN void
    3279 lws_rx_flow_allow_all_protocol(const struct lws_context *context,
    3280  const struct lws_protocols *protocol);
    3281 
    3298 LWS_VISIBLE LWS_EXTERN size_t
    3299 lws_remaining_packet_payload(struct lws *wsi);
    3300 
    3301 
    3310 
    3323 LWS_VISIBLE LWS_EXTERN struct lws *
    3324 lws_adopt_socket(struct lws_context *context, lws_sockfd_type accept_fd);
    3347 LWS_VISIBLE LWS_EXTERN struct lws *
    3348 lws_adopt_socket_readbuf(struct lws_context *context, lws_sockfd_type accept_fd,
    3349  const char *readbuf, size_t len);
    3351 
    3357 
    3368 LWS_VISIBLE LWS_EXTERN const char * LWS_WARN_UNUSED_RESULT
    3369 lws_canonical_hostname(struct lws_context *context);
    3370 
    3385 LWS_VISIBLE LWS_EXTERN void
    3386 lws_get_peer_addresses(struct lws *wsi, lws_sockfd_type fd, char *name,
    3387  int name_len, char *rip, int rip_len);
    3388 
    3399 LWS_VISIBLE LWS_EXTERN const char *
    3400 lws_get_peer_simple(struct lws *wsi, char *name, int namelen);
    3401 
    3413 LWS_VISIBLE LWS_EXTERN int
    3414 lws_interface_to_sa(int ipv6, const char *ifname, struct sockaddr_in *addr,
    3415  size_t addrlen);
    3417 
    3423 
    3436 LWS_VISIBLE LWS_EXTERN int
    3437 lws_get_random(struct lws_context *context, void *buf, int len);
    3445 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3446 lws_daemonize(const char *_lock_path);
    3452 LWS_VISIBLE LWS_EXTERN const char * LWS_WARN_UNUSED_RESULT
    3454 
    3461 LWS_VISIBLE LWS_EXTERN void *
    3462 lws_wsi_user(struct lws *wsi);
    3463 
    3475 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3476 lws_parse_uri(char *p, const char **prot, const char **ads, int *port,
    3477  const char **path);
    3478 
    3482 LWS_VISIBLE LWS_EXTERN unsigned long
    3483 lws_now_secs(void);
    3484 
    3494 LWS_VISIBLE LWS_EXTERN struct lws_context * LWS_WARN_UNUSED_RESULT
    3495 lws_get_context(const struct lws *wsi);
    3496 
    3506 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3507 lws_get_count_threads(struct lws_context *context);
    3508 
    3516 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    3517 lws_get_parent(const struct lws *wsi);
    3518 
    3525 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    3526 lws_get_child(const struct lws *wsi);
    3527 
    3528 
    3529 /*
    3530  * \deprecated DEPRECATED Note: this is not normally needed as a user api.
    3531  * It's provided in case it is
    3532  * useful when integrating with other app poll loop service code.
    3533  */
    3534 LWS_VISIBLE LWS_EXTERN int
    3535 lws_read(struct lws *wsi, unsigned char *buf, size_t len);
    3536 
    3544 LWS_VISIBLE LWS_EXTERN void
    3545 lws_set_allocator(void *(*realloc)(void *ptr, size_t size));
    3547 
    3553 
    3560 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3561 lws_send_pipe_choked(struct lws *wsi);
    3562 
    3567 LWS_VISIBLE LWS_EXTERN int
    3568 lws_is_final_fragment(struct lws *wsi);
    3569 
    3574 LWS_VISIBLE LWS_EXTERN unsigned char
    3575 lws_get_reserved_bits(struct lws *wsi);
    3576 
    3593 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3594 lws_partial_buffered(struct lws *wsi);
    3595 
    3605 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3606 lws_frame_is_binary(struct lws *wsi);
    3607 
    3616 LWS_VISIBLE LWS_EXTERN int
    3617 lws_is_ssl(struct lws *wsi);
    3622 LWS_VISIBLE LWS_EXTERN int
    3623 lws_is_cgi(struct lws *wsi);
    3625 
    3626 
    3632 #ifdef LWS_SHA1_USE_OPENSSL_NAME
    3634 #define lws_SHA1 SHA1
    3635 #else
    3636 
    3645 LWS_VISIBLE LWS_EXTERN unsigned char *
    3646 lws_SHA1(const unsigned char *d, size_t n, unsigned char *md);
    3647 #endif
    3648 
    3658 LWS_VISIBLE LWS_EXTERN int
    3659 lws_b64_encode_string(const char *in, int in_len, char *out, int out_size);
    3669 LWS_VISIBLE LWS_EXTERN int
    3670 lws_b64_decode_string(const char *in, char *out, int out_size);
    3672 
    3673 
    3683 #ifdef LWS_WITH_CGI
    3684 enum lws_enum_stdinouterr {
    3685  LWS_STDIN = 0,
    3686  LWS_STDOUT = 1,
    3687  LWS_STDERR = 2,
    3688 };
    3689 
    3690 enum lws_cgi_hdr_state {
    3691  LCHS_HEADER,
    3692  LCHS_CR1,
    3693  LCHS_LF1,
    3694  LCHS_CR2,
    3695  LCHS_LF2,
    3696  LHCS_PAYLOAD,
    3697  LCHS_SINGLE_0A,
    3698 };
    3699 
    3701  struct lws **stdwsi;
    3702  enum lws_enum_stdinouterr ch;
    3703  unsigned char *data;
    3704  enum lws_cgi_hdr_state hdr_state;
    3705  int len;
    3706 };
    3707 
    3708 
    3718 LWS_VISIBLE LWS_EXTERN int
    3719 lws_cgi(struct lws *wsi, const char * const *exec_array,
    3720  int script_uri_path_len, int timeout_secs,
    3721  const struct lws_protocol_vhost_options *mp_cgienv);
    3722 
    3728 LWS_VISIBLE LWS_EXTERN int
    3729 lws_cgi_write_split_stdout_headers(struct lws *wsi);
    3730 
    3736 LWS_VISIBLE LWS_EXTERN int
    3737 lws_cgi_kill(struct lws *wsi);
    3738 #endif
    3739 
    3741 
    3758 
    3765  lws_filefd_type (*open)(struct lws *wsi, const char *filename,
    3766  unsigned long *filelen, int flags);
    3770  int (*close)(struct lws *wsi, lws_filefd_type fd);
    3772  unsigned long (*seek_cur)(struct lws *wsi, lws_filefd_type fd,
    3773  long offset_from_cur_pos);
    3775  int (*read)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    3776  unsigned char *buf, unsigned long len);
    3778  int (*write)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    3779  unsigned char *buf, unsigned long len);
    3782  /* Add new things just above here ---^
    3783  * This is part of the ABI, don't needlessly break compatibility */
    3784 };
    3785 
    3791 LWS_VISIBLE LWS_EXTERN struct lws_plat_file_ops * LWS_WARN_UNUSED_RESULT
    3792 lws_get_fops(struct lws_context *context);
    3793 
    3802 static LWS_INLINE lws_filefd_type LWS_WARN_UNUSED_RESULT
    3803 lws_plat_file_open(struct lws *wsi, const char *filename,
    3804  unsigned long *filelen, int flags)
    3805 {
    3806  return lws_get_fops(lws_get_context(wsi))->open(wsi, filename,
    3807  filelen, flags);
    3808 }
    3809 
    3816 static LWS_INLINE int
    3817 lws_plat_file_close(struct lws *wsi, lws_filefd_type fd)
    3818 {
    3819  return lws_get_fops(lws_get_context(wsi))->close(wsi, fd);
    3820 }
    3821 
    3829 static LWS_INLINE unsigned long
    3830 lws_plat_file_seek_cur(struct lws *wsi, lws_filefd_type fd, long offset)
    3831 {
    3832  return lws_get_fops(lws_get_context(wsi))->seek_cur(wsi, fd, offset);
    3833 }
    3843 static LWS_INLINE int LWS_WARN_UNUSED_RESULT
    3844 lws_plat_file_read(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    3845  unsigned char *buf, unsigned long len)
    3846 {
    3847  return lws_get_fops(lws_get_context(wsi))->read(wsi, fd, amount, buf,
    3848  len);
    3849 }
    3859 static LWS_INLINE int LWS_WARN_UNUSED_RESULT
    3860 lws_plat_file_write(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    3861  unsigned char *buf, unsigned long len)
    3862 {
    3863  return lws_get_fops(lws_get_context(wsi))->write(wsi, fd, amount, buf,
    3864  len);
    3865 }
    3867 
    3899 #ifdef LWS_WITH_SMTP
    3900 
    3912 };
    3913 
    3915 struct lws_email {
    3916  void *data;
    3918  uv_loop_t *loop;
    3921  char email_smtp_ip[32];
    3922  char email_helo[32];
    3923  char email_from[100];
    3924  char email_to[100];
    3926  unsigned int max_content_size;
    3929  /* Fill all the callbacks before init */
    3930 
    3931  int (*on_next)(struct lws_email *email);
    3936  int (*on_sent)(struct lws_email *email);
    3941  int (*on_get_body)(struct lws_email *email, char *buf, int len);
    3947  /* private things */
    3948  uv_timer_t timeout_email;
    3950  uv_connect_t email_connect_req;
    3951  uv_tcp_t email_client;
    3953  char email_buf[256];
    3954  char *content;
    3955 };
    3956 
    3966 LWS_VISIBLE LWS_EXTERN int
    3967 lws_email_init(struct lws_email *email, uv_loop_t *loop, int max_content);
    3968 
    3977 LWS_VISIBLE LWS_EXTERN void
    3978 lws_email_check(struct lws_email *email);
    3986 LWS_VISIBLE LWS_EXTERN void
    3987 lws_email_destroy(struct lws_email *email);
    3988 
    3989 #endif
    3990 
    3991 
    3992 #ifdef __cplusplus
    3993 }
    3994 #endif
    3995 
    3996 #endif
    LWS_VISIBLE LWS_EXTERN int lws_spa_destroy(struct lws_spa *spa)
    +Go to the documentation of this file.
    1 /*
    2  * libwebsockets - small server side websockets and web server implementation
    3  *
    4  * Copyright (C) 2010-2016 Andy Green <andy@warmcat.com>
    5  *
    6  * This library is free software; you can redistribute it and/or
    7  * modify it under the terms of the GNU Lesser General Public
    8  * License as published by the Free Software Foundation:
    9  * version 2.1 of the License.
    10  *
    11  * This library is distributed in the hope that it will be useful,
    12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
    13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    14  * Lesser General Public License for more details.
    15  *
    16  * You should have received a copy of the GNU Lesser General Public
    17  * License along with this library; if not, write to the Free Software
    18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
    19  * MA 02110-1301 USA
    20  */
    21 
    24 #ifndef LIBWEBSOCKET_H_3060898B846849FF9F88F5DB59B5950C
    25 #define LIBWEBSOCKET_H_3060898B846849FF9F88F5DB59B5950C
    26 
    27 #ifdef __cplusplus
    28 #include <cstddef>
    29 #include <cstdarg>
    30 #ifdef MBED_OPERATORS
    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"
    35 
    36 namespace {
    37 }
    38 using namespace mbed::Sockets::v0;
    39 
    40 
    41 struct sockaddr_in;
    42 struct lws;
    43 
    44 class lws_conn {
    45  public:
    46  lws_conn():
    47  ts(NULL),
    48  wsi(NULL),
    49  writeable(1),
    50  awaiting_on_writeable(0)
    51  {
    52  }
    53 
    54 public:
    55  void set_wsi(struct lws *_wsi) { wsi = _wsi; }
    56  int actual_onRX(Socket *s);
    57  void 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);
    62 
    63 public:
    64  TCPStream *ts;
    65 
    66 public:
    67  struct lws *wsi;
    68  char writeable;
    69  char awaiting_on_writeable;
    70 };
    71 
    73 public:
    75  srv(SOCKET_STACK_LWIP_IPV4)
    76  {
    77  srv.setOnError(TCPStream::ErrorHandler_t(this,
    79  }
    80 
    81  void start(const uint16_t port);
    83 protected:
    84  void onRX(Socket *s);
    85  void onError(Socket *s, socket_error_t err);
    86  void onIncoming(TCPListener *s, void *impl);
    87  void onDisconnect(TCPStream *s);
    89 public:
    90  TCPListener srv;
    91 };
    92 
    93 #endif
    94 
    95 extern "C" {
    96 #else
    97 #include <stdarg.h>
    98 #endif
    99 
    100 #ifdef MBED_OPERATORS
    101 struct sockaddr_in;
    102 #define LWS_POSIX 0
    103 #else
    104 #define LWS_POSIX 1
    105 #endif
    106 
    107 #include "lws_config.h"
    108 
    109 #if defined(WIN32) || defined(_WIN32)
    110 #ifndef WIN32_LEAN_AND_MEAN
    111 #define WIN32_LEAN_AND_MEAN
    112 #endif
    113 
    114 #include <winsock2.h>
    115 #include <ws2tcpip.h>
    116 #include <stddef.h>
    117 #include <basetsd.h>
    118 #ifndef _WIN32_WCE
    119 #include <stdint.h>
    120 #include <fcntl.h>
    121 #else
    122 #define _O_RDONLY 0x0000
    123 #define O_RDONLY _O_RDONLY
    124 #endif
    125 
    126 // Visual studio older than 2015 and WIN_CE has only _stricmp
    127 #if (defined(_MSC_VER) && _MSC_VER < 1900) || defined(_WIN32_WCE)
    128 #define strcasecmp _stricmp
    129 #else
    130 #define strcasecmp stricmp
    131 #endif
    132 #define getdtablesize() 30000
    133 
    134 #define LWS_INLINE __inline
    135 #define LWS_VISIBLE
    136 #define LWS_WARN_UNUSED_RESULT
    137 #define LWS_WARN_DEPRECATED
    138 
    139 #ifdef LWS_DLL
    140 #ifdef LWS_INTERNAL
    141 #define LWS_EXTERN extern __declspec(dllexport)
    142 #else
    143 #define LWS_EXTERN extern __declspec(dllimport)
    144 #endif
    145 #else
    146 #define LWS_EXTERN
    147 #endif
    148 
    149 #define LWS_INVALID_FILE INVALID_HANDLE_VALUE
    150 #define LWS_O_RDONLY _O_RDONLY
    151 
    152 #if !defined(_MSC_VER) || _MSC_VER < 1900 /* Visual Studio 2015 already defines this in <stdio.h> */
    153 #define snprintf _snprintf
    154 #endif
    155 
    156 #ifndef __func__
    157 #define __func__ __FUNCTION__
    158 #endif
    159 
    160 #else /* NOT WIN32 */
    161 #include <unistd.h>
    162 
    163 #if defined(__NetBSD__) || defined(__FreeBSD__)
    164 #include <netinet/in.h>
    165 #endif
    166 
    167 #define LWS_INLINE inline
    168 #define LWS_O_RDONLY O_RDONLY
    169 
    170 #ifndef MBED_OPERATORS
    171 #include <poll.h>
    172 #include <netdb.h>
    173 #define LWS_INVALID_FILE -1
    174 #else
    175 #define getdtablesize() (20)
    176 #define LWS_INVALID_FILE NULL
    177 #endif
    178 
    179 #if defined(__GNUC__)
    180 
    181 /* warn_unused_result attribute only supported by GCC 3.4 or later */
    182 #if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
    183 #define LWS_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
    184 #else
    185 #define LWS_WARN_UNUSED_RESULT
    186 #endif
    187 
    188 #define LWS_VISIBLE __attribute__((visibility("default")))
    189 #define LWS_WARN_DEPRECATED __attribute__ ((deprecated))
    190 #else
    191 #define LWS_VISIBLE
    192 #define LWS_WARN_UNUSED_RESULT
    193 #define LWS_WARN_DEPRECATED
    194 #endif
    195 
    196 #if defined(__ANDROID__)
    197 #include <unistd.h>
    198 #define getdtablesize() sysconf(_SC_OPEN_MAX)
    199 #endif
    200 
    201 #endif
    202 
    203 #ifdef LWS_USE_LIBEV
    204 #include <ev.h>
    205 #endif /* LWS_USE_LIBEV */
    206 #ifdef LWS_USE_LIBUV
    207 #include <uv.h>
    208 #endif /* LWS_USE_LIBUV */
    209 
    210 #ifndef LWS_EXTERN
    211 #define LWS_EXTERN extern
    212 #endif
    213 
    214 #ifdef _WIN32
    215 #define random rand
    216 #else
    217 #include <sys/time.h>
    218 #include <unistd.h>
    219 #endif
    220 
    221 #ifdef LWS_OPENSSL_SUPPORT
    222 
    223 #ifdef USE_WOLFSSL
    224 #ifdef USE_OLD_CYASSL
    225 #include <cyassl/openssl/ssl.h>
    226 #include <cyassl/error-ssl.h>
    227 #else
    228 #include <wolfssl/openssl/ssl.h>
    229 #include <wolfssl/error-ssl.h>
    230 #endif /* not USE_OLD_CYASSL */
    231 #else
    232 #if defined(LWS_USE_POLARSSL)
    233 #include <polarssl/ssl.h>
    235  x509_crt ca;
    236  x509_crt certificate;
    237  rsa_context key;
    238 };
    239 typedef struct lws_polarssl_context SSL_CTX;
    240 typedef ssl_context SSL;
    241 #else
    242 #if defined(LWS_USE_MBEDTLS)
    243 #include <mbedtls/ssl.h>
    244 #else
    245 #include <openssl/ssl.h>
    246 #include <openssl/err.h>
    247 #endif /* not USE_MBEDTLS */
    248 #endif /* not USE_POLARSSL */
    249 #endif /* not USE_WOLFSSL */
    250 #endif
    251 
    252 
    253 #define CONTEXT_PORT_NO_LISTEN -1
    254 
    265 
    267 enum lws_log_levels {
    268  LLL_ERR = 1 << 0,
    269  LLL_WARN = 1 << 1,
    270  LLL_NOTICE = 1 << 2,
    271  LLL_INFO = 1 << 3,
    272  LLL_DEBUG = 1 << 4,
    273  LLL_PARSER = 1 << 5,
    274  LLL_HEADER = 1 << 6,
    275  LLL_EXT = 1 << 7,
    276  LLL_CLIENT = 1 << 8,
    277  LLL_LATENCY = 1 << 9,
    278 
    279  LLL_COUNT = 10 /* set to count of valid flags */
    280 };
    281 
    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
    294 lwsl_timestamp(int level, char *p, int len);
    295 
    296 /* notice, warn and log are always compiled in */
    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__)
    300 /*
    301  * weaker logging can be deselected at configure time using --disable-debug
    302  * that gets rid of the overhead of checking while keeping _warn and _err
    303  * active
    304  */
    305 #ifdef _DEBUG
    306 
    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__)
    314 
    320 LWS_VISIBLE LWS_EXTERN void lwsl_hexdump(void *buf, size_t len);
    321 
    322 #else /* no debug */
    323 
    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)
    332 
    333 #endif
    334 
    345 LWS_VISIBLE LWS_EXTERN void
    346 lws_set_log_level(int level,
    347  void (*log_emit_function)(int level, const char *line));
    348 
    358 LWS_VISIBLE LWS_EXTERN void
    359 lwsl_emit_syslog(int level, const char *line);
    360 
    362 
    363 
    364 #include <stddef.h>
    365 
    366 #ifndef lws_container_of
    367 #define lws_container_of(P,T,M) ((T *)((char *)(P) - offsetof(T, M)))
    368 #endif
    369 
    370 
    371 struct lws;
    372 #ifndef ARRAY_SIZE
    373 #define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
    374 #endif
    375 
    376 /* api change list for user code to test against */
    377 
    378 #define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_ARG
    379 
    380 /* the struct lws_protocols has the id field present */
    381 #define LWS_FEATURE_PROTOCOLS_HAS_ID_FIELD
    382 
    383 /* you can call lws_get_peer_write_allowance */
    384 #define LWS_FEATURE_PROTOCOLS_HAS_PEER_WRITE_ALLOWANCE
    385 
    386 /* extra parameter introduced in 917f43ab821 */
    387 #define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_LEN
    388 
    389 /* File operations stuff exists */
    390 #define LWS_FEATURE_FOPS
    391 
    392 
    393 #if defined(_WIN32)
    394 typedef SOCKET lws_sockfd_type;
    395 typedef HANDLE lws_filefd_type;
    396 #define lws_sockfd_valid(sfd) (!!sfd)
    397 struct lws_pollfd {
    398  lws_sockfd_type fd;
    399  SHORT events;
    400  SHORT revents;
    401 };
    402 #define LWS_POLLHUP (FD_CLOSE)
    403 #define LWS_POLLIN (FD_READ | FD_ACCEPT)
    404 #define LWS_POLLOUT (FD_WRITE)
    405 #else
    406 
    407 #if defined(MBED_OPERATORS)
    408 /* it's a class lws_conn * */
    409 typedef void * lws_sockfd_type;
    410 typedef void * lws_filefd_type;
    411 #define lws_sockfd_valid(sfd) (!!sfd)
    412 struct pollfd {
    413  lws_sockfd_type fd;
    414  short events;
    415  short revents;
    416 };
    417 #define POLLIN 0x0001
    418 #define POLLPRI 0x0002
    419 #define POLLOUT 0x0004
    420 #define POLLERR 0x0008
    421 #define POLLHUP 0x0010
    422 #define POLLNVAL 0x0020
    423 
    424 struct lws;
    425 
    426 void * mbed3_create_tcp_stream_socket(void);
    427 void mbed3_delete_tcp_stream_socket(void *sockfd);
    428 void mbed3_tcp_stream_bind(void *sock, int port, struct lws *);
    429 void mbed3_tcp_stream_accept(void *sock, struct lws *);
    430 #else
    431 typedef int lws_sockfd_type;
    432 typedef int lws_filefd_type;
    433 #define lws_sockfd_valid(sfd) (sfd >= 0)
    434 #endif
    435 
    436 #define lws_pollfd pollfd
    437 #define LWS_POLLHUP (POLLHUP|POLLERR)
    438 #define LWS_POLLIN (POLLIN)
    439 #define LWS_POLLOUT (POLLOUT)
    440 #endif
    441 
    444 struct lws_pollargs {
    445  lws_sockfd_type fd;
    446  int events;
    448 };
    449 
    450 struct lws_tokens;
    451 struct lws_token_limits;
    452 
    460 
    462 /*
    463  * NOTE: These public enums are part of the abi. If you want to add one,
    464  * add it at where specified so existing users are unaffected.
    465  */
    468  LWS_CLOSE_STATUS_NOSTATUS = 0,
    530  /****** add new things just above ---^ ******/
    531 
    532  LWS_CLOSE_STATUS_NOSTATUS_CONTEXT_DESTROY = 9999,
    533 };
    534 
    547 LWS_VISIBLE LWS_EXTERN void
    548 lws_close_reason(struct lws *wsi, enum lws_close_status status,
    549  unsigned char *buf, size_t len);
    550 
    552 
    553 struct lws;
    554 struct lws_context;
    555 /* needed even with extensions disabled for create context */
    556 struct lws_extension;
    557 
    569 
    571 
    572 /*
    573  * NOTE: These public enums are part of the abi. If you want to add one,
    574  * add it at where specified so existing users are unaffected.
    575  */
    819  /* external poll() management support */
    882  LWS_CALLBACK_WS_EXT_DEFAULTS = 39,
    885  LWS_CALLBACK_CGI = 40,
    887  LWS_CALLBACK_CGI_TERMINATED = 41,
    889  LWS_CALLBACK_CGI_STDIN_DATA = 42,
    891  LWS_CALLBACK_CGI_STDIN_COMPLETED = 43,
    893  LWS_CALLBACK_ESTABLISHED_CLIENT_HTTP = 44,
    895  LWS_CALLBACK_CLOSED_CLIENT_HTTP = 45,
    897  LWS_CALLBACK_RECEIVE_CLIENT_HTTP = 46,
    899  LWS_CALLBACK_COMPLETED_CLIENT_HTTP = 47,
    901  LWS_CALLBACK_RECEIVE_CLIENT_HTTP_READ = 48,
    903  LWS_CALLBACK_HTTP_BIND_PROTOCOL = 49,
    905  LWS_CALLBACK_HTTP_DROP_PROTOCOL = 50,
    907  LWS_CALLBACK_CHECK_ACCESS_RIGHTS = 51,
    909  LWS_CALLBACK_PROCESS_HTML = 52,
    911  LWS_CALLBACK_ADD_HEADERS = 53,
    913  LWS_CALLBACK_SESSION_INFO = 54,
    916  LWS_CALLBACK_GS_EVENT = 55,
    924  /****** add new things just above ---^ ******/
    925 
    928 };
    929 
    930 
    931 
    947 typedef int
    948 lws_callback_function(struct lws *wsi, enum lws_callback_reasons reason,
    949  void *user, void *in, size_t len);
    951 
    961 
    963 /*
    964  * NOTE: These public enums are part of the abi. If you want to add one,
    965  * add it at where specified so existing users are unaffected.
    966  */
    967 enum lws_extension_callback_reasons {
    968  LWS_EXT_CB_SERVER_CONTEXT_CONSTRUCT = 0,
    969  LWS_EXT_CB_CLIENT_CONTEXT_CONSTRUCT = 1,
    970  LWS_EXT_CB_SERVER_CONTEXT_DESTRUCT = 2,
    971  LWS_EXT_CB_CLIENT_CONTEXT_DESTRUCT = 3,
    972  LWS_EXT_CB_CONSTRUCT = 4,
    973  LWS_EXT_CB_CLIENT_CONSTRUCT = 5,
    974  LWS_EXT_CB_CHECK_OK_TO_REALLY_CLOSE = 6,
    975  LWS_EXT_CB_CHECK_OK_TO_PROPOSE_EXTENSION = 7,
    976  LWS_EXT_CB_DESTROY = 8,
    977  LWS_EXT_CB_DESTROY_ANY_WSI_CLOSING = 9,
    978  LWS_EXT_CB_ANY_WSI_ESTABLISHED = 10,
    979  LWS_EXT_CB_PACKET_RX_PREPARSE = 11,
    980  LWS_EXT_CB_PACKET_TX_PRESEND = 12,
    981  LWS_EXT_CB_PACKET_TX_DO_SEND = 13,
    982  LWS_EXT_CB_HANDSHAKE_REPLY_TX = 14,
    983  LWS_EXT_CB_FLUSH_PENDING_TX = 15,
    984  LWS_EXT_CB_EXTENDED_PAYLOAD_RX = 16,
    985  LWS_EXT_CB_CAN_PROXY_CLIENT_CONNECTION = 17,
    986  LWS_EXT_CB_1HZ = 18,
    987  LWS_EXT_CB_REQUEST_ON_WRITEABLE = 19,
    988  LWS_EXT_CB_IS_WRITEABLE = 20,
    989  LWS_EXT_CB_PAYLOAD_TX = 21,
    990  LWS_EXT_CB_PAYLOAD_RX = 22,
    991  LWS_EXT_CB_OPTION_DEFAULT = 23,
    992  LWS_EXT_CB_OPTION_SET = 24,
    993  LWS_EXT_CB_OPTION_CONFIRM = 25,
    994  LWS_EXT_CB_NAMED_OPTION_SET = 26,
    995 
    996  /****** add new things just above ---^ ******/
    997 };
    998 
    1005  /* Add new things just above here ---^
    1006  * This is part of the ABI, don't needlessly break compatibility */
    1007 };
    1008 
    1014  const char *name;
    1017  /* Add new things just above here ---^
    1018  * This is part of the ABI, don't needlessly break compatibility */
    1019 };
    1020 
    1023  const char *option_name;
    1025  const char *start;
    1026  int len;
    1027 };
    1028 
    1089 typedef int
    1090 lws_extension_callback_function(struct lws_context *context,
    1091  const struct lws_extension *ext, struct lws *wsi,
    1092  enum lws_extension_callback_reasons reason,
    1093  void *user, void *in, size_t len);
    1094 
    1097  const char *name;
    1099  const char *client_offer;
    1101  /* Add new things just above here ---^
    1102  * This is part of the ABI, don't needlessly break compatibility */
    1103 };
    1104 
    1113 LWS_VISIBLE LWS_EXTERN int
    1114 lws_set_extension_option(struct lws *wsi, const char *ext_name,
    1115  const char *opt_name, const char *opt_val);
    1116 
    1117 #ifndef LWS_NO_EXTENSIONS
    1118 /* lws_get_internal_extensions() - DEPRECATED
    1119  *
    1120  * \Deprecated There is no longer a set internal extensions table. The table is provided
    1121  * by user code along with application-specific settings. See the test
    1122  * client and server for how to do.
    1123  */
    1124 static LWS_INLINE LWS_WARN_DEPRECATED const struct lws_extension *
    1125 lws_get_internal_extensions() { return NULL; }
    1126 
    1137 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    1138 lws_ext_parse_options(const struct lws_extension *ext, struct lws *wsi,
    1139  void *ext_user, const struct lws_ext_options *opts,
    1140  const char *o, int len);
    1141 #endif
    1142 
    1155 LWS_EXTERN
    1157  struct lws_context *context, const struct lws_extension *ext,
    1158  struct lws *wsi, enum lws_extension_callback_reasons reason,
    1159  void *user, void *in, size_t len);
    1160 
    1161 /*
    1162  * The internal exts are part of the public abi
    1163  * If we add more extensions, publish the callback here ------v
    1164  */
    1166 
    1182 
    1187  const char *name;
    1208  unsigned int id;
    1215  void *user;
    1218  /* Add new things just above here ---^
    1219  * This is part of the ABI, don't needlessly break compatibility */
    1220 };
    1221 
    1222 struct lws_vhost;
    1223 
    1232 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
    1233 lws_vhost_name_to_protocol(struct lws_vhost *vh, const char *name);
    1234 
    1244 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
    1245 lws_get_protocol(struct lws *wsi);
    1246 
    1248 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
    1249 lws_protocol_get(struct lws *wsi) LWS_WARN_DEPRECATED;
    1250 
    1261 LWS_VISIBLE LWS_EXTERN void *
    1262 lws_protocol_vh_priv_zalloc(struct lws_vhost *vhost, const struct lws_protocols *prot,
    1263  int size);
    1264 
    1274 LWS_VISIBLE LWS_EXTERN void *
    1275 lws_protocol_vh_priv_get(struct lws_vhost *vhost, const struct lws_protocols *prot);
    1276 
    1285 LWS_VISIBLE LWS_EXTERN int
    1286 lws_finalize_startup(struct lws_context *context);
    1287 
    1288 #ifdef LWS_WITH_PLUGINS
    1289 
    1290 /* PLUGINS implies LIBUV */
    1291 
    1292 #define LWS_PLUGIN_API_MAGIC 180
    1293 
    1296  unsigned int api_magic;
    1297  const struct lws_protocols *protocols;
    1299  const struct lws_extension *extensions;
    1301 };
    1302 
    1303 typedef int (*lws_plugin_init_func)(struct lws_context *,
    1304  struct lws_plugin_capability *);
    1305 typedef int (*lws_plugin_destroy_func)(struct lws_context *);
    1306 
    1308 struct lws_plugin {
    1309  struct lws_plugin *list;
    1310 #if (UV_VERSION_MAJOR > 0)
    1311  uv_lib_t lib;
    1312 #else
    1313  void *l;
    1314 #endif
    1315  char name[64];
    1317 };
    1318 
    1319 #endif
    1320 
    1322 
    1323 
    1332 
    1334 #define LWSGS_EMAIL_CONTENT_SIZE 16384
    1335 
    1337 /* SHA-1 binary and hexified versions */
    1339 typedef struct { unsigned char bin[20]; } lwsgw_hash_bin;
    1341 typedef struct { char id[41]; } lwsgw_hash;
    1342 
    1349 };
    1350 
    1353  char username[32];
    1354  char email[100];
    1355  char ip[72];
    1356  unsigned int mask;
    1358  char session[42];
    1359 };
    1360 
    1365 };
    1366 
    1369  enum lws_gs_event event;
    1370  const char *username;
    1371  const char *email;
    1372 };
    1373 
    1375 
    1376 
    1390 
    1392 /*
    1393  * NOTE: These public enums are part of the abi. If you want to add one,
    1394  * add it at where specified so existing users are unaffected.
    1395  */
    1396 
    1400  (1 << 12),
    1407  (1 << 12),
    1423  (1 << 12),
    1428  (1 << 12),
    1446  /****** add new things just above ---^ ******/
    1447 };
    1448 
    1449 #define lws_check_opt(c, f) (((c) & (f)) == (f))
    1450 
    1461  int port;
    1466  const char *iface;
    1473  const struct lws_protocols *protocols;
    1477  const struct lws_extension *extensions;
    1485  const char *ssl_cert_filepath;
    1495  const char *ssl_ca_filepath;
    1497  const char *ssl_cipher_list;
    1501  const char *http_proxy_address;
    1504  unsigned int http_proxy_port;
    1506  int gid;
    1508  int uid;
    1510  unsigned int options;
    1512  void *user;
    1515  int ka_time;
    1525 #ifdef LWS_OPENSSL_SUPPORT
    1531 #else /* maintain structure layout either way */
    1533 #endif
    1534 
    1545  unsigned int count_threads;
    1547  unsigned int fd_limit_per_thread;
    1551  unsigned int timeout_secs;
    1556  const char *ecdh_curve;
    1558  const char *vhost_name;
    1562  const char * const *plugin_dirs;
    1571  const char *log_filepath;
    1574  const struct lws_http_mount *mounts;
    1576  const char *server_string;
    1579  unsigned int pt_serv_buf_size;
    1594  unsigned short ws_ping_pong_interval;
    1607  /* Add new things just above here ---^
    1608  * This is part of the ABI, don't needlessly break compatibility
    1609  *
    1610  * The below is to ensure later library versions with new
    1611  * members added above will see 0 (default) even if the app
    1612  * was not built against the newer headers.
    1613  */
    1614 
    1615  void *_unused[8];
    1616 };
    1617 
    1652 LWS_VISIBLE LWS_EXTERN struct lws_context *
    1654 
    1663 LWS_VISIBLE LWS_EXTERN void
    1664 lws_context_destroy(struct lws_context *context);
    1665 
    1683 LWS_VISIBLE LWS_EXTERN int
    1684 lws_set_proxy(struct lws_vhost *vhost, const char *proxy);
    1685 
    1686 
    1687 struct lws_vhost;
    1688 
    1698 LWS_EXTERN LWS_VISIBLE struct lws_vhost *
    1699 lws_create_vhost(struct lws_context *context,
    1700  struct lws_context_creation_info *info);
    1701 
    1716 LWS_VISIBLE LWS_EXTERN int
    1717 lwsws_get_config_globals(struct lws_context_creation_info *info, const char *d,
    1718  char **config_strings, int *len);
    1719 
    1735 LWS_VISIBLE LWS_EXTERN int
    1736 lwsws_get_config_vhosts(struct lws_context *context,
    1737  struct lws_context_creation_info *info, const char *d,
    1738  char **config_strings, int *len);
    1739 
    1741 LWS_VISIBLE LWS_EXTERN struct lws_vhost *
    1742 lws_vhost_get(struct lws *wsi) LWS_WARN_DEPRECATED;
    1743 
    1749 LWS_VISIBLE LWS_EXTERN struct lws_vhost *
    1750 lws_get_vhost(struct lws *wsi);
    1751 
    1759 LWS_VISIBLE LWS_EXTERN int
    1760 lws_json_dump_vhost(const struct lws_vhost *vh, char *buf, int len);
    1761 
    1769 LWS_VISIBLE LWS_EXTERN int
    1770 lws_json_dump_context(const struct lws_context *context, char *buf, int len);
    1771 
    1781 LWS_VISIBLE LWS_EXTERN void *
    1782 lws_context_user(struct lws_context *context);
    1783 
    1789 
    1799  const char *name;
    1800  const char *value;
    1801 };
    1802 
    1815 };
    1816 
    1824  const char *mountpoint;
    1826  const char *origin;
    1828  const char *def;
    1830  const char *protocol;
    1846  unsigned int auth_mask;
    1849  unsigned int cache_reusable:1;
    1850  unsigned int cache_revalidate:1;
    1851  unsigned int cache_intermediaries:1;
    1853  unsigned char origin_protocol;
    1854  unsigned char mountpoint_len;
    1855 };
    1858 
    1864 
    1872  LCCSCF_USE_SSL = (1 << 0),
    1873  LCCSCF_ALLOW_SELFSIGNED = (1 << 1),
    1874  LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK = (1 << 2)
    1875 };
    1876 
    1881  struct lws_context *context;
    1883  const char *address;
    1885  int port;
    1889  const char *path;
    1891  const char *host;
    1893  const char *origin;
    1895  const char *protocol;
    1899  void *userdata;
    1903  const char *method;
    1906  struct lws *parent_wsi;
    1910  const char *uri_replace_from;
    1913  const char *uri_replace_to;
    1915  struct lws_vhost *vhost;
    1917  struct lws **pwsi;
    1929  /* Add new things just above here ---^
    1930  * This is part of the ABI, don't needlessly break compatibility
    1931  *
    1932  * The below is to ensure later library versions with new
    1933  * members added above will see 0 (default) even if the app
    1934  * was not built against the newer headers.
    1935  */
    1936 
    1937  void *_unused[4];
    1938 };
    1939 
    1947 LWS_VISIBLE LWS_EXTERN struct lws *
    1949 
    1970 /* deprecated, use lws_client_connect_via_info() */
    1971 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    1972 lws_client_connect(struct lws_context *clients, const char *address,
    1973  int port, int ssl_connection, const char *path,
    1974  const char *host, const char *origin, const char *protocol,
    1975  int ietf_version_or_minus_one) LWS_WARN_DEPRECATED;
    1976 /* deprecated, use lws_client_connect_via_info() */
    1997 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    1998 lws_client_connect_extended(struct lws_context *clients, const char *address,
    1999  int port, int ssl_connection, const char *path,
    2000  const char *host, const char *origin,
    2001  const char *protocol, int ietf_version_or_minus_one,
    2002  void *userdata) LWS_WARN_DEPRECATED;
    2003 
    2029 LWS_VISIBLE LWS_EXTERN int
    2031  struct lws_vhost *vhost);
    2032 
    2033 LWS_VISIBLE LWS_EXTERN int
    2034 lws_http_client_read(struct lws *wsi, char **buf, int *len);
    2036 
    2044 
    2077 LWS_VISIBLE LWS_EXTERN int
    2078 lws_service(struct lws_context *context, int timeout_ms);
    2079 
    2091 LWS_VISIBLE LWS_EXTERN int
    2092 lws_service_tsi(struct lws_context *context, int timeout_ms, int tsi);
    2093 
    2109 LWS_VISIBLE LWS_EXTERN void
    2110 lws_cancel_service_pt(struct lws *wsi);
    2111 
    2123 LWS_VISIBLE LWS_EXTERN void
    2124 lws_cancel_service(struct lws_context *context);
    2125 
    2148 LWS_VISIBLE LWS_EXTERN int
    2149 lws_service_fd(struct lws_context *context, struct lws_pollfd *pollfd);
    2150 
    2160 LWS_VISIBLE LWS_EXTERN int
    2161 lws_service_fd_tsi(struct lws_context *context, struct lws_pollfd *pollfd,
    2162  int tsi);
    2163 
    2165 
    2171 
    2178 
    2190 LWS_VISIBLE LWS_EXTERN const char *
    2191 lws_get_mimetype(const char *file, const struct lws_http_mount *m);
    2192 
    2211 LWS_VISIBLE LWS_EXTERN int
    2212 lws_serve_http_file(struct lws *wsi, const char *file, const char *content_type,
    2213  const char *other_headers, int other_headers_len);
    2214 LWS_VISIBLE LWS_EXTERN int
    2215 lws_serve_http_file_fragment(struct lws *wsi);
    2217 
    2228 
    2229 enum http_status {
    2230  HTTP_STATUS_OK = 200,
    2231  HTTP_STATUS_NO_CONTENT = 204,
    2232 
    2233  HTTP_STATUS_MOVED_PERMANENTLY = 301,
    2234  HTTP_STATUS_FOUND = 302,
    2235  HTTP_STATUS_SEE_OTHER = 303,
    2236 
    2237  HTTP_STATUS_BAD_REQUEST = 400,
    2238  HTTP_STATUS_UNAUTHORIZED,
    2239  HTTP_STATUS_PAYMENT_REQUIRED,
    2240  HTTP_STATUS_FORBIDDEN,
    2241  HTTP_STATUS_NOT_FOUND,
    2242  HTTP_STATUS_METHOD_NOT_ALLOWED,
    2243  HTTP_STATUS_NOT_ACCEPTABLE,
    2244  HTTP_STATUS_PROXY_AUTH_REQUIRED,
    2245  HTTP_STATUS_REQUEST_TIMEOUT,
    2246  HTTP_STATUS_CONFLICT,
    2247  HTTP_STATUS_GONE,
    2248  HTTP_STATUS_LENGTH_REQUIRED,
    2249  HTTP_STATUS_PRECONDITION_FAILED,
    2250  HTTP_STATUS_REQ_ENTITY_TOO_LARGE,
    2251  HTTP_STATUS_REQ_URI_TOO_LONG,
    2252  HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE,
    2253  HTTP_STATUS_REQ_RANGE_NOT_SATISFIABLE,
    2254  HTTP_STATUS_EXPECTATION_FAILED,
    2255 
    2256  HTTP_STATUS_INTERNAL_SERVER_ERROR = 500,
    2257  HTTP_STATUS_NOT_IMPLEMENTED,
    2258  HTTP_STATUS_BAD_GATEWAY,
    2259  HTTP_STATUS_SERVICE_UNAVAILABLE,
    2260  HTTP_STATUS_GATEWAY_TIMEOUT,
    2261  HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED,
    2262 };
    2263 
    2265  char *p;
    2266  int len;
    2267  int max_len;
    2268  int final;
    2269 };
    2270 
    2271 typedef const char *(*lws_process_html_state_cb)(void *data, int index);
    2272 
    2274  char *start;
    2275  char swallow[16];
    2276  int pos;
    2277  void *data;
    2278  const char * const *vars;
    2281  lws_process_html_state_cb replace;
    2282 };
    2283 
    2288 LWS_VISIBLE LWS_EXTERN int
    2290  struct lws_process_html_state *s);
    2292 
    2325 
    2333 struct lws_tokens {
    2334  char *token;
    2336 };
    2337 
    2338 /* enum lws_token_indexes
    2339  * these have to be kept in sync with lextable.h / minilex.c
    2340  *
    2341  * NOTE: These public enums are part of the abi. If you want to add one,
    2342  * add it at where specified so existing users are unaffected.
    2343  */
    2344 enum lws_token_indexes {
    2345  WSI_TOKEN_GET_URI = 0,
    2346  WSI_TOKEN_POST_URI = 1,
    2347  WSI_TOKEN_OPTIONS_URI = 2,
    2348  WSI_TOKEN_HOST = 3,
    2349  WSI_TOKEN_CONNECTION = 4,
    2350  WSI_TOKEN_UPGRADE = 5,
    2351  WSI_TOKEN_ORIGIN = 6,
    2352  WSI_TOKEN_DRAFT = 7,
    2353  WSI_TOKEN_CHALLENGE = 8,
    2354  WSI_TOKEN_EXTENSIONS = 9,
    2355  WSI_TOKEN_KEY1 = 10,
    2356  WSI_TOKEN_KEY2 = 11,
    2357  WSI_TOKEN_PROTOCOL = 12,
    2358  WSI_TOKEN_ACCEPT = 13,
    2359  WSI_TOKEN_NONCE = 14,
    2360  WSI_TOKEN_HTTP = 15,
    2361  WSI_TOKEN_HTTP2_SETTINGS = 16,
    2362  WSI_TOKEN_HTTP_ACCEPT = 17,
    2363  WSI_TOKEN_HTTP_AC_REQUEST_HEADERS = 18,
    2364  WSI_TOKEN_HTTP_IF_MODIFIED_SINCE = 19,
    2365  WSI_TOKEN_HTTP_IF_NONE_MATCH = 20,
    2366  WSI_TOKEN_HTTP_ACCEPT_ENCODING = 21,
    2367  WSI_TOKEN_HTTP_ACCEPT_LANGUAGE = 22,
    2368  WSI_TOKEN_HTTP_PRAGMA = 23,
    2369  WSI_TOKEN_HTTP_CACHE_CONTROL = 24,
    2370  WSI_TOKEN_HTTP_AUTHORIZATION = 25,
    2371  WSI_TOKEN_HTTP_COOKIE = 26,
    2372  WSI_TOKEN_HTTP_CONTENT_LENGTH = 27,
    2373  WSI_TOKEN_HTTP_CONTENT_TYPE = 28,
    2374  WSI_TOKEN_HTTP_DATE = 29,
    2375  WSI_TOKEN_HTTP_RANGE = 30,
    2376  WSI_TOKEN_HTTP_REFERER = 31,
    2377  WSI_TOKEN_KEY = 32,
    2378  WSI_TOKEN_VERSION = 33,
    2379  WSI_TOKEN_SWORIGIN = 34,
    2380 
    2381  WSI_TOKEN_HTTP_COLON_AUTHORITY = 35,
    2382  WSI_TOKEN_HTTP_COLON_METHOD = 36,
    2383  WSI_TOKEN_HTTP_COLON_PATH = 37,
    2384  WSI_TOKEN_HTTP_COLON_SCHEME = 38,
    2385  WSI_TOKEN_HTTP_COLON_STATUS = 39,
    2386 
    2387  WSI_TOKEN_HTTP_ACCEPT_CHARSET = 40,
    2388  WSI_TOKEN_HTTP_ACCEPT_RANGES = 41,
    2389  WSI_TOKEN_HTTP_ACCESS_CONTROL_ALLOW_ORIGIN = 42,
    2390  WSI_TOKEN_HTTP_AGE = 43,
    2391  WSI_TOKEN_HTTP_ALLOW = 44,
    2392  WSI_TOKEN_HTTP_CONTENT_DISPOSITION = 45,
    2393  WSI_TOKEN_HTTP_CONTENT_ENCODING = 46,
    2394  WSI_TOKEN_HTTP_CONTENT_LANGUAGE = 47,
    2395  WSI_TOKEN_HTTP_CONTENT_LOCATION = 48,
    2396  WSI_TOKEN_HTTP_CONTENT_RANGE = 49,
    2397  WSI_TOKEN_HTTP_ETAG = 50,
    2398  WSI_TOKEN_HTTP_EXPECT = 51,
    2399  WSI_TOKEN_HTTP_EXPIRES = 52,
    2400  WSI_TOKEN_HTTP_FROM = 53,
    2401  WSI_TOKEN_HTTP_IF_MATCH = 54,
    2402  WSI_TOKEN_HTTP_IF_RANGE = 55,
    2403  WSI_TOKEN_HTTP_IF_UNMODIFIED_SINCE = 56,
    2404  WSI_TOKEN_HTTP_LAST_MODIFIED = 57,
    2405  WSI_TOKEN_HTTP_LINK = 58,
    2406  WSI_TOKEN_HTTP_LOCATION = 59,
    2407  WSI_TOKEN_HTTP_MAX_FORWARDS = 60,
    2408  WSI_TOKEN_HTTP_PROXY_AUTHENTICATE = 61,
    2409  WSI_TOKEN_HTTP_PROXY_AUTHORIZATION = 62,
    2410  WSI_TOKEN_HTTP_REFRESH = 63,
    2411  WSI_TOKEN_HTTP_RETRY_AFTER = 64,
    2412  WSI_TOKEN_HTTP_SERVER = 65,
    2413  WSI_TOKEN_HTTP_SET_COOKIE = 66,
    2414  WSI_TOKEN_HTTP_STRICT_TRANSPORT_SECURITY = 67,
    2415  WSI_TOKEN_HTTP_TRANSFER_ENCODING = 68,
    2416  WSI_TOKEN_HTTP_USER_AGENT = 69,
    2417  WSI_TOKEN_HTTP_VARY = 70,
    2418  WSI_TOKEN_HTTP_VIA = 71,
    2419  WSI_TOKEN_HTTP_WWW_AUTHENTICATE = 72,
    2420 
    2421  WSI_TOKEN_PATCH_URI = 73,
    2422  WSI_TOKEN_PUT_URI = 74,
    2423  WSI_TOKEN_DELETE_URI = 75,
    2424 
    2425  WSI_TOKEN_HTTP_URI_ARGS = 76,
    2426  WSI_TOKEN_PROXY = 77,
    2427  WSI_TOKEN_HTTP_X_REAL_IP = 78,
    2428  WSI_TOKEN_HTTP1_0 = 79,
    2429 
    2430  /****** add new things just above ---^ ******/
    2431 
    2432  /* use token storage to stash these internally, not for
    2433  * user use */
    2434 
    2435  _WSI_TOKEN_CLIENT_SENT_PROTOCOLS,
    2436  _WSI_TOKEN_CLIENT_PEER_ADDRESS,
    2437  _WSI_TOKEN_CLIENT_URI,
    2438  _WSI_TOKEN_CLIENT_HOST,
    2439  _WSI_TOKEN_CLIENT_ORIGIN,
    2440  _WSI_TOKEN_CLIENT_METHOD,
    2441 
    2442  /* always last real token index*/
    2443  WSI_TOKEN_COUNT,
    2444 
    2445  /* parser state additions, no storage associated */
    2446  WSI_TOKEN_NAME_PART,
    2447  WSI_TOKEN_SKIPPING,
    2448  WSI_TOKEN_SKIPPING_SAW_CR,
    2449  WSI_PARSING_COMPLETE,
    2450  WSI_INIT_TOKEN_MUXURL,
    2451 };
    2452 
    2454  unsigned short token_limit[WSI_TOKEN_COUNT];
    2455 };
    2456 
    2462 LWS_VISIBLE LWS_EXTERN const unsigned char *
    2463 lws_token_to_string(enum lws_token_indexes token);
    2464 
    2465 
    2474 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2475 lws_hdr_total_length(struct lws *wsi, enum lws_token_indexes h);
    2476 
    2486 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2487 lws_hdr_fragment_length(struct lws *wsi, enum lws_token_indexes h, int frag_idx);
    2488 
    2502 LWS_VISIBLE LWS_EXTERN int
    2503 lws_hdr_copy(struct lws *wsi, char *dest, int len, enum lws_token_indexes h);
    2504 
    2522 LWS_VISIBLE LWS_EXTERN int
    2523 lws_hdr_copy_fragment(struct lws *wsi, char *dest, int len,
    2524  enum lws_token_indexes h, int frag_idx);
    2525 
    2536 LWS_VISIBLE LWS_EXTERN const char *
    2537 lws_get_urlarg_by_name(struct lws *wsi, const char *name, char *buf, int len);
    2539 
    2554 
    2565 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2566 lws_add_http_header_status(struct lws *wsi,
    2567  unsigned int code, unsigned char **p,
    2568  unsigned char *end);
    2581 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2582 lws_add_http_header_by_name(struct lws *wsi, const unsigned char *name,
    2583  const unsigned char *value, int length,
    2584  unsigned char **p, unsigned char *end);
    2598 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2599 lws_add_http_header_by_token(struct lws *wsi, enum lws_token_indexes token,
    2600  const unsigned char *value, int length,
    2601  unsigned char **p, unsigned char *end);
    2612 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2613 lws_add_http_header_content_length(struct lws *wsi,
    2614  unsigned long content_length,
    2615  unsigned char **p, unsigned char *end);
    2625 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2626 lws_finalize_http_header(struct lws *wsi, unsigned char **p,
    2627  unsigned char *end);
    2629 
    2648 
    2658 };
    2659 
    2673 typedef int (*lws_spa_fileupload_cb)(void *data, const char *name,
    2674  const char *filename, char *buf, int len,
    2675  enum lws_spa_fileupload_states state);
    2676 
    2679 struct lws_spa;
    2680 
    2699 LWS_VISIBLE LWS_EXTERN struct lws_spa *
    2700 lws_spa_create(struct lws *wsi, const char * const *param_names,
    2701  int count_params, int max_storage, lws_spa_fileupload_cb opt_cb,
    2702  void *opt_data);
    2703 
    2711 LWS_VISIBLE LWS_EXTERN int
    2712 lws_spa_process(struct lws_spa *spa, const char *in, int len);
    2713 
    2719 LWS_VISIBLE LWS_EXTERN int
    2720 lws_spa_finalize(struct lws_spa *spa);
    2721 
    2728 LWS_VISIBLE LWS_EXTERN int
    2729 lws_spa_get_length(struct lws_spa *spa, int n);
    2730 
    2736 LWS_VISIBLE LWS_EXTERN const char *
    2737 lws_spa_get_string(struct lws_spa *spa, int n);
    2738 
    2744 LWS_VISIBLE LWS_EXTERN int
    2745 lws_spa_destroy(struct lws_spa *spa);
    2747 
    2758 
    2769 LWS_VISIBLE LWS_EXTERN const char *
    2770 lws_urlencode(char *escaped, const char *string, int len);
    2771 
    2772 /*
    2773  * URLDECODE 1 / 2
    2774  *
    2775  * This simple urldecode only operates until the first '\0' and requires the
    2776  * data to exist all at once
    2777  */
    2790 LWS_VISIBLE LWS_EXTERN int
    2791 lws_urldecode(char *string, const char *escaped, int len);
    2793 
    2802 LWS_VISIBLE LWS_EXTERN int
    2803 lws_return_http_status(struct lws *wsi, unsigned int code,
    2804  const char *html_body);
    2805 
    2816 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2817 lws_http_redirect(struct lws *wsi, int code, const unsigned char *loc, int len,
    2818  unsigned char **p, unsigned char *end);
    2819 
    2828 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2829 lws_http_transaction_completed(struct lws *wsi);
    2831 
    2839 
    2850 LWS_VISIBLE LWS_EXTERN const char *
    2851 lws_sql_purify(char *escaped, const char *string, int len);
    2852 
    2863 LWS_VISIBLE LWS_EXTERN const char *
    2864 lws_json_purify(char *escaped, const char *string, int len);
    2866 
    2873 
    2875 #ifdef LWS_USE_LIBEV
    2876 typedef void (lws_ev_signal_cb_t)(EV_P_ struct ev_signal *w, int revents);
    2877 
    2878 LWS_VISIBLE LWS_EXTERN int
    2879 lws_ev_sigint_cfg(struct lws_context *context, int use_ev_sigint,
    2880  lws_ev_signal_cb_t *cb);
    2881 
    2882 LWS_VISIBLE LWS_EXTERN int
    2883 lws_ev_initloop(struct lws_context *context, struct ev_loop *loop, int tsi);
    2884 
    2885 LWS_VISIBLE LWS_EXTERN void
    2886 lws_ev_sigint_cb(struct ev_loop *loop, struct ev_signal *watcher, int revents);
    2887 #endif /* LWS_USE_LIBEV */
    2888 
    2890 
    2897 #ifdef LWS_USE_LIBUV
    2899 LWS_VISIBLE LWS_EXTERN int
    2900 lws_uv_sigint_cfg(struct lws_context *context, int use_uv_sigint,
    2901  uv_signal_cb cb);
    2902 
    2903 LWS_VISIBLE LWS_EXTERN void
    2904 lws_libuv_run(const struct lws_context *context, int tsi);
    2905 
    2906 LWS_VISIBLE LWS_EXTERN void
    2907 lws_libuv_stop(struct lws_context *context);
    2908 
    2909 LWS_VISIBLE LWS_EXTERN int
    2910 lws_uv_initloop(struct lws_context *context, uv_loop_t *loop, int tsi);
    2911 
    2912 LWS_VISIBLE LWS_EXTERN uv_loop_t *
    2913 lws_uv_getloop(struct lws_context *context, int tsi);
    2914 
    2915 LWS_VISIBLE LWS_EXTERN void
    2916 lws_uv_sigint_cb(uv_signal_t *watcher, int signum);
    2917 #endif /* LWS_USE_LIBUV */
    2918 
    2925 
    2926 /*
    2927  * NOTE: These public enums are part of the abi. If you want to add one,
    2928  * add it at where specified so existing users are unaffected.
    2929  */
    2930 enum pending_timeout {
    2931  NO_PENDING_TIMEOUT = 0,
    2932  PENDING_TIMEOUT_AWAITING_PROXY_RESPONSE = 1,
    2933  PENDING_TIMEOUT_AWAITING_CONNECT_RESPONSE = 2,
    2934  PENDING_TIMEOUT_ESTABLISH_WITH_SERVER = 3,
    2935  PENDING_TIMEOUT_AWAITING_SERVER_RESPONSE = 4,
    2936  PENDING_TIMEOUT_AWAITING_PING = 5,
    2937  PENDING_TIMEOUT_CLOSE_ACK = 6,
    2938  PENDING_TIMEOUT_AWAITING_EXTENSION_CONNECT_RESPONSE = 7,
    2939  PENDING_TIMEOUT_SENT_CLIENT_HANDSHAKE = 8,
    2940  PENDING_TIMEOUT_SSL_ACCEPT = 9,
    2941  PENDING_TIMEOUT_HTTP_CONTENT = 10,
    2942  PENDING_TIMEOUT_AWAITING_CLIENT_HS_SEND = 11,
    2943  PENDING_FLUSH_STORED_SEND_BEFORE_CLOSE = 12,
    2944  PENDING_TIMEOUT_SHUTDOWN_FLUSH = 13,
    2945  PENDING_TIMEOUT_CGI = 14,
    2946  PENDING_TIMEOUT_HTTP_KEEPALIVE_IDLE = 15,
    2947  PENDING_TIMEOUT_WS_PONG_CHECK_SEND_PING = 16,
    2948  PENDING_TIMEOUT_WS_PONG_CHECK_GET_PONG = 17,
    2949 
    2950  /****** add new things just above ---^ ******/
    2951 };
    2952 
    2962 LWS_VISIBLE LWS_EXTERN void
    2963 lws_set_timeout(struct lws *wsi, enum pending_timeout reason, int secs);
    2965 
    2971 #if !defined(LWS_SIZEOFPTR)
    2972 #define LWS_SIZEOFPTR (sizeof (void *))
    2973 #endif
    2974 #if !defined(u_int64_t)
    2975 #define u_int64_t unsigned long long
    2976 #endif
    2977 
    2978 #if defined(__x86_64__)
    2979 #define _LWS_PAD_SIZE 16 /* Intel recommended for best performance */
    2980 #else
    2981 #define _LWS_PAD_SIZE LWS_SIZEOFPTR /* Size of a pointer on the target arch */
    2982 #endif
    2983 #define _LWS_PAD(n) (((n) % _LWS_PAD_SIZE) ? \
    2984  ((n) + (_LWS_PAD_SIZE - ((n) % _LWS_PAD_SIZE))) : (n))
    2985 #define LWS_PRE _LWS_PAD(4 + 10)
    2986 /* used prior to 1.7 and retained for backward compatibility */
    2987 #define LWS_SEND_BUFFER_PRE_PADDING LWS_PRE
    2988 #define LWS_SEND_BUFFER_POST_PADDING 0
    2989 
    2990 /*
    2991  * NOTE: These public enums are part of the abi. If you want to add one,
    2992  * add it at where specified so existing users are unaffected.
    2993  */
    3008  /* LWS_WRITE_CLOSE is handled by lws_close_reason() */
    3009  LWS_WRITE_PING = 5,
    3010  LWS_WRITE_PONG = 6,
    3011 
    3012  /* Same as write_http but we know this write ends the transaction */
    3013  LWS_WRITE_HTTP_FINAL = 7,
    3014 
    3015  /* HTTP2 */
    3016 
    3024  /****** add new things just above ---^ ******/
    3025 
    3026  /* flags */
    3027 
    3035 };
    3036 
    3037 
    3109 LWS_VISIBLE LWS_EXTERN int
    3110 lws_write(struct lws *wsi, unsigned char *buf, size_t len,
    3111  enum lws_write_protocol protocol);
    3112 
    3113 /* helper for case where buffer may be const */
    3114 #define lws_write_http(wsi, buf, len) \
    3115  lws_write(wsi, (unsigned char *)(buf), len, LWS_WRITE_HTTP)
    3116 
    3118 
    3137 
    3150 LWS_VISIBLE LWS_EXTERN int
    3151 lws_callback_on_writable(struct lws *wsi);
    3152 
    3166 LWS_VISIBLE LWS_EXTERN int
    3167 lws_callback_on_writable_all_protocol(const struct lws_context *context,
    3168  const struct lws_protocols *protocol);
    3169 
    3183 LWS_VISIBLE LWS_EXTERN int
    3184 lws_callback_on_writable_all_protocol_vhost(const struct lws_vhost *vhost,
    3185  const struct lws_protocols *protocol);
    3186 
    3199 LWS_VISIBLE LWS_EXTERN int
    3200 lws_callback_all_protocol(struct lws_context *context,
    3201  const struct lws_protocols *protocol, int reason);
    3202 
    3215 LWS_VISIBLE LWS_EXTERN int
    3216 lws_callback_all_protocol_vhost(struct lws_vhost *vh,
    3217  const struct lws_protocols *protocol, int reason);
    3218 
    3232 LWS_VISIBLE LWS_EXTERN int
    3233 lws_callback_vhost_protocols(struct lws *wsi, int reason, void *in, int len);
    3234 
    3242 LWS_VISIBLE LWS_EXTERN int
    3243 lws_get_socket_fd(struct lws *wsi);
    3244 
    3266 LWS_VISIBLE LWS_EXTERN size_t
    3267 lws_get_peer_write_allowance(struct lws *wsi);
    3269 
    3280 LWS_VISIBLE LWS_EXTERN int
    3281 lws_rx_flow_control(struct lws *wsi, int enable);
    3282 
    3292 LWS_VISIBLE LWS_EXTERN void
    3293 lws_rx_flow_allow_all_protocol(const struct lws_context *context,
    3294  const struct lws_protocols *protocol);
    3295 
    3312 LWS_VISIBLE LWS_EXTERN size_t
    3313 lws_remaining_packet_payload(struct lws *wsi);
    3314 
    3315 
    3324 
    3337 LWS_VISIBLE LWS_EXTERN struct lws *
    3338 lws_adopt_socket(struct lws_context *context, lws_sockfd_type accept_fd);
    3361 LWS_VISIBLE LWS_EXTERN struct lws *
    3362 lws_adopt_socket_readbuf(struct lws_context *context, lws_sockfd_type accept_fd,
    3363  const char *readbuf, size_t len);
    3365 
    3371 
    3382 LWS_VISIBLE LWS_EXTERN const char * LWS_WARN_UNUSED_RESULT
    3383 lws_canonical_hostname(struct lws_context *context);
    3384 
    3399 LWS_VISIBLE LWS_EXTERN void
    3400 lws_get_peer_addresses(struct lws *wsi, lws_sockfd_type fd, char *name,
    3401  int name_len, char *rip, int rip_len);
    3402 
    3413 LWS_VISIBLE LWS_EXTERN const char *
    3414 lws_get_peer_simple(struct lws *wsi, char *name, int namelen);
    3415 
    3427 LWS_VISIBLE LWS_EXTERN int
    3428 lws_interface_to_sa(int ipv6, const char *ifname, struct sockaddr_in *addr,
    3429  size_t addrlen);
    3431 
    3437 
    3450 LWS_VISIBLE LWS_EXTERN int
    3451 lws_get_random(struct lws_context *context, void *buf, int len);
    3459 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3460 lws_daemonize(const char *_lock_path);
    3466 LWS_VISIBLE LWS_EXTERN const char * LWS_WARN_UNUSED_RESULT
    3468 
    3475 LWS_VISIBLE LWS_EXTERN void *
    3476 lws_wsi_user(struct lws *wsi);
    3477 
    3489 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3490 lws_parse_uri(char *p, const char **prot, const char **ads, int *port,
    3491  const char **path);
    3492 
    3496 LWS_VISIBLE LWS_EXTERN unsigned long
    3497 lws_now_secs(void);
    3498 
    3508 LWS_VISIBLE LWS_EXTERN struct lws_context * LWS_WARN_UNUSED_RESULT
    3509 lws_get_context(const struct lws *wsi);
    3510 
    3520 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3521 lws_get_count_threads(struct lws_context *context);
    3522 
    3530 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    3531 lws_get_parent(const struct lws *wsi);
    3532 
    3539 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    3540 lws_get_child(const struct lws *wsi);
    3541 
    3542 
    3543 /*
    3544  * \deprecated DEPRECATED Note: this is not normally needed as a user api.
    3545  * It's provided in case it is
    3546  * useful when integrating with other app poll loop service code.
    3547  */
    3548 LWS_VISIBLE LWS_EXTERN int
    3549 lws_read(struct lws *wsi, unsigned char *buf, size_t len);
    3550 
    3558 LWS_VISIBLE LWS_EXTERN void
    3559 lws_set_allocator(void *(*realloc)(void *ptr, size_t size));
    3561 
    3567 
    3574 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3575 lws_send_pipe_choked(struct lws *wsi);
    3576 
    3581 LWS_VISIBLE LWS_EXTERN int
    3582 lws_is_final_fragment(struct lws *wsi);
    3583 
    3588 LWS_VISIBLE LWS_EXTERN unsigned char
    3589 lws_get_reserved_bits(struct lws *wsi);
    3590 
    3607 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3608 lws_partial_buffered(struct lws *wsi);
    3609 
    3619 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3620 lws_frame_is_binary(struct lws *wsi);
    3621 
    3630 LWS_VISIBLE LWS_EXTERN int
    3631 lws_is_ssl(struct lws *wsi);
    3636 LWS_VISIBLE LWS_EXTERN int
    3637 lws_is_cgi(struct lws *wsi);
    3639 
    3640 
    3646 #ifdef LWS_SHA1_USE_OPENSSL_NAME
    3648 #define lws_SHA1 SHA1
    3649 #else
    3650 
    3659 LWS_VISIBLE LWS_EXTERN unsigned char *
    3660 lws_SHA1(const unsigned char *d, size_t n, unsigned char *md);
    3661 #endif
    3662 
    3672 LWS_VISIBLE LWS_EXTERN int
    3673 lws_b64_encode_string(const char *in, int in_len, char *out, int out_size);
    3683 LWS_VISIBLE LWS_EXTERN int
    3684 lws_b64_decode_string(const char *in, char *out, int out_size);
    3686 
    3687 
    3697 #ifdef LWS_WITH_CGI
    3698 enum lws_enum_stdinouterr {
    3699  LWS_STDIN = 0,
    3700  LWS_STDOUT = 1,
    3701  LWS_STDERR = 2,
    3702 };
    3703 
    3704 enum lws_cgi_hdr_state {
    3705  LCHS_HEADER,
    3706  LCHS_CR1,
    3707  LCHS_LF1,
    3708  LCHS_CR2,
    3709  LCHS_LF2,
    3710  LHCS_PAYLOAD,
    3711  LCHS_SINGLE_0A,
    3712 };
    3713 
    3715  struct lws **stdwsi;
    3716  enum lws_enum_stdinouterr ch;
    3717  unsigned char *data;
    3718  enum lws_cgi_hdr_state hdr_state;
    3719  int len;
    3720 };
    3721 
    3722 
    3732 LWS_VISIBLE LWS_EXTERN int
    3733 lws_cgi(struct lws *wsi, const char * const *exec_array,
    3734  int script_uri_path_len, int timeout_secs,
    3735  const struct lws_protocol_vhost_options *mp_cgienv);
    3736 
    3742 LWS_VISIBLE LWS_EXTERN int
    3743 lws_cgi_write_split_stdout_headers(struct lws *wsi);
    3744 
    3750 LWS_VISIBLE LWS_EXTERN int
    3751 lws_cgi_kill(struct lws *wsi);
    3752 #endif
    3753 
    3755 
    3772 
    3779  lws_filefd_type (*open)(struct lws *wsi, const char *filename,
    3780  unsigned long *filelen, int flags);
    3784  int (*close)(struct lws *wsi, lws_filefd_type fd);
    3786  unsigned long (*seek_cur)(struct lws *wsi, lws_filefd_type fd,
    3787  long offset_from_cur_pos);
    3789  int (*read)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    3790  unsigned char *buf, unsigned long len);
    3792  int (*write)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    3793  unsigned char *buf, unsigned long len);
    3796  /* Add new things just above here ---^
    3797  * This is part of the ABI, don't needlessly break compatibility */
    3798 };
    3799 
    3805 LWS_VISIBLE LWS_EXTERN struct lws_plat_file_ops * LWS_WARN_UNUSED_RESULT
    3806 lws_get_fops(struct lws_context *context);
    3807 
    3816 static LWS_INLINE lws_filefd_type LWS_WARN_UNUSED_RESULT
    3817 lws_plat_file_open(struct lws *wsi, const char *filename,
    3818  unsigned long *filelen, int flags)
    3819 {
    3820  return lws_get_fops(lws_get_context(wsi))->open(wsi, filename,
    3821  filelen, flags);
    3822 }
    3823 
    3830 static LWS_INLINE int
    3831 lws_plat_file_close(struct lws *wsi, lws_filefd_type fd)
    3832 {
    3833  return lws_get_fops(lws_get_context(wsi))->close(wsi, fd);
    3834 }
    3835 
    3843 static LWS_INLINE unsigned long
    3844 lws_plat_file_seek_cur(struct lws *wsi, lws_filefd_type fd, long offset)
    3845 {
    3846  return lws_get_fops(lws_get_context(wsi))->seek_cur(wsi, fd, offset);
    3847 }
    3857 static LWS_INLINE int LWS_WARN_UNUSED_RESULT
    3858 lws_plat_file_read(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    3859  unsigned char *buf, unsigned long len)
    3860 {
    3861  return lws_get_fops(lws_get_context(wsi))->read(wsi, fd, amount, buf,
    3862  len);
    3863 }
    3873 static LWS_INLINE int LWS_WARN_UNUSED_RESULT
    3874 lws_plat_file_write(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    3875  unsigned char *buf, unsigned long len)
    3876 {
    3877  return lws_get_fops(lws_get_context(wsi))->write(wsi, fd, amount, buf,
    3878  len);
    3879 }
    3881 
    3913 #ifdef LWS_WITH_SMTP
    3914 
    3926 };
    3927 
    3929 struct lws_email {
    3930  void *data;
    3932  uv_loop_t *loop;
    3935  char email_smtp_ip[32];
    3936  char email_helo[32];
    3937  char email_from[100];
    3938  char email_to[100];
    3940  unsigned int max_content_size;
    3943  /* Fill all the callbacks before init */
    3944 
    3945  int (*on_next)(struct lws_email *email);
    3950  int (*on_sent)(struct lws_email *email);
    3955  int (*on_get_body)(struct lws_email *email, char *buf, int len);
    3961  /* private things */
    3962  uv_timer_t timeout_email;
    3964  uv_connect_t email_connect_req;
    3965  uv_tcp_t email_client;
    3967  char email_buf[256];
    3968  char *content;
    3969 };
    3970 
    3980 LWS_VISIBLE LWS_EXTERN int
    3981 lws_email_init(struct lws_email *email, uv_loop_t *loop, int max_content);
    3982 
    3991 LWS_VISIBLE LWS_EXTERN void
    3992 lws_email_check(struct lws_email *email);
    4000 LWS_VISIBLE LWS_EXTERN void
    4001 lws_email_destroy(struct lws_email *email);
    4002 
    4003 #endif
    4004 
    4005 
    4006 #ifdef __cplusplus
    4007 }
    4008 #endif
    4009 
    4010 #endif
    LWS_VISIBLE LWS_EXTERN int lws_spa_destroy(struct lws_spa *spa)
    LWS_VISIBLE LWS_EXTERN const char * lws_json_purify(char *escaped, const char *string, int len)
    -
    Definition: libwebsockets.h:3700
    +
    Definition: libwebsockets.h:3714
    size_t rx_buffer_size
    Definition: libwebsockets.h:1199
    LWS_VISIBLE LWS_EXTERN struct lws_spa * lws_spa_create(struct lws *wsi, const char *const *param_names, int count_params, int max_storage, lws_spa_fileupload_cb opt_cb, void *opt_data)
    LWS_VISIBLE LWS_EXTERN struct lws_vhost * lws_vhost_get(struct lws *wsi) LWS_WARN_DEPRECATED
    @@ -81,16 +81,16 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
    Definition: libwebsockets.h:684
    Definition: libwebsockets.h:812
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_daemonize(const char *_lock_path)
    -
    Definition: libwebsockets.h:1799
    -
    Definition: libwebsockets.h:2991
    -
    Definition: libwebsockets.h:3905
    +
    Definition: libwebsockets.h:1811
    +
    Definition: libwebsockets.h:3005
    +
    Definition: libwebsockets.h:3919
    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)
    Definition: libwebsockets.h:234
    -
    unsigned int auth_mask
    Definition: libwebsockets.h:1834
    -
    Definition: libwebsockets.h:3014
    -
    void * data
    Definition: libwebsockets.h:3916
    -
    const char * uri_replace_from
    Definition: libwebsockets.h:1898
    -
    int(* write)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount, unsigned char *buf, unsigned long len)
    Definition: libwebsockets.h:3778
    +
    unsigned int auth_mask
    Definition: libwebsockets.h:1846
    +
    Definition: libwebsockets.h:3028
    +
    void * data
    Definition: libwebsockets.h:3930
    +
    const char * uri_replace_from
    Definition: libwebsockets.h:1910
    +
    int(* write)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount, unsigned char *buf, unsigned long len)
    Definition: libwebsockets.h:3792
    lws_callback_reasons
    Definition: libwebsockets.h:577
    LWS_VISIBLE LWS_EXTERN int lws_hdr_copy_fragment(struct lws *wsi, char *dest, int len, enum lws_token_indexes h, int frag_idx)
    @@ -109,75 +109,76 @@ $(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:661
    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:3936
    +
    int(* on_sent)(struct lws_email *email)
    Definition: libwebsockets.h:3950
    Definition: libwebsockets.h:1339
    -
    struct lws ** pwsi
    Definition: libwebsockets.h:1905
    +
    struct lws ** pwsi
    Definition: libwebsockets.h:1917
    Definition: libwebsockets.h:695
    -
    const char * path
    Definition: libwebsockets.h:1877
    +
    const char * path
    Definition: libwebsockets.h:1889
    LWS_VISIBLE LWS_EXTERN size_t lws_remaining_packet_payload(struct lws *wsi)
    Definition: libwebsockets.h:496
    Definition: libwebsockets.h:1295
    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:3952
    +
    time_t email_connect_started
    Definition: libwebsockets.h:3966
    lws_close_status
    Definition: libwebsockets.h:467
    LWS_VISIBLE LWS_EXTERN int lws_callback_all_protocol(struct lws_context *context, const struct lws_protocols *protocol, int reason)
    Definition: libwebsockets.h:507
    -
    int token_len
    Definition: libwebsockets.h:2323
    +
    int token_len
    Definition: libwebsockets.h:2335
    const struct lws_http_mount * mounts
    Definition: libwebsockets.h:1574
    Definition: libwebsockets.h:836
    LWS_VISIBLE LWS_EXTERN struct lws_context *LWS_WARN_UNUSED_RESULT lws_get_context(const struct lws *wsi)
    -
    const char * value
    Definition: libwebsockets.h:1788
    -
    Definition: libwebsockets.h:2642
    -
    Definition: libwebsockets.h:3910
    +
    const char * value
    Definition: libwebsockets.h:1800
    +
    Definition: libwebsockets.h:2654
    +
    Definition: libwebsockets.h:3924
    const char * username
    Definition: libwebsockets.h:1370
    LWS_VISIBLE LWS_EXTERN struct lws * lws_client_connect_via_info(struct lws_client_connect_info *ccinfo)
    -
    const char * protocol
    Definition: libwebsockets.h:1818
    -
    struct lws ** stdwsi
    Definition: libwebsockets.h:3701
    +
    const char * protocol
    Definition: libwebsockets.h:1830
    +
    struct lws ** stdwsi
    Definition: libwebsockets.h:3715
    LWS_VISIBLE LWS_EXTERN int lws_json_dump_vhost(const struct lws_vhost *vh, char *buf, int len)
    Definition: libwebsockets.h:782
    LWS_VISIBLE LWS_EXTERN const char * lws_get_mimetype(const char *file, const struct lws_http_mount *m)
    Definition: libwebsockets.h:1341
    -
    int cache_max_age
    Definition: libwebsockets.h:1832
    +
    int cache_max_age
    Definition: libwebsockets.h:1844
    long ssl_options_clear
    Definition: libwebsockets.h:1592
    Definition: libwebsockets.h:675
    Definition: libwebsockets.h:1460
    LWS_VISIBLE LWS_EXTERN void lws_context_destroy(struct lws_context *context)
    Definition: libwebsockets.h:523
    -
    char * start
    Definition: libwebsockets.h:2262
    +
    char * start
    Definition: libwebsockets.h:2274
    LWS_VISIBLE LWS_EXTERN void lws_set_allocator(void *(*realloc)(void *ptr, size_t size))
    lws_callback_function * callback
    Definition: libwebsockets.h:1190
    -
    Definition: libwebsockets.h:2981
    +
    Definition: libwebsockets.h:2995
    LWS_VISIBLE LWS_EXTERN int lws_get_socket_fd(struct lws *wsi)
    Definition: libwebsockets.h:873
    -
    const char * protocol
    Definition: libwebsockets.h:1883
    +
    const char * protocol
    Definition: libwebsockets.h:1895
    Definition: libwebsockets.h:862
    unsigned int pt_serv_buf_size
    Definition: libwebsockets.h:1579
    LWS_VISIBLE LWS_EXTERN struct lws * lws_adopt_socket(struct lws_context *context, lws_sockfd_type accept_fd)
    -
    int len
    Definition: libwebsockets.h:2254
    +
    int len
    Definition: libwebsockets.h:2266
    int ka_time
    Definition: libwebsockets.h:1515
    Definition: libwebsockets.h:1415
    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))
    +
    unsigned short ws_ping_pong_interval
    Definition: libwebsockets.h:1594
    int count_extensions
    Definition: libwebsockets.h:1300
    -
    Definition: libwebsockets.h:2985
    -
    int port
    Definition: libwebsockets.h:1873
    -
    struct lws_context * context
    Definition: libwebsockets.h:1869
    +
    Definition: libwebsockets.h:2999
    +
    int port
    Definition: libwebsockets.h:1885
    +
    struct lws_context * context
    Definition: libwebsockets.h:1881
    Definition: libwebsockets.h:1347
    -
    int ietf_version_or_minus_one
    Definition: libwebsockets.h:1885
    +
    int ietf_version_or_minus_one
    Definition: libwebsockets.h:1897
    LWS_VISIBLE LWS_EXTERN int lws_callback_all_protocol_vhost(struct lws_vhost *vh, const struct lws_protocols *protocol, int reason)
    -
    Definition: libwebsockets.h:3903
    -
    Definition: libwebsockets.h:1784
    +
    Definition: libwebsockets.h:3917
    +
    Definition: libwebsockets.h:1796
    LWS_VISIBLE LWS_EXTERN int lws_callback_on_writable(struct lws *wsi)
    -
    const char *const * vars
    Definition: libwebsockets.h:2266
    +
    const char *const * vars
    Definition: libwebsockets.h:2278
    Definition: libwebsockets.h:475
    -
    Definition: libwebsockets.h:1868
    +
    Definition: libwebsockets.h:1880
    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:1090
    int len
    Definition: libwebsockets.h:1026
    -
    Definition: libwebsockets.h:1809
    -
    const char * def
    Definition: libwebsockets.h:1816
    +
    Definition: libwebsockets.h:1821
    +
    const char * def
    Definition: libwebsockets.h:1828
    Definition: libwebsockets.h:636
    Definition: libwebsockets.h:1427
    lws_context_options
    Definition: libwebsockets.h:1398
    @@ -186,28 +187,28 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
    Definition: libwebsockets.h:1433
    Definition: libwebsockets.h:802
    const char * option_name
    Definition: libwebsockets.h:1023
    -
    Definition: libwebsockets.h:1797
    +
    Definition: libwebsockets.h:1809
    lws_sockfd_type fd
    Definition: libwebsockets.h:445
    const char * ssl_private_key_password
    Definition: libwebsockets.h:1483
    short events
    Definition: libwebsockets.h:414
    Definition: libwebsockets.h:1308
    const struct lws_extension * extensions
    Definition: libwebsockets.h:1299
    LWS_VISIBLE LWS_EXTERN void lws_set_timeout(struct lws *wsi, enum pending_timeout reason, int secs)
    -
    void * userdata
    Definition: libwebsockets.h:1887
    +
    void * userdata
    Definition: libwebsockets.h:1899
    Definition: libwebsockets.h:633
    Definition: libwebsockets.h:820
    LWS_VISIBLE LWS_EXTERN int lws_service_tsi(struct lws_context *context, int timeout_ms, int tsi)
    -
    unsigned char * data
    Definition: libwebsockets.h:3703
    -
    const struct lws_protocol_vhost_options * extra_mimetypes
    Definition: libwebsockets.h:1825
    +
    unsigned char * data
    Definition: libwebsockets.h:3717
    +
    const struct lws_protocol_vhost_options * extra_mimetypes
    Definition: libwebsockets.h:1837
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_finalize_http_header(struct lws *wsi, unsigned char **p, unsigned char *end)
    Definition: libwebsockets.h:626
    LWS_VISIBLE LWS_EXTERN const char * lws_urlencode(char *escaped, const char *string, int len)
    Definition: libwebsockets.h:707
    -
    uv_loop_t * loop
    Definition: libwebsockets.h:3918
    +
    uv_loop_t * loop
    Definition: libwebsockets.h:3932
    Definition: libwebsockets.h:805
    Definition: libwebsockets.h:72
    -
    Definition: libwebsockets.h:3017
    -
    int pos
    Definition: libwebsockets.h:2264
    +
    Definition: libwebsockets.h:3031
    +
    int pos
    Definition: libwebsockets.h:2276
    struct lws_plugin * list
    Definition: libwebsockets.h:1309
    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:1535
    @@ -220,26 +221,26 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
    Definition: libwebsockets.h:1002
    int ka_probes
    Definition: libwebsockets.h:1518
    void onError(Socket *s, socket_error_t err)
    -
    const char * origin
    Definition: libwebsockets.h:1881
    +
    const char * origin
    Definition: libwebsockets.h:1893
    SHORT revents
    Definition: libwebsockets.h:400
    -
    const char * method
    Definition: libwebsockets.h:1891
    +
    const char * method
    Definition: libwebsockets.h:1903
    LWS_VISIBLE LWS_EXTERN const char * lws_spa_get_string(struct lws_spa *spa, int n)
    Definition: libwebsockets.h:1096
    LWS_VISIBLE LWS_EXTERN int lws_callback_on_writable_all_protocol_vhost(const struct lws_vhost *vhost, const struct lws_protocols *protocol)
    Definition: libwebsockets.h:842
    -
    const struct lws_extension * client_exts
    Definition: libwebsockets.h:1889
    -
    unsigned char origin_protocol
    Definition: libwebsockets.h:1841
    +
    const struct lws_extension * client_exts
    Definition: libwebsockets.h:1901
    +
    unsigned char origin_protocol
    Definition: libwebsockets.h:1853
    const char * log_filepath
    Definition: libwebsockets.h:1571
    Definition: libwebsockets.h:682
    -
    unsigned int max_content_size
    Definition: libwebsockets.h:3926
    +
    unsigned int max_content_size
    Definition: libwebsockets.h:3940
    int option_index
    Definition: libwebsockets.h:1024
    LWS_VISIBLE LWS_EXTERN struct lws *LWS_WARN_UNUSED_RESULT lws_get_child(const struct lws *wsi)
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_add_http_header_by_token(struct lws *wsi, enum lws_token_indexes token, const unsigned char *value, int length, unsigned char **p, unsigned char *end)
    Definition: libwebsockets.h:678
    -
    const char * uri_replace_to
    Definition: libwebsockets.h:1901
    -
    struct lws * parent_wsi
    Definition: libwebsockets.h:1894
    +
    const char * uri_replace_to
    Definition: libwebsockets.h:1913
    +
    struct lws * parent_wsi
    Definition: libwebsockets.h:1906
    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:3949
    +
    enum lwsgs_smtp_states estate
    Definition: libwebsockets.h:3963
    LWS_VISIBLE LWS_EXTERN int lws_spa_finalize(struct lws_spa *spa)
    Definition: libwebsockets.h:578
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_get_count_threads(struct lws_context *context)
    @@ -247,29 +248,29 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
    char name[64]
    Definition: libwebsockets.h:1315
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_hdr_fragment_length(struct lws *wsi, enum lws_token_indexes h, int frag_idx)
    LWS_VISIBLE LWS_EXTERN int lws_cgi_kill(struct lws *wsi)
    -
    char email_buf[256]
    Definition: libwebsockets.h:3953
    +
    char email_buf[256]
    Definition: libwebsockets.h:3967
    LWS_VISIBLE LWS_EXTERN int lws_is_ssl(struct lws *wsi)
    Definition: libwebsockets.h:1404
    -
    int(* close)(struct lws *wsi, lws_filefd_type fd)
    Definition: libwebsockets.h:3770
    +
    int(* close)(struct lws *wsi, lws_filefd_type fd)
    Definition: libwebsockets.h:3784
    uv_lib_t lib
    Definition: libwebsockets.h:1311
    x509_crt certificate
    Definition: libwebsockets.h:236
    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:3904
    +
    Definition: libwebsockets.h:3918
    LWS_VISIBLE LWS_EXTERN int lws_is_cgi(struct lws *wsi)
    -
    int ssl_connection
    Definition: libwebsockets.h:1875
    +
    int ssl_connection
    Definition: libwebsockets.h:1887
    Definition: libwebsockets.h:1363
    SSL_CTX * provided_client_ssl_ctx
    Definition: libwebsockets.h:1526
    LWS_VISIBLE LWS_EXTERN int lws_rx_flow_control(struct lws *wsi, int enable)
    -
    Definition: libwebsockets.h:2252
    +
    Definition: libwebsockets.h:2264
    LWS_VISIBLE LWS_EXTERN struct lws_plat_file_ops *LWS_WARN_UNUSED_RESULT lws_get_fops(struct lws_context *context)
    Definition: libwebsockets.h:444
    -
    const struct lws_protocol_vhost_options * cgienv
    Definition: libwebsockets.h:1821
    -
    const char * name
    Definition: libwebsockets.h:1787
    -
    unsigned char mountpoint_len
    Definition: libwebsockets.h:1842
    -
    Definition: libwebsockets.h:2988
    +
    const struct lws_protocol_vhost_options * cgienv
    Definition: libwebsockets.h:1833
    +
    const char * name
    Definition: libwebsockets.h:1799
    +
    unsigned char mountpoint_len
    Definition: libwebsockets.h:1854
    +
    Definition: libwebsockets.h:3002
    Definition: libwebsockets.h:1422
    lws_sockfd_type fd
    Definition: libwebsockets.h:398
    -
    Definition: libwebsockets.h:1798
    +
    Definition: libwebsockets.h:1810
    LWS_VISIBLE LWS_EXTERN int lws_is_final_fragment(struct lws *wsi)
    const struct lws_extension * extensions
    Definition: libwebsockets.h:1477
    Definition: libwebsockets.h:1406
    @@ -284,14 +285,14 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
    const char * start
    Definition: libwebsockets.h:1025
    const char * ssl_cipher_list
    Definition: libwebsockets.h:1497
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_add_http_header_by_name(struct lws *wsi, const unsigned char *name, const unsigned char *value, int length, unsigned char **p, unsigned char *end)
    -
    const char * mountpoint
    Definition: libwebsockets.h:1812
    +
    const char * mountpoint
    Definition: libwebsockets.h:1824
    const char * http_proxy_address
    Definition: libwebsockets.h:1501
    rsa_context key
    Definition: libwebsockets.h:237
    const char * ssl_cert_filepath
    Definition: libwebsockets.h:1485
    const char * ecdh_curve
    Definition: libwebsockets.h:1556
    -
    int cgi_timeout
    Definition: libwebsockets.h:1830
    -
    Definition: libwebsockets.h:1800
    +
    int cgi_timeout
    Definition: libwebsockets.h:1842
    +
    Definition: libwebsockets.h:1812
    Definition: libwebsockets.h:1348
    Definition: libwebsockets.h:412
    Definition: libwebsockets.h:501
    @@ -308,15 +309,15 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
    LWS_VISIBLE LWS_EXTERN int lwsl_timestamp(int level, char *p, int len)
    Definition: libwebsockets.h:918
    Definition: libwebsockets.h:1443
    -
    uv_timer_t timeout_email
    Definition: libwebsockets.h:3948
    +
    uv_timer_t timeout_email
    Definition: libwebsockets.h:3962
    Definition: libwebsockets.h:1413
    short max_http_header_pool
    Definition: libwebsockets.h:1538
    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:2253
    +
    char * p
    Definition: libwebsockets.h:2265
    x509_crt ca
    Definition: libwebsockets.h:235
    size_t per_session_data_size
    Definition: libwebsockets.h:1194
    Definition: libwebsockets.h:485
    -
    lwsgs_smtp_states
    Definition: libwebsockets.h:3902
    +
    lwsgs_smtp_states
    Definition: libwebsockets.h:3916
    Definition: libwebsockets.h:1425
    Definition: libwebsockets.h:758
    Definition: libwebsockets.h:644
    @@ -327,14 +328,14 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
    const char * email
    Definition: libwebsockets.h:1371
    LWS_VISIBLE LWS_EXTERN int lws_get_random(struct lws_context *context, void *buf, int len)
    Definition: libwebsockets.h:472
    -
    uv_connect_t email_connect_req
    Definition: libwebsockets.h:3950
    +
    uv_connect_t email_connect_req
    Definition: libwebsockets.h:3964
    const char * server_string
    Definition: libwebsockets.h:1576
    Definition: libwebsockets.h:1436
    SHORT events
    Definition: libwebsockets.h:399
    Definition: libwebsockets.h:649
    Definition: libwebsockets.h:1420
    const char * vhost_name
    Definition: libwebsockets.h:1558
    -
    Definition: libwebsockets.h:1801
    +
    Definition: libwebsockets.h:1813
    LWS_VISIBLE LWS_EXTERN const struct lws_protocols * lws_get_protocol(struct lws *wsi)
    Definition: libwebsockets.h:1346
    Definition: libwebsockets.h:1368
    @@ -345,12 +346,12 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
    int ka_interval
    Definition: libwebsockets.h:1522
    Definition: libwebsockets.h:1345
    int uid
    Definition: libwebsockets.h:1508
    -
    Definition: libwebsockets.h:2644
    +
    Definition: libwebsockets.h:2656
    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:1187
    LWS_VISIBLE LWS_EXTERN int lws_init_vhost_client_ssl(const struct lws_context_creation_info *info, struct lws_vhost *vhost)
    -
    Definition: libwebsockets.h:3908
    +
    Definition: libwebsockets.h:3922
    unsigned int http_proxy_port
    Definition: libwebsockets.h:1504
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_partial_buffered(struct lws *wsi)
    unsigned int timeout_secs
    Definition: libwebsockets.h:1551
    @@ -358,43 +359,43 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_parse_uri(char *p, const char **prot, const char **ads, int *port, const char **path)
    unsigned int options
    Definition: libwebsockets.h:1510
    LWS_VISIBLE LWS_EXTERN int lws_spa_get_length(struct lws_spa *spa, int n)
    -
    const struct lws_protocol_vhost_options * options
    Definition: libwebsockets.h:1786
    +
    const struct lws_protocol_vhost_options * options
    Definition: libwebsockets.h:1798
    int prev_events
    Definition: libwebsockets.h:447
    int keepalive_timeout
    Definition: libwebsockets.h:1568
    Definition: libwebsockets.h:1352
    Definition: libwebsockets.h:1013
    -
    Definition: libwebsockets.h:2441
    +
    Definition: libwebsockets.h:2453
    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:1565
    -
    const char * host
    Definition: libwebsockets.h:1879
    +
    const char * host
    Definition: libwebsockets.h:1891
    Definition: libwebsockets.h:1022
    Definition: libwebsockets.h:511
    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:3705
    -
    struct lws_http_mount * mount_next
    Definition: libwebsockets.h:1810
    +
    int len
    Definition: libwebsockets.h:3719
    +
    struct lws_http_mount * mount_next
    Definition: libwebsockets.h:1822
    LWS_VISIBLE LWS_EXTERN const char * lws_get_urlarg_by_name(struct lws *wsi, const char *name, char *buf, int len)
    const char * iface
    Definition: libwebsockets.h:1466
    -
    Definition: libwebsockets.h:3764
    +
    Definition: libwebsockets.h:3778
    LWS_VISIBLE LWS_EXTERN void lwsl_hexdump(void *buf, size_t len)
    -
    lws_spa_fileupload_states
    Definition: libwebsockets.h:2639
    +
    lws_spa_fileupload_states
    Definition: libwebsockets.h:2651
    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:469
    Definition: libwebsockets.h:478
    LWS_VISIBLE LWS_EXTERN const char * lws_sql_purify(char *escaped, const char *string, int len)
    -
    uv_tcp_t email_client
    Definition: libwebsockets.h:3951
    +
    uv_tcp_t email_client
    Definition: libwebsockets.h:3965
    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:582
    -
    lws_filefd_type(* open)(struct lws *wsi, const char *filename, unsigned long *filelen, int flags)
    Definition: libwebsockets.h:3765
    -
    lws_write_protocol
    Definition: libwebsockets.h:2980
    +
    lws_filefd_type(* open)(struct lws *wsi, const char *filename, unsigned long *filelen, int flags)
    Definition: libwebsockets.h:3779
    +
    lws_write_protocol
    Definition: libwebsockets.h:2994
    const char * client_offer
    Definition: libwebsockets.h:1099
    -
    int(* read)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount, unsigned char *buf, unsigned long len)
    Definition: libwebsockets.h:3775
    +
    int(* read)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount, unsigned char *buf, unsigned long len)
    Definition: libwebsockets.h:3789
    LWS_VISIBLE LWS_EXTERN void lws_cancel_service(struct lws_context *context)
    -
    Definition: libwebsockets.h:2640
    +
    Definition: libwebsockets.h:2652
    Definition: libwebsockets.h:483
    -
    const char * origin
    Definition: libwebsockets.h:1814
    +
    const char * origin
    Definition: libwebsockets.h:1826
    const char * name
    Definition: libwebsockets.h:1014
    LWS_VISIBLE LWS_EXTERN int lws_serve_http_file(struct lws *wsi, const char *file, const char *content_type, const char *other_headers, int other_headers_len)
    LWS_VISIBLE LWS_EXTERN void lws_email_check(struct lws_email *email)
    @@ -403,7 +404,7 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
    LWS_VISIBLE LWS_EXTERN int lws_hdr_copy(struct lws *wsi, char *dest, int len, enum lws_token_indexes h)
    Definition: libwebsockets.h:659
    const char * name
    Definition: libwebsockets.h:1097
    -
    Definition: libwebsockets.h:3907
    +
    Definition: libwebsockets.h:3921
    short revents
    Definition: libwebsockets.h:415
    lws_extension_callback_function * callback
    Definition: libwebsockets.h:1098
    long ssl_options_set
    Definition: libwebsockets.h:1590
    @@ -411,65 +412,65 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
    LWS_VISIBLE LWS_EXTERN const struct lws_protocols * lws_protocol_get(struct lws *wsi) LWS_WARN_DEPRECATED
    unsigned int mask
    Definition: libwebsockets.h:1356
    LWS_VISIBLE LWS_EXTERN int lws_email_init(struct lws_email *email, uv_loop_t *loop, int max_content)
    -
    lws_mount_protocols
    Definition: libwebsockets.h:1795
    +
    lws_mount_protocols
    Definition: libwebsockets.h:1807
    LWS_EXTERN int lws_extension_callback_pm_deflate(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)
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_add_http_header_content_length(struct lws *wsi, unsigned long content_length, unsigned char **p, unsigned char *end)
    lws_sockfd_type fd
    Definition: libwebsockets.h:413
    unsigned int max_http_header_data2
    Definition: libwebsockets.h:1585
    -
    Definition: libwebsockets.h:1796
    +
    Definition: libwebsockets.h:1808
    LWS_VISIBLE LWS_EXTERN int lws_return_http_status(struct lws *wsi, unsigned int code, const char *html_body)
    LWS_EXTERN LWS_VISIBLE struct lws_vhost * lws_create_vhost(struct lws_context *context, struct lws_context_creation_info *info)
    -
    const struct lws_protocol_vhost_options * interpret
    Definition: libwebsockets.h:1827
    +
    const struct lws_protocol_vhost_options * interpret
    Definition: libwebsockets.h:1839
    LWS_VISIBLE LWS_EXTERN int lws_service(struct lws_context *context, int timeout_ms)
    Definition: libwebsockets.h:1418
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_http_transaction_completed(struct lws *wsi)
    -
    int count_vars
    Definition: libwebsockets.h:2267
    +
    int count_vars
    Definition: libwebsockets.h:2279
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_add_http_header_status(struct lws *wsi, unsigned int code, unsigned char **p, unsigned char *end)
    -
    Definition: libwebsockets.h:2321
    +
    Definition: libwebsockets.h:2333
    LWS_VISIBLE LWS_EXTERN struct lws_context * lws_create_context(struct lws_context_creation_info *info)
    Definition: libwebsockets.h:638
    -
    void * data
    Definition: libwebsockets.h:2265
    -
    char * content
    Definition: libwebsockets.h:3954
    +
    void * data
    Definition: libwebsockets.h:2277
    +
    char * content
    Definition: libwebsockets.h:3968
    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:1480
    -
    lws_process_html_state_cb replace
    Definition: libwebsockets.h:2269
    -
    Definition: libwebsockets.h:3915
    -
    const char * address
    Definition: libwebsockets.h:1871
    -
    unsigned long(* seek_cur)(struct lws *wsi, lws_filefd_type fd, long offset_from_cur_pos)
    Definition: libwebsockets.h:3772
    +
    lws_process_html_state_cb replace
    Definition: libwebsockets.h:2281
    +
    Definition: libwebsockets.h:3929
    +
    const char * address
    Definition: libwebsockets.h:1883
    +
    unsigned long(* seek_cur)(struct lws *wsi, lws_filefd_type fd, long offset_from_cur_pos)
    Definition: libwebsockets.h:3786
    void * user
    Definition: libwebsockets.h:1215
    int events
    Definition: libwebsockets.h:446
    -
    int(* on_get_body)(struct lws_email *email, char *buf, int len)
    Definition: libwebsockets.h:3941
    -
    Definition: libwebsockets.h:1802
    +
    int(* on_get_body)(struct lws_email *email, char *buf, int len)
    Definition: libwebsockets.h:3955
    +
    Definition: libwebsockets.h:1814
    void * user
    Definition: libwebsockets.h:1512
    -
    Definition: libwebsockets.h:3911
    -
    Definition: libwebsockets.h:3003
    -
    char * token
    Definition: libwebsockets.h:2322
    +
    Definition: libwebsockets.h:3925
    +
    Definition: libwebsockets.h:3017
    +
    char * token
    Definition: libwebsockets.h:2334
    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:1298
    void * l
    Definition: libwebsockets.h:1313
    const char * ssl_private_key_filepath
    Definition: libwebsockets.h:1489
    -
    int max_len
    Definition: libwebsockets.h:2255
    +
    int max_len
    Definition: libwebsockets.h:2267
    Definition: libwebsockets.h:640
    -
    const struct lws_protocol_vhost_options * next
    Definition: libwebsockets.h:1785
    +
    const struct lws_protocol_vhost_options * next
    Definition: libwebsockets.h:1797
    Definition: libwebsockets.h:651
    LWS_VISIBLE LWS_EXTERN void lws_rx_flow_allow_all_protocol(const struct lws_context *context, const struct lws_protocols *protocol)
    -
    Definition: libwebsockets.h:2261
    +
    Definition: libwebsockets.h:2273
    LWS_VISIBLE LWS_EXTERN const char *LWS_WARN_UNUSED_RESULT lws_canonical_hostname(struct lws_context *context)
    Definition: libwebsockets.h:850
    const char * ssl_ca_filepath
    Definition: libwebsockets.h:1495
    -
    lws_client_connect_ssl_connection_flags
    Definition: libwebsockets.h:1859
    +
    lws_client_connect_ssl_connection_flags
    Definition: libwebsockets.h:1871
    int gid
    Definition: libwebsockets.h:1506
    -
    struct lws_vhost * vhost
    Definition: libwebsockets.h:1903
    +
    struct lws_vhost * vhost
    Definition: libwebsockets.h:1915
    int lws_callback_function(struct lws *wsi, enum lws_callback_reasons reason, void *user, void *in, size_t len)
    Definition: libwebsockets.h:948
    LWS_VISIBLE LWS_EXTERN void lws_cancel_service_pt(struct lws *wsi)
    Definition: libwebsockets.h:1438
    Definition: libwebsockets.h:519
    -
    Definition: libwebsockets.h:3906
    +
    Definition: libwebsockets.h:3920
    unsigned int api_magic
    Definition: libwebsockets.h:1296
    Definition: libwebsockets.h:1441
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_send_pipe_choked(struct lws *wsi)
    -
    Definition: libwebsockets.h:3909
    -
    int(* lws_spa_fileupload_cb)(void *data, const char *name, const char *filename, char *buf, int len, enum lws_spa_fileupload_states state)
    Definition: libwebsockets.h:2661
    +
    Definition: libwebsockets.h:3923
    +
    int(* lws_spa_fileupload_cb)(void *data, const char *name, const char *filename, char *buf, int len, enum lws_spa_fileupload_states state)
    Definition: libwebsockets.h:2673
    diff --git a/doc/html/md_README.lwsws.html b/doc/html/md_README.lwsws.html index c46ef8a9..86223ae5 100644 --- a/doc/html/md_README.lwsws.html +++ b/doc/html/md_README.lwsws.html @@ -81,7 +81,7 @@ Lwsws Configuration
  • There's also a single substitution, if a string contains "_lws_ddir_", then that is replaced with the LWS install data directory path, eg, "/usr/share" or whatever was set when LWS was built + installed. That lets you refer to installed paths without having to change the config if your install path was different.
  • There is a single file intended for global settings

    -

    /etc/lwsws/conf

    1 # these are the server global settings
    2 # stuff related to vhosts should go in one
    3 # file per vhost in ../conf.d/
    4 
    5 {
    6  "global": {
    7  "uid": "48", # apache user
    8  "gid": "48", # apache user
    9  "count-threads": "1",
    10  "server-string": "myserver v1", # returned in http headers
    11  "init-ssl": "yes"
    12  }
    13 }

    and a config directory intended to take one file per vhost

    +

    /etc/lwsws/conf

    1 # these are the server global settings
    2 # stuff related to vhosts should go in one
    3 # file per vhost in ../conf.d/
    4 
    5 {
    6  "global": {
    7  "uid": "48", # apache user
    8  "gid": "48", # apache user
    9  "count-threads": "1",
    10  "server-string": "myserver v1", # returned in http headers
    11  "ws-pingpong-secs": "200", # confirm idle established ws connections this often
    12  "init-ssl": "yes"
    13  }
    14 }

    and a config directory intended to take one file per vhost

    /etc/lwsws/conf.d/warmcat.com

    1 {
    2  "vhosts": [{
    3  "name": "warmcat.com",
    4  "port": "443",
    5  "interface": "eth0", # optional
    6  "host-ssl-key": "/etc/pki/tls/private/warmcat.com.key", # if given enable ssl
    7  "host-ssl-cert": "/etc/pki/tls/certs/warmcat.com.crt",
    8  "host-ssl-ca": "/etc/pki/tls/certs/warmcat.com.cer",
    9  "mounts": [{ # autoserve
    10  "mountpoint": "/",
    11  "origin": "file:///var/www/warmcat.com",
    12  "default": "index.html"
    13  }]
    14  }]
    15 }

    To get started quickly, an example config reproducing the old test server on port 7681, non-SSL is provided. To set it up

    1 # mkdir -p /etc/lwsws/conf.d /var/log/lwsws
    2 # cp ./lwsws/etc-lwsws-conf-EXAMPLE /etc/lwsws/conf
    3 # cp ./lwsws/etc-lwsws-conf.d-localhost-EXAMPLE /etc/lwsws/conf.d/test-server
    4 # sudo lwsws

    Lwsws Vhosts

    One server can run many vhosts, where SSL is in use SNI is used to match the connection to a vhost and its vhost-specific SSL keys during SSL negotiation.

    diff --git a/doc/html/navtreedata.js b/doc/html/navtreedata.js index 482fae4d..1113c369 100644 --- a/doc/html/navtreedata.js +++ b/doc/html/navtreedata.js @@ -134,8 +134,8 @@ var NAVTREEINDEX = "annotated.html", "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5ac962efd35abf6c402f9fb14aa14f5016", "group__sha.html#ga7b09ab74646266f0b555103b3bb8dfe5", -"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedbac8f5f992c6615324108cdf931da903be", -"structlws__polarssl__context.html#a919c33af37aab170f828d954de1fa270" +"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedba60ac587febc583475c185e1409a0210c", +"structlws__plugin__capability.html#ae38f7cf1246b9ca3af3cbf9d46b7090f" ]; var SYNCONMSG = 'click to disable panel synchronisation'; diff --git a/doc/html/navtreeindex0.js b/doc/html/navtreeindex0.js index 1d194346..04cf1366 100644 --- a/doc/html/navtreeindex0.js +++ b/doc/html/navtreeindex0.js @@ -204,8 +204,8 @@ var NAVTREEINDEX0 = "group__context-and-vhost.html":[9,4], "group__context-and-vhost.html#ga06e77ce2916f8bc9826ef8d9d68e3932":[9,4,8], "group__context-and-vhost.html#ga06e77ce2916f8bc9826ef8d9d68e3932":[11,0,0,0,94], -"group__context-and-vhost.html#ga0c54c667ccd9b8b3dddcd123ca72f87c":[11,0,0,0,66], "group__context-and-vhost.html#ga0c54c667ccd9b8b3dddcd123ca72f87c":[9,4,7], +"group__context-and-vhost.html#ga0c54c667ccd9b8b3dddcd123ca72f87c":[11,0,0,0,66], "group__context-and-vhost.html#ga341064721add2618ae1b29717493a212":[11,0,0,0,158], "group__context-and-vhost.html#ga341064721add2618ae1b29717493a212":[9,4,14], "group__context-and-vhost.html#ga41c2d763f78cc248df3b9f8645dbd2a5":[11,0,0,0,23], @@ -214,16 +214,16 @@ var NAVTREEINDEX0 = "group__context-and-vhost.html#ga7e9d5405547a457d86e0b4f0ae2bb1c4":[9,4,11], "group__context-and-vhost.html#ga8db03e19a372e34ac25cf21af894a02c":[11,0,0,0,150], "group__context-and-vhost.html#ga8db03e19a372e34ac25cf21af894a02c":[9,4,12], -"group__context-and-vhost.html#ga8ee0314028755f1ddfa9428e09b4fddb":[9,4,4], "group__context-and-vhost.html#ga8ee0314028755f1ddfa9428e09b4fddb":[11,0,0,0,63], +"group__context-and-vhost.html#ga8ee0314028755f1ddfa9428e09b4fddb":[9,4,4], "group__context-and-vhost.html#ga94e6cc2223c4eec316b13bcebc3628b6":[9,4,10], "group__context-and-vhost.html#ga94e6cc2223c4eec316b13bcebc3628b6":[11,0,0,0,108], "group__context-and-vhost.html#ga98d88c9080fd89c37114363a6474ea73":[11,0,0,0,157], "group__context-and-vhost.html#ga98d88c9080fd89c37114363a6474ea73":[9,4,13], "group__context-and-vhost.html#gae2134657cdd2ea7a59e13ad314e4c50d":[9,4,9], "group__context-and-vhost.html#gae2134657cdd2ea7a59e13ad314e4c50d":[11,0,0,0,107], -"group__context-and-vhost.html#gaeb12f934bfd178bd2132a9e73fc641da":[11,0,0,0,64], "group__context-and-vhost.html#gaeb12f934bfd178bd2132a9e73fc641da":[9,4,5], +"group__context-and-vhost.html#gaeb12f934bfd178bd2132a9e73fc641da":[11,0,0,0,64], "group__context-and-vhost.html#gaf2fff58562caab7510c41eeac85a8648":[11,0,0,0,65], "group__context-and-vhost.html#gaf2fff58562caab7510c41eeac85a8648":[9,4,6], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a1b2f8bde0f62adc7ebe81b2043f34c0c":[11,0,0,0,23,8], diff --git a/doc/html/navtreeindex1.js b/doc/html/navtreeindex1.js index 524da74a..476f0200 100644 --- a/doc/html/navtreeindex1.js +++ b/doc/html/navtreeindex1.js @@ -189,8 +189,8 @@ var NAVTREEINDEX1 = "group__misc.html#ga8930fe36a3f3eefe4a6a4fd499d8e899":[11,0,0,0,85], "group__misc.html#gaa194584fff9698f3b280658f770ccd0f":[11,0,0,0,153], "group__misc.html#gaa194584fff9698f3b280658f770ccd0f":[9,8,10], -"group__misc.html#gab321ed812f46f6dc7ef9e3ca6f00cf1b":[9,8,9], "group__misc.html#gab321ed812f46f6dc7ef9e3ca6f00cf1b":[11,0,0,0,130], +"group__misc.html#gab321ed812f46f6dc7ef9e3ca6f00cf1b":[9,8,9], "group__misc.html#gac6abfc0b2bd5b2f09281a4432bb2f5f0":[9,8,4], "group__misc.html#gac6abfc0b2bd5b2f09281a4432bb2f5f0":[11,0,0,0,83], "group__misc.html#gacae4d7b6a8d22e4c2d82ff8b12c1e234":[9,8,1], @@ -218,8 +218,8 @@ var NAVTREEINDEX1 = "group__sending-data.html#gafd5fdd285a0e25ba7e3e1051deec1001":[9,13,1], "group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da10047eb05b5e1c298151dc47a5b44826":[9,13,0,2], "group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da10047eb05b5e1c298151dc47a5b44826":[11,0,0,0,32,2], -"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da115440f272a5d55518adfc8099acfee3":[9,13,0,5], "group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da115440f272a5d55518adfc8099acfee3":[11,0,0,0,32,8], +"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da115440f272a5d55518adfc8099acfee3":[9,13,0,5], "group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da220d8e8652d9b97fb66e476e2a60ffce":[9,13,0,6], "group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da220d8e8652d9b97fb66e476e2a60ffce":[11,0,0,0,32,9], "group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da6e556322ff8f205bf311608f7f6e6559":[11,0,0,0,32,4], @@ -234,18 +234,18 @@ var NAVTREEINDEX1 = "group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917":[9,13,0,4], "group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917":[11,0,0,0,32,7], "group__service.html":[9,0], -"group__service.html#ga29c246707997ab7a466aa709aecd2d7b":[11,0,0,0,53], "group__service.html#ga29c246707997ab7a466aa709aecd2d7b":[9,0,1], +"group__service.html#ga29c246707997ab7a466aa709aecd2d7b":[11,0,0,0,53], "group__service.html#ga53e3d0801dfda7960a7249dd559e68a2":[9,0,0], "group__service.html#ga53e3d0801dfda7960a7249dd559e68a2":[11,0,0,0,52], -"group__service.html#ga9b3cc4473fd8848e5bbee7f310712939":[9,0,5], "group__service.html#ga9b3cc4473fd8848e5bbee7f310712939":[11,0,0,0,129], +"group__service.html#ga9b3cc4473fd8848e5bbee7f310712939":[9,0,5], "group__service.html#gad82efa5466d14a9f05aa06416375b28d":[9,0,3], "group__service.html#gad82efa5466d14a9f05aa06416375b28d":[11,0,0,0,127], -"group__service.html#gaebf426eda371ba23642fc11d8e0ace6b":[9,0,4], "group__service.html#gaebf426eda371ba23642fc11d8e0ace6b":[11,0,0,0,128], -"group__service.html#gaf95bd0c663d6516a0c80047d9b1167a8":[9,0,2], +"group__service.html#gaebf426eda371ba23642fc11d8e0ace6b":[9,0,4], "group__service.html#gaf95bd0c663d6516a0c80047d9b1167a8":[11,0,0,0,126], +"group__service.html#gaf95bd0c663d6516a0c80047d9b1167a8":[9,0,2], "group__sha.html":[9,11], "group__sha.html#ga66316e6a5a0644a09d5a10e919dfdd8d":[9,11,0], "group__sha.html#ga66316e6a5a0644a09d5a10e919dfdd8d":[11,0,0,0,44], diff --git a/doc/html/navtreeindex2.js b/doc/html/navtreeindex2.js index 90becfce..25f413bd 100644 --- a/doc/html/navtreeindex2.js +++ b/doc/html/navtreeindex2.js @@ -1,11 +1,11 @@ var NAVTREEINDEX2 = { "group__sha.html#ga7b09ab74646266f0b555103b3bb8dfe5":[9,11,2], -"group__sha.html#gaf39765e4a3b413efb65e4698b2ec3575":[9,11,1], "group__sha.html#gaf39765e4a3b413efb65e4698b2ec3575":[11,0,0,0,45], +"group__sha.html#gaf39765e4a3b413efb65e4698b2ec3575":[9,11,1], "group__smtp.html":[9,14], -"group__smtp.html#ga116be79bf44f9dc2a97f46e051fe4dc0":[9,14,1], "group__smtp.html#ga116be79bf44f9dc2a97f46e051fe4dc0":[11,0,0,0,34], +"group__smtp.html#ga116be79bf44f9dc2a97f46e051fe4dc0":[9,14,1], "group__smtp.html#ga25298a5afc1074e13b2d5711a86432b2":[9,14,3], "group__smtp.html#ga25298a5afc1074e13b2d5711a86432b2":[11,0,0,0,69], "group__smtp.html#ga5e535e346d92a9daf00be33abf79d4eb":[9,14,2], @@ -14,27 +14,27 @@ var NAVTREEINDEX2 = "group__smtp.html#ga77fc9b56a1bb39484844981ec375fc29":[9,14,4], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad":[9,14,1,3], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad":[11,0,0,0,34,3], -"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c":[11,0,0,0,34,0], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c":[9,14,1,0], -"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5":[11,0,0,0,34,8], +"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c":[11,0,0,0,34,0], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5":[9,14,1,8], +"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5":[11,0,0,0,34,8], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69":[11,0,0,0,34,7], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69":[9,14,1,7], -"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14":[9,14,1,6], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14":[11,0,0,0,34,6], +"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14":[9,14,1,6], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab":[9,14,1,4], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab":[11,0,0,0,34,4], -"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83":[9,14,1,5], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83":[11,0,0,0,34,5], -"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d":[11,0,0,0,34,2], +"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83":[9,14,1,5], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d":[9,14,1,2], +"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d":[11,0,0,0,34,2], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933":[9,14,1,1], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933":[11,0,0,0,34,1], "group__sock-adopt.html":[9,15], -"group__sock-adopt.html#gab2d045df0f81afe00891aaed312d552b":[11,0,0,0,43], "group__sock-adopt.html#gab2d045df0f81afe00891aaed312d552b":[9,15,1], -"group__sock-adopt.html#gabe71b7462afb21c767bdc67334f305af":[9,15,0], +"group__sock-adopt.html#gab2d045df0f81afe00891aaed312d552b":[11,0,0,0,43], "group__sock-adopt.html#gabe71b7462afb21c767bdc67334f305af":[11,0,0,0,42], +"group__sock-adopt.html#gabe71b7462afb21c767bdc67334f305af":[9,15,0], "group__timeout.html":[9,3], "group__timeout.html#ga2c0aa4b9c3c55bae7b35cbfac3246c87":[11,0,0,0,35], "group__timeout.html#gaced9f9237f6172fed9f730a2af51345a":[11,0,0,0,134], @@ -48,9 +48,11 @@ var NAVTREEINDEX2 = "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a44feda6cc9507a8613b9263b1acc8ce1":[11,0,0,0,35,8], "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a52236b42ec5ffe65d4cdbadeb6c4fcb0":[11,0,0,0,35,2], "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a5fe48ea6f3f5363cca55d39b78490b45":[11,0,0,0,35,15], +"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a62ae208399be1f872e14843fd15f9e06":[11,0,0,0,35,17], "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a65785467c0b560bead865231fdd405d7":[11,0,0,0,35,0], "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a73f61afae387e16f7ab8a4f299aca8d2":[11,0,0,0,35,14], "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a7d5b3bcc88ccbddfa57674e174a78c2d":[11,0,0,0,35,9], +"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87aaac32d9ca2f7c31f5649ad4059d7b985":[11,0,0,0,35,16], "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87aaf69f440c2e000787efae5ad6f39e74c":[11,0,0,0,35,11], "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87ab20463ee983bcd68cd8a501319da56d3":[11,0,0,0,35,6], "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87ad7ebebb506afd30c48e1e5e3a578cd30":[11,0,0,0,35,1], @@ -61,10 +63,10 @@ var NAVTREEINDEX2 = "group__urlendec.html#gabc2888476e50e001c875c1a8abf455b7":[11,0,0,0,145], "group__urlendec.html#gabc2888476e50e001c875c1a8abf455b7":[9,6,5,1], "group__usercb.html":[9,16], -"group__usercb.html#gad4fcb82e68d60ffacca61a3f783a0a2f":[11,0,0,0,7], "group__usercb.html#gad4fcb82e68d60ffacca61a3f783a0a2f":[9,16,0], -"group__usercb.html#gad62860e19975ba4c4af401c3cdb6abf7":[11,0,0,0,19], +"group__usercb.html#gad4fcb82e68d60ffacca61a3f783a0a2f":[11,0,0,0,7], "group__usercb.html#gad62860e19975ba4c4af401c3cdb6abf7":[9,16,1], +"group__usercb.html#gad62860e19975ba4c4af401c3cdb6abf7":[11,0,0,0,19], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a026502768778b8d79d62dd0fe4375fc6":[11,0,0,0,19,17], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a026502768778b8d79d62dd0fe4375fc6":[9,16,1,17], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a0418587d5083bb4850faa438648496ba":[11,0,0,0,19,49], @@ -103,8 +105,8 @@ var NAVTREEINDEX2 = "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7e12418eec9bce85735e6460176ab604":[9,16,1,3], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7ec8e2e9557ee02a4fc9f7dec7e2babc":[11,0,0,0,19,11], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7ec8e2e9557ee02a4fc9f7dec7e2babc":[9,16,1,11], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a838b18d255c1b94a533287ba302a2eba":[9,16,1,5], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a838b18d255c1b94a533287ba302a2eba":[11,0,0,0,19,5], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a838b18d255c1b94a533287ba302a2eba":[9,16,1,5], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8909732521d379179003d97ab7a05428":[11,0,0,0,19,35], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8909732521d379179003d97ab7a05428":[9,16,1,35], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a89862929a72bff65257ca1d51a0fce4d":[11,0,0,0,19,52], @@ -132,11 +134,11 @@ var NAVTREEINDEX2 = "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7abbbe7a0a67c5866ca9109d46823fc5b1":[9,16,1,8], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7abcf9c720cd3d361a83d1ac65bf052a25":[11,0,0,0,19,39], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac11c336f7052abf3618962902a71ebc8":[11,0,0,0,19,54], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac3fc5bbb55e69f90396526287ee84a51":[11,0,0,0,19,38], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac3fc5bbb55e69f90396526287ee84a51":[9,16,1,38], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac3fc5bbb55e69f90396526287ee84a51":[11,0,0,0,19,38], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac432e9f891c733ba8f968c1bf57c0ddc":[11,0,0,0,19,45], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac4c68e00efcf1ff7bda7ada462aff8ae":[9,16,1,13], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac4c68e00efcf1ff7bda7ada462aff8ae":[11,0,0,0,19,13], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac4c68e00efcf1ff7bda7ada462aff8ae":[9,16,1,13], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac8c0ae966ef1877e0020c0077ff2e4a4":[11,0,0,0,19,41], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aca834dc035b7f7486f9ce40fde54fe9e":[11,0,0,0,19,30], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aca834dc035b7f7486f9ce40fde54fe9e":[9,16,1,30], @@ -154,16 +156,16 @@ var NAVTREEINDEX2 = "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae4986291b7a810fe290851d73bebeb1c":[9,16,1,21], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae5ad65d779b7eab32ab67ceff91a3bac":[11,0,0,0,19,23], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae5ad65d779b7eab32ab67ceff91a3bac":[9,16,1,23], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae8d1de0bb56e03aa58cb4d44b18edd2e":[9,16,1,12], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae8d1de0bb56e03aa58cb4d44b18edd2e":[11,0,0,0,19,12], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae8d1de0bb56e03aa58cb4d44b18edd2e":[9,16,1,12], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae9734e1d7af2abf291665ce9e4a728d3":[11,0,0,0,19,19], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae9734e1d7af2abf291665ce9e4a728d3":[9,16,1,19], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7af6cf80e57aae8ba0a57a5c456b1fe026":[11,0,0,0,19,55], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afc4b2f72cc9e424a750b506ce0cc4310":[11,0,0,0,19,51], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afd8fd77a1cc9405fcb4f26915d7f2d01":[11,0,0,0,19,29], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afd8fd77a1cc9405fcb4f26915d7f2d01":[9,16,1,29], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afedadfb3cde37a8ea4c84ed535f26d09":[9,16,1,16], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afedadfb3cde37a8ea4c84ed535f26d09":[11,0,0,0,19,16], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afedadfb3cde37a8ea4c84ed535f26d09":[9,16,1,16], "group__uv.html":[9,22], "group__uv.html#ga097c89497824d4de225a85a00661fc89":[11,0,0,0,110], "group__uv.html#ga3c75cd6ec3f80fc0a0c8ead4c4e71a15":[11,0,0,0,111], @@ -174,8 +176,8 @@ var NAVTREEINDEX2 = "group__vhost-mounts.html":[9,4,0], "group__vhost-mounts.html#ga31eca18e50cb4357480f2fcad36ff437":[9,4,0,2], "group__vhost-mounts.html#ga31eca18e50cb4357480f2fcad36ff437":[11,0,0,0,29], -"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a13ab58b01ac6e05f595977f1e0f0db69":[9,4,0,2,3], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a13ab58b01ac6e05f595977f1e0f0db69":[11,0,0,0,29,3], +"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a13ab58b01ac6e05f595977f1e0f0db69":[9,4,0,2,3], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a1e9f0842b0e85db50fe648ed4ba9a4b0":[11,0,0,0,29,0], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a1e9f0842b0e85db50fe648ed4ba9a4b0":[9,4,0,2,0], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2":[9,4,0,2,2], @@ -184,8 +186,8 @@ var NAVTREEINDEX2 = "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67":[11,0,0,0,29,5], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da":[9,4,0,2,6], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da":[11,0,0,0,29,6], -"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437aec137a2434851bd856ceebfb697b9970":[11,0,0,0,29,4], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437aec137a2434851bd856ceebfb697b9970":[9,4,0,2,4], +"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437aec137a2434851bd856ceebfb697b9970":[11,0,0,0,29,4], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437afbd10eb4777517ed1f6bfdcf3b9ea1d1":[11,0,0,0,29,1], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437afbd10eb4777517ed1f6bfdcf3b9ea1d1":[9,4,0,2,1], "group__wsclose.html":[9,17], @@ -195,8 +197,8 @@ var NAVTREEINDEX2 = "group__wsclose.html#gae399c571df32ba532c0ca67da9284985":[9,17,0], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a1bb501d212fa4d57053db681b1dfab98":[11,0,0,0,22,3], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a1bb501d212fa4d57053db681b1dfab98":[9,17,0,2], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a2e1f0113494a58e762eed3d22e7080d8":[9,17,0,9], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a2e1f0113494a58e762eed3d22e7080d8":[11,0,0,0,22,10], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a2e1f0113494a58e762eed3d22e7080d8":[9,17,0,9], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a32c38edab10d1379febac0c479ab2e9c":[11,0,0,0,22,14], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a3ffa38d5081b85fb739e02a747ccf2c4":[11,0,0,0,22,1], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a3ffa38d5081b85fb739e02a747ccf2c4":[9,17,0,0], @@ -210,24 +212,24 @@ var NAVTREEINDEX2 = "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a7aef2da0062da606eeb35aaca5cf9050":[9,17,0,7], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a9737a68759e739856b150ff9dfa30218":[11,0,0,0,22,2], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a9737a68759e739856b150ff9dfa30218":[9,17,0,1], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ac6a161822783ee873be1c66f48d14e0e":[9,17,0,10], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ac6a161822783ee873be1c66f48d14e0e":[11,0,0,0,22,11], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ac6a161822783ee873be1c66f48d14e0e":[9,17,0,10], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985acc9a317c70363dd88e823e066b2c73b7":[11,0,0,0,22,0], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad0869604d79e13700ae5d196a431b350":[11,0,0,0,22,12], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad0869604d79e13700ae5d196a431b350":[9,17,0,11], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad0869604d79e13700ae5d196a431b350":[11,0,0,0,22,12], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad09e68295eabdddcba4e332fbea70ae5":[9,17,0,8], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad09e68295eabdddcba4e332fbea70ae5":[11,0,0,0,22,9], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad2b477a91c8445bf34ecd43977f9b390":[9,17,0,12], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad2b477a91c8445bf34ecd43977f9b390":[11,0,0,0,22,13], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985af90cb98d983ad3d4c79df9b6f3d4a4d2":[9,17,0,4], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985af90cb98d983ad3d4c79df9b6f3d4a4d2":[11,0,0,0,22,5], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985af90cb98d983ad3d4c79df9b6f3d4a4d2":[9,17,0,4], "group__wsstatus.html":[9,18], "group__wsstatus.html#ga08e9ee165fca503fd9427d55cfecac37":[9,18,3], "group__wsstatus.html#ga08e9ee165fca503fd9427d55cfecac37":[11,0,0,0,105], "group__wsstatus.html#ga26a140623d202dd2bf2004deb6994baa":[9,18,4], "group__wsstatus.html#ga26a140623d202dd2bf2004deb6994baa":[11,0,0,0,106], -"group__wsstatus.html#ga2bb3655329b4651cd06f79ee3a764421":[9,18,6], "group__wsstatus.html#ga2bb3655329b4651cd06f79ee3a764421":[11,0,0,0,123], +"group__wsstatus.html#ga2bb3655329b4651cd06f79ee3a764421":[9,18,6], "group__wsstatus.html#ga3df5045656dfb6b0e63a38de2dca79d2":[9,18,1], "group__wsstatus.html#ga3df5045656dfb6b0e63a38de2dca79d2":[11,0,0,0,91], "group__wsstatus.html#ga4ad226d5e01024b4046f4a5a37199aa1":[9,18,2], @@ -237,8 +239,8 @@ var NAVTREEINDEX2 = "group__wsstatus.html#gaeca4afc94b1f026034f99cbba37e2f85":[9,18,5], "group__wsstatus.html#gaeca4afc94b1f026034f99cbba37e2f85":[11,0,0,0,114], "hierarchy.html":[10,2], -"index.html":[0], "index.html":[], +"index.html":[0], "libwebsockets_8h.html":[11,0,0,0], "libwebsockets_8h.html#a0b056fdcf949a838ff82209b4a627dd9":[11,0,0,0,159], "libwebsockets_8h.html#a2271141d8be8d72b47ba327130b4905f":[11,0,0,0,24], @@ -247,7 +249,5 @@ var NAVTREEINDEX2 = "libwebsockets_8h.html#a2271141d8be8d72b47ba327130b4905fafdb6cf2797a3ea957c690ad6edff25d6":[11,0,0,0,24,0], "libwebsockets_8h.html#a27bb0b3cdcd0af839c928c253b521ff4":[11,0,0,0,56], "libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedb":[11,0,0,0,20], -"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedba35cf2bed9944faa062d9310197489b2f":[11,0,0,0,20,4], -"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedba60ac587febc583475c185e1409a0210c":[11,0,0,0,20,1], -"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedbaa424646e067c6266bcb4f0190b026d66":[11,0,0,0,20,0] +"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedba35cf2bed9944faa062d9310197489b2f":[11,0,0,0,20,4] }; diff --git a/doc/html/navtreeindex3.js b/doc/html/navtreeindex3.js index f73ea749..de0173de 100644 --- a/doc/html/navtreeindex3.js +++ b/doc/html/navtreeindex3.js @@ -1,5 +1,7 @@ var NAVTREEINDEX3 = { +"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedba60ac587febc583475c185e1409a0210c":[11,0,0,0,20,1], +"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedbaa424646e067c6266bcb4f0190b026d66":[11,0,0,0,20,0], "libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedbac8f5f992c6615324108cdf931da903be":[11,0,0,0,20,2], "libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedbad655f0eecc9e94be37b8ed07348716ef":[11,0,0,0,20,6], "libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedbad9cdc12a796e6c7d912278834d9c7dde":[11,0,0,0,20,3], @@ -147,6 +149,7 @@ var NAVTREEINDEX3 = "structlws__context__creation__info.html#a137a9b9de4f6a7993fed8746d551e616":[9,4,1,26], "structlws__context__creation__info.html#a13ffbb0d010309669611f8c4eda7d7f8":[9,4,1,17], "structlws__context__creation__info.html#a1654d41bea6fb2f619b57e6a264b26a4":[9,4,1,22], +"structlws__context__creation__info.html#a33a1a25a7df3793f59047e20dd580078":[9,4,1,39], "structlws__context__creation__info.html#a381342a398883d6204955ff3c1849ddd":[9,4,1,9], "structlws__context__creation__info.html#a3baab4285c679fbe027c2504621d7410":[9,4,1,10], "structlws__context__creation__info.html#a3e1516fd7fed26bfa77c0246ed26c2eb":[9,4,1,29], @@ -246,8 +249,5 @@ var NAVTREEINDEX3 = "structlws__plugin__capability.html#a523c7cde6f15bba345f56493dcf6b32a":[9,10,2,0], "structlws__plugin__capability.html#a6a4d9d01e770f378ddadc77b37522033":[9,10,2,4], "structlws__plugin__capability.html#a7936f0eb93d79dea76b903d0f8a5f623":[9,10,2,3], -"structlws__plugin__capability.html#abcf51db969522fdda9aaf902e65739d3":[9,10,2,1], -"structlws__plugin__capability.html#ae38f7cf1246b9ca3af3cbf9d46b7090f":[9,10,2,2], -"structlws__polarssl__context.html":[10,0,14], -"structlws__polarssl__context.html#a1872f2ea24878d807ae20ca8513674af":[10,0,14,0] +"structlws__plugin__capability.html#abcf51db969522fdda9aaf902e65739d3":[9,10,2,1] }; diff --git a/doc/html/navtreeindex4.js b/doc/html/navtreeindex4.js index 64a59b9b..dedcebfd 100644 --- a/doc/html/navtreeindex4.js +++ b/doc/html/navtreeindex4.js @@ -1,5 +1,8 @@ var NAVTREEINDEX4 = { +"structlws__plugin__capability.html#ae38f7cf1246b9ca3af3cbf9d46b7090f":[9,10,2,2], +"structlws__polarssl__context.html":[10,0,14], +"structlws__polarssl__context.html#a1872f2ea24878d807ae20ca8513674af":[10,0,14,0], "structlws__polarssl__context.html#a919c33af37aab170f828d954de1fa270":[10,0,14,2], "structlws__polarssl__context.html#ae7e11c9129ff71c7ee71b3b2e320ff27":[10,0,14,1], "structlws__pollargs.html":[10,0,15], @@ -23,12 +26,12 @@ var NAVTREEINDEX4 = "structlws__process__html__state.html#adcafd17704775b4bbeea9561fb340968":[9,6,1,1,0], "structlws__process__html__state.html#af0732884ef891e24fe5fa237ebaa21a3":[9,6,1,1,4], "structlws__process__html__state.html#af21119890fdfebe28fb5c4dabfc1bdf5":[9,6,1,1,1], -"structlws__protocol__vhost__options.html":[9,4,0,0], "structlws__protocol__vhost__options.html":[9,4,2], +"structlws__protocol__vhost__options.html":[9,4,0,0], "structlws__protocol__vhost__options.html#a0640a92513c70ee6b9b295a9ad1658e7":[9,4,0,0,3], "structlws__protocol__vhost__options.html#a0640a92513c70ee6b9b295a9ad1658e7":[9,4,2,3], -"structlws__protocol__vhost__options.html#abc714ddb4171756fc8196e9823a1e21c":[9,4,2,1], "structlws__protocol__vhost__options.html#abc714ddb4171756fc8196e9823a1e21c":[9,4,0,0,1], +"structlws__protocol__vhost__options.html#abc714ddb4171756fc8196e9823a1e21c":[9,4,2,1], "structlws__protocol__vhost__options.html#acf9db77f8eb64cd4e314be9b43d8a8b9":[9,4,2,0], "structlws__protocol__vhost__options.html#acf9db77f8eb64cd4e314be9b43d8a8b9":[9,4,0,0,0], "structlws__protocol__vhost__options.html#afd99fbc90be51ea2465b550c2ec47822":[9,4,2,2], @@ -48,12 +51,12 @@ var NAVTREEINDEX4 = "structlws__session__info.html#afb924864b70f40372920688a5c1c895e":[9,10,0,2,2], "structlws__token__limits.html":[9,6,4,1], "structlws__token__limits.html#a6ec712306cbf8585bce7a56758a3ceff":[9,6,4,1,0], -"structlws__tokens.html":[9,6,6], "structlws__tokens.html":[9,6,4,0], +"structlws__tokens.html":[9,6,6], "structlws__tokens.html#a855b7375d1d58516c0ecd4b60e9a7766":[9,6,6,1], "structlws__tokens.html#a855b7375d1d58516c0ecd4b60e9a7766":[9,6,4,0,1], -"structlws__tokens.html#a9f3635412bc71a5cb78e9862b55f10cd":[9,6,6,0], "structlws__tokens.html#a9f3635412bc71a5cb78e9862b55f10cd":[9,6,4,0,0], +"structlws__tokens.html#a9f3635412bc71a5cb78e9862b55f10cd":[9,6,6,0], "structlwsgw__hash.html":[9,10,0,1], "structlwsgw__hash.html#a29435f5cf78747d4257695b0f141d164":[9,10,0,1,0], "structlwsgw__hash__bin.html":[9,10,0,0], diff --git a/doc/html/structlws__context__creation__info.html b/doc/html/structlws__context__creation__info.html index 9ab13178..502b95e2 100644 --- a/doc/html/structlws__context__creation__info.html +++ b/doc/html/structlws__context__creation__info.html @@ -156,6 +156,8 @@ Data Fields   long ssl_options_clear   +unsigned short ws_ping_pong_interval +  void * _unused [8]   @@ -669,6 +671,19 @@ Data Fields

    VHOST: name of vhost, must match external DNS name used to access the site, like "warmcat.com" as it's used to match Host: header and / or SNI name for SSL.

    +
    + + +
    +
    + + + + +
    unsigned short lws_context_creation_info::ws_ping_pong_interval
    +
    +

    CONTEXT: 0 for none, else interval in seconds between sending PINGs on idle websocket connections. When the PING is sent, the PONG must come within the normal timeout_secs timeout period or the connection will be dropped. Any RX or TX traffic on the connection restarts the interval timer, so a connection which always sends or receives something at intervals less than the interval given here will never send PINGs / expect PONGs. Conversely as soon as the ws connection is established, an idle connection will do the PING / PONG roundtrip as soon as ws_ping_pong_interval seconds has passed without traffic

    +

    The documentation for this struct was generated from the following file: