From ba8fb14e85c8da95265a6dffcc5619926b28ed0e Mon Sep 17 00:00:00 2001 From: Andy Green Date: Thu, 8 Dec 2016 08:14:15 +0800 Subject: [PATCH] token:x-forwarded-for https://github.com/warmcat/libwebsockets/issues/702 --- doc/html/doxygen.css | 4 + doc/html/functions.html | 4 + doc/html/functions_vars.html | 4 + doc/html/group__HTTP-headers-read.html | 14 +- doc/html/group__client.html | 2 +- doc/html/group__context-and-vhost.js | 1 + doc/html/group__form-parsing.html | 6 +- doc/html/group__sending-data.html | 14 +- doc/html/group__smtp.html | 18 +- doc/html/group__vhost-mounts.html | 14 +- doc/html/group__vhost-mounts.js | 1 + doc/html/libwebsockets_8h.html | 14 +- doc/html/libwebsockets_8h.js | 1 + doc/html/libwebsockets_8h_source.html | 217 ++++++++++++----------- doc/html/menudata.js | 136 +++++++------- doc/html/navtreedata.js | 4 +- doc/html/navtreeindex0.js | 34 ++-- doc/html/navtreeindex1.js | 8 +- doc/html/navtreeindex2.js | 56 +++--- doc/html/navtreeindex3.js | 92 +++++----- doc/html/navtreeindex4.js | 29 +-- doc/html/structlws__context__creation__info.html | 17 ++ doc/html/structlws__context__creation__info.js | 1 + doc/html/structlws__http__mount.html | 21 ++- doc/html/structlws__http__mount.js | 1 + lib/lextable-strings.h | 2 + lib/lextable.h | 41 +++-- lib/libwebsockets.h | 1 + 28 files changed, 417 insertions(+), 340 deletions(-) diff --git a/doc/html/doxygen.css b/doc/html/doxygen.css index a2cf15f..ea8de1d 100644 --- a/doc/html/doxygen.css +++ b/doc/html/doxygen.css @@ -4,6 +4,10 @@ body, table, div, p, dl { font: 400 14px/22px Roboto,sans-serif; } +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + /* @group Heading Levels */ h1.groupheader { diff --git a/doc/html/functions.html b/doc/html/functions.html index e9f0570..62b245d 100644 --- a/doc/html/functions.html +++ b/doc/html/functions.html @@ -66,6 +66,7 @@ $(document).ready(function(){initNavTree('functions.html','');});
  • _unused : lws_client_connect_info , lws_context_creation_info +, lws_http_mount
  • @@ -217,6 +218,9 @@ $(document).ready(function(){initNavTree('functions.html','');}); : lws_context_creation_info , lws_plugin_capability +
  • external_baggage_free_on_destroy +: lws_context_creation_info +
  • extra_mimetypes : lws_http_mount
  • diff --git a/doc/html/functions_vars.html b/doc/html/functions_vars.html index d22e573..990fe77 100644 --- a/doc/html/functions_vars.html +++ b/doc/html/functions_vars.html @@ -66,6 +66,7 @@ $(document).ready(function(){initNavTree('functions_vars.html','');});
  • _unused : lws_client_connect_info , lws_context_creation_info +, lws_http_mount
  • @@ -217,6 +218,9 @@ $(document).ready(function(){initNavTree('functions_vars.html','');}); : lws_context_creation_info , lws_plugin_capability +
  • external_baggage_free_on_destroy +: lws_context_creation_info +
  • extra_mimetypes : lws_http_mount
  • diff --git a/doc/html/group__HTTP-headers-read.html b/doc/html/group__HTTP-headers-read.html index 1912c88..b3eec38 100644 --- a/doc/html/group__HTTP-headers-read.html +++ b/doc/html/group__HTTP-headers-read.html @@ -179,20 +179,22 @@ Enumerations WSI_TOKEN_HTTP_X_REAL_IP = 78, WSI_TOKEN_HTTP1_0 = 79,
    -  _WSI_TOKEN_CLIENT_SENT_PROTOCOLS, +  WSI_TOKEN_X_FORWARDED_FOR = 80, +_WSI_TOKEN_CLIENT_SENT_PROTOCOLS, _WSI_TOKEN_CLIENT_PEER_ADDRESS, _WSI_TOKEN_CLIENT_URI, -_WSI_TOKEN_CLIENT_HOST,
    -  _WSI_TOKEN_CLIENT_ORIGIN, +  _WSI_TOKEN_CLIENT_HOST, +_WSI_TOKEN_CLIENT_ORIGIN, _WSI_TOKEN_CLIENT_METHOD, WSI_TOKEN_COUNT, -WSI_TOKEN_NAME_PART,
    -  WSI_TOKEN_SKIPPING, +  WSI_TOKEN_NAME_PART, +WSI_TOKEN_SKIPPING, WSI_TOKEN_SKIPPING_SAW_CR, WSI_PARSING_COMPLETE, -WSI_INIT_TOKEN_MUXURL +
    +  WSI_INIT_TOKEN_MUXURL
    }   diff --git a/doc/html/group__client.html b/doc/html/group__client.html index cec5538..e726aef 100644 --- a/doc/html/group__client.html +++ b/doc/html/group__client.html @@ -119,7 +119,7 @@ LWS_VISIBLE LWS_EXTERN void <

    #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

    -
    1986  {
    1987  LCCSCF_USE_SSL = (1 << 0),
    1988  LCCSCF_ALLOW_SELFSIGNED = (1 << 1),
    1989  LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK = (1 << 2),
    1990  LCCSCF_ALLOW_EXPIRED = (1 << 3)
    1991 };
    +
    2003  {
    2004  LCCSCF_USE_SSL = (1 << 0),
    2005  LCCSCF_ALLOW_SELFSIGNED = (1 << 1),
    2006  LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK = (1 << 2),
    2007  LCCSCF_ALLOW_EXPIRED = (1 << 3)
    2008 };

    Function Documentation

    diff --git a/doc/html/group__context-and-vhost.js b/doc/html/group__context-and-vhost.js index 09804a4..9a942a7 100644 --- a/doc/html/group__context-and-vhost.js +++ b/doc/html/group__context-and-vhost.js @@ -6,6 +6,7 @@ var group__context_and_vhost = [ "count_threads", "structlws__context__creation__info.html#ae52f3237e144e9ddcab5e2cf91d1e419", null ], [ "ecdh_curve", "structlws__context__creation__info.html#afa5d4e7d9f86b58a1c6fac14f0a5f5f9", null ], [ "extensions", "structlws__context__creation__info.html#a4a3d1155fc52f5048b481884f6fb947c", null ], + [ "external_baggage_free_on_destroy", "structlws__context__creation__info.html#aadbc1b141d16c1084ec4c543e7768a72", null ], [ "fd_limit_per_thread", "structlws__context__creation__info.html#a45e63e24c88289e0c8352377ef4d3646", null ], [ "gid", "structlws__context__creation__info.html#a9c9d22437de92c197f3cee52912b2c03", null ], [ "headers", "structlws__context__creation__info.html#a8ca0ec6b8675c13849bbdcdc0d50c9a3", null ], diff --git a/doc/html/group__form-parsing.html b/doc/html/group__form-parsing.html index 0b3dfc3..d613aa1 100644 --- a/doc/html/group__form-parsing.html +++ b/doc/html/group__form-parsing.html @@ -156,9 +156,9 @@ Functions LWS_UFS_OPEN 

    a new file is starting to arrive

    -
    2828  {
    2833  LWS_UFS_OPEN
    2835 };
    Definition: libwebsockets.h:2831
    -
    Definition: libwebsockets.h:2833
    -
    Definition: libwebsockets.h:2829
    +
    2846  {
    2851  LWS_UFS_OPEN
    2853 };
    Definition: libwebsockets.h:2849
    +
    Definition: libwebsockets.h:2851
    +
    Definition: libwebsockets.h:2847
    diff --git a/doc/html/group__sending-data.html b/doc/html/group__sending-data.html index ae2bc06..e3b6fe4 100644 --- a/doc/html/group__sending-data.html +++ b/doc/html/group__sending-data.html @@ -124,13 +124,13 @@ Functions LWS_WRITE_CLIENT_IGNORE_XOR_MASK 

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

    -
    3172  {
    3173  LWS_WRITE_TEXT = 0,
    3177  LWS_WRITE_BINARY = 1,
    3183  LWS_WRITE_HTTP = 3,
    3186  /* LWS_WRITE_CLOSE is handled by lws_close_reason() */
    3187  LWS_WRITE_PING = 5,
    3188  LWS_WRITE_PONG = 6,
    3189 
    3190  /* Same as write_http but we know this write ends the transaction */
    3191  LWS_WRITE_HTTP_FINAL = 7,
    3192 
    3193  /* HTTP2 */
    3194 
    3202  /****** add new things just above ---^ ******/
    3203 
    3204  /* flags */
    3205 
    3206  LWS_WRITE_NO_FIN = 0x40,
    3213 };
    Definition: libwebsockets.h:3183
    -
    Definition: libwebsockets.h:3206
    -
    Definition: libwebsockets.h:3173
    -
    Definition: libwebsockets.h:3177
    -
    Definition: libwebsockets.h:3209
    -
    Definition: libwebsockets.h:3180
    -
    Definition: libwebsockets.h:3195
    +
    3190  {
    3191  LWS_WRITE_TEXT = 0,
    3195  LWS_WRITE_BINARY = 1,
    3201  LWS_WRITE_HTTP = 3,
    3204  /* LWS_WRITE_CLOSE is handled by lws_close_reason() */
    3205  LWS_WRITE_PING = 5,
    3206  LWS_WRITE_PONG = 6,
    3207 
    3208  /* Same as write_http but we know this write ends the transaction */
    3209  LWS_WRITE_HTTP_FINAL = 7,
    3210 
    3211  /* HTTP2 */
    3212 
    3220  /****** add new things just above ---^ ******/
    3221 
    3222  /* flags */
    3223 
    3224  LWS_WRITE_NO_FIN = 0x40,
    3231 };
    Definition: libwebsockets.h:3201
    +
    Definition: libwebsockets.h:3224
    +
    Definition: libwebsockets.h:3191
    +
    Definition: libwebsockets.h:3195
    +
    Definition: libwebsockets.h:3227
    +
    Definition: libwebsockets.h:3198
    +
    Definition: libwebsockets.h:3213
    diff --git a/doc/html/group__smtp.html b/doc/html/group__smtp.html index 6629148..ab58e18 100644 --- a/doc/html/group__smtp.html +++ b/doc/html/group__smtp.html @@ -149,15 +149,15 @@ Functions LGSSMTP_SENT_QUIT 

    sent the session quit

    -
    4127  {
    4128  LGSSMTP_IDLE,
    4133  LGSSMTP_SENT_TO,
    4137 };
    Definition: libwebsockets.h:4130
    -
    Definition: libwebsockets.h:4135
    -
    Definition: libwebsockets.h:4128
    -
    Definition: libwebsockets.h:4129
    -
    Definition: libwebsockets.h:4133
    -
    Definition: libwebsockets.h:4132
    -
    Definition: libwebsockets.h:4136
    -
    Definition: libwebsockets.h:4131
    -
    Definition: libwebsockets.h:4134
    +
    4145  {
    4146  LGSSMTP_IDLE,
    4151  LGSSMTP_SENT_TO,
    4155 };
    Definition: libwebsockets.h:4148
    +
    Definition: libwebsockets.h:4153
    +
    Definition: libwebsockets.h:4146
    +
    Definition: libwebsockets.h:4147
    +
    Definition: libwebsockets.h:4151
    +
    Definition: libwebsockets.h:4150
    +
    Definition: libwebsockets.h:4154
    +
    Definition: libwebsockets.h:4149
    +
    Definition: libwebsockets.h:4152
    diff --git a/doc/html/group__vhost-mounts.html b/doc/html/group__vhost-mounts.html index 90bbfec..05f38f6 100644 --- a/doc/html/group__vhost-mounts.html +++ b/doc/html/group__vhost-mounts.html @@ -123,13 +123,13 @@ Enumerations LWSMPRO_CALLBACK 

    hand by named protocol's callback

    -
    1919  {
    1920  LWSMPRO_HTTP = 0,
    1921  LWSMPRO_HTTPS = 1,
    1922  LWSMPRO_FILE = 2,
    1923  LWSMPRO_CGI = 3,
    1924  LWSMPRO_REDIR_HTTP = 4,
    1925  LWSMPRO_REDIR_HTTPS = 5,
    1926  LWSMPRO_CALLBACK = 6,
    1927 };
    Definition: libwebsockets.h:1923
    -
    Definition: libwebsockets.h:1921
    -
    Definition: libwebsockets.h:1922
    -
    Definition: libwebsockets.h:1924
    -
    Definition: libwebsockets.h:1925
    -
    Definition: libwebsockets.h:1920
    -
    Definition: libwebsockets.h:1926
    +
    1926  {
    1927  LWSMPRO_HTTP = 0,
    1928  LWSMPRO_HTTPS = 1,
    1929  LWSMPRO_FILE = 2,
    1930  LWSMPRO_CGI = 3,
    1931  LWSMPRO_REDIR_HTTP = 4,
    1932  LWSMPRO_REDIR_HTTPS = 5,
    1933  LWSMPRO_CALLBACK = 6,
    1934 };
    Definition: libwebsockets.h:1930
    +
    Definition: libwebsockets.h:1928
    +
    Definition: libwebsockets.h:1929
    +
    Definition: libwebsockets.h:1931
    +
    Definition: libwebsockets.h:1932
    +
    Definition: libwebsockets.h:1927
    +
    Definition: libwebsockets.h:1933
    diff --git a/doc/html/group__vhost-mounts.js b/doc/html/group__vhost-mounts.js index 1a4b064..e963b0e 100644 --- a/doc/html/group__vhost-mounts.js +++ b/doc/html/group__vhost-mounts.js @@ -7,6 +7,7 @@ var group__vhost_mounts = [ "value", "structlws__protocol__vhost__options.html#a0640a92513c70ee6b9b295a9ad1658e7", null ] ] ], [ "lws_http_mount", "structlws__http__mount.html", [ + [ "_unused", "structlws__http__mount.html#a78d58848eed7b544ae83f719abdbe4b6", null ], [ "auth_mask", "structlws__http__mount.html#a614364c770b0bd4db464ad65cddab477", null ], [ "basic_auth_login_file", "structlws__http__mount.html#a2f6c7dbc2d714b7259c67b7744d4ff98", null ], [ "cache_intermediaries", "structlws__http__mount.html#aabec1a326780aafe11b977000983be0c", null ], diff --git a/doc/html/libwebsockets_8h.html b/doc/html/libwebsockets_8h.html index 4f21baa..78fa036 100644 --- a/doc/html/libwebsockets_8h.html +++ b/doc/html/libwebsockets_8h.html @@ -525,20 +525,22 @@ Enumerations WSI_TOKEN_HTTP_X_REAL_IP = 78, WSI_TOKEN_HTTP1_0 = 79,
    -  _WSI_TOKEN_CLIENT_SENT_PROTOCOLS, +  WSI_TOKEN_X_FORWARDED_FOR = 80, +_WSI_TOKEN_CLIENT_SENT_PROTOCOLS, _WSI_TOKEN_CLIENT_PEER_ADDRESS, _WSI_TOKEN_CLIENT_URI, -_WSI_TOKEN_CLIENT_HOST,
    -  _WSI_TOKEN_CLIENT_ORIGIN, +  _WSI_TOKEN_CLIENT_HOST, +_WSI_TOKEN_CLIENT_ORIGIN, _WSI_TOKEN_CLIENT_METHOD, WSI_TOKEN_COUNT, -WSI_TOKEN_NAME_PART,
    -  WSI_TOKEN_SKIPPING, +  WSI_TOKEN_NAME_PART, +WSI_TOKEN_SKIPPING, WSI_TOKEN_SKIPPING_SAW_CR, WSI_PARSING_COMPLETE, -WSI_INIT_TOKEN_MUXURL +
    +  WSI_INIT_TOKEN_MUXURL
    }   diff --git a/doc/html/libwebsockets_8h.js b/doc/html/libwebsockets_8h.js index 5b87465..56ae0ff 100644 --- a/doc/html/libwebsockets_8h.js +++ b/doc/html/libwebsockets_8h.js @@ -316,6 +316,7 @@ var libwebsockets_8h = [ "WSI_TOKEN_PROXY", "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaee14b94fcd4ab788e313e0789bec0cdc", null ], [ "WSI_TOKEN_HTTP_X_REAL_IP", "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea7e80eff7eefa68741f0a776d6d8feeae", null ], [ "WSI_TOKEN_HTTP1_0", "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eafc1e8568187b2de76e2ddd5cc692908e", null ], + [ "WSI_TOKEN_X_FORWARDED_FOR", "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaafce2cb6a31235606d12fb65a32a41c5", null ], [ "_WSI_TOKEN_CLIENT_SENT_PROTOCOLS", "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea157c1db7d8edd3cd3b649e7756a559c8", null ], [ "_WSI_TOKEN_CLIENT_PEER_ADDRESS", "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea5dcd48b2643d8a82a97b7abbc3928ea8", null ], [ "_WSI_TOKEN_CLIENT_URI", "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea21ac48d2a499f6afa44cee92cebd8ae3", null ], diff --git a/doc/html/libwebsockets_8h_source.html b/doc/html/libwebsockets_8h_source.html index b043814..b93cf08 100644 --- a/doc/html/libwebsockets_8h_source.html +++ b/doc/html/libwebsockets_8h_source.html @@ -64,9 +64,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 #if defined(MBED_OPERATORS) || defined(LWS_WITH_ESP8266)
    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 <fcntl.h>
    120 #else
    121 #define _O_RDONLY 0x0000
    122 #define O_RDONLY _O_RDONLY
    123 #endif
    124 
    125 // Visual studio older than 2015 and WIN_CE has only _stricmp
    126 #if (defined(_MSC_VER) && _MSC_VER < 1900) || defined(_WIN32_WCE)
    127 #define strcasecmp _stricmp
    128 #elif !defined(__MINGW32__)
    129 #define strcasecmp stricmp
    130 #endif
    131 #define getdtablesize() 30000
    132 
    133 #define LWS_INLINE __inline
    134 #define LWS_VISIBLE
    135 #define LWS_WARN_UNUSED_RESULT
    136 #define LWS_WARN_DEPRECATED
    137 
    138 #ifdef LWS_DLL
    139 #ifdef LWS_INTERNAL
    140 #define LWS_EXTERN extern __declspec(dllexport)
    141 #else
    142 #define LWS_EXTERN extern __declspec(dllimport)
    143 #endif
    144 #else
    145 #define LWS_EXTERN
    146 #endif
    147 
    148 #define LWS_INVALID_FILE INVALID_HANDLE_VALUE
    149 #define LWS_O_RDONLY _O_RDONLY
    150 
    151 #if !defined(__MINGW32__) && (!defined(_MSC_VER) || _MSC_VER < 1900) /* Visual Studio 2015 already defines this in <stdio.h> */
    152 #define lws_snprintf _snprintf
    153 #endif
    154 
    155 #ifndef __func__
    156 #define __func__ __FUNCTION__
    157 #endif
    158 
    159 #else /* NOT WIN32 */
    160 #include <unistd.h>
    161 
    162 #if defined(__NetBSD__) || defined(__FreeBSD__)
    163 #include <netinet/in.h>
    164 #endif
    165 
    166 #define LWS_INLINE inline
    167 #define LWS_O_RDONLY O_RDONLY
    168 
    169 #if !defined(MBED_OPERATORS) && !defined(LWS_WITH_ESP8266)
    170 #include <poll.h>
    171 #include <netdb.h>
    172 #define LWS_INVALID_FILE -1
    173 #else
    174 #define getdtablesize() (20)
    175 #define LWS_INVALID_FILE NULL
    176 #endif
    177 
    178 #if defined(__GNUC__)
    179 
    180 /* warn_unused_result attribute only supported by GCC 3.4 or later */
    181 #if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
    182 #define LWS_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
    183 #else
    184 #define LWS_WARN_UNUSED_RESULT
    185 #endif
    186 
    187 #define LWS_VISIBLE __attribute__((visibility("default")))
    188 #define LWS_WARN_DEPRECATED __attribute__ ((deprecated))
    189 #else
    190 #define LWS_VISIBLE
    191 #define LWS_WARN_UNUSED_RESULT
    192 #define LWS_WARN_DEPRECATED
    193 #endif
    194 
    195 #if defined(__ANDROID__)
    196 #include <unistd.h>
    197 #define getdtablesize() sysconf(_SC_OPEN_MAX)
    198 #endif
    199 
    200 #endif
    201 
    202 #ifdef LWS_USE_LIBEV
    203 #include <ev.h>
    204 #endif /* LWS_USE_LIBEV */
    205 #ifdef LWS_USE_LIBUV
    206 #include <uv.h>
    207 #ifdef LWS_HAVE_UV_VERSION_H
    208 #include <uv-version.h>
    209 #endif
    210 #endif /* LWS_USE_LIBUV */
    211 
    212 #ifndef LWS_EXTERN
    213 #define LWS_EXTERN extern
    214 #endif
    215 
    216 #ifdef _WIN32
    217 #define random rand
    218 #else
    219 #include <sys/time.h>
    220 #include <unistd.h>
    221 #endif
    222 
    223 #ifdef LWS_OPENSSL_SUPPORT
    224 
    225 #ifdef USE_WOLFSSL
    226 #ifdef USE_OLD_CYASSL
    227 #include <cyassl/openssl/ssl.h>
    228 #include <cyassl/error-ssl.h>
    229 #else
    230 #include <wolfssl/openssl/ssl.h>
    231 #include <wolfssl/error-ssl.h>
    232 #endif /* not USE_OLD_CYASSL */
    233 #else
    234 #if defined(LWS_USE_POLARSSL)
    235 #include <polarssl/ssl.h>
    237  x509_crt ca;
    238  x509_crt certificate;
    239  rsa_context key;
    240 };
    241 typedef struct lws_polarssl_context SSL_CTX;
    242 typedef ssl_context SSL;
    243 #else
    244 #if defined(LWS_USE_MBEDTLS)
    245 #include <mbedtls/ssl.h>
    246 #else
    247 #include <openssl/ssl.h>
    248 #include <openssl/err.h>
    249 #endif /* not USE_MBEDTLS */
    250 #endif /* not USE_POLARSSL */
    251 #endif /* not USE_WOLFSSL */
    252 #endif
    253 
    254 
    255 #define CONTEXT_PORT_NO_LISTEN -1
    256 
    267 
    269 enum lws_log_levels {
    270  LLL_ERR = 1 << 0,
    271  LLL_WARN = 1 << 1,
    272  LLL_NOTICE = 1 << 2,
    273  LLL_INFO = 1 << 3,
    274  LLL_DEBUG = 1 << 4,
    275  LLL_PARSER = 1 << 5,
    276  LLL_HEADER = 1 << 6,
    277  LLL_EXT = 1 << 7,
    278  LLL_CLIENT = 1 << 8,
    279  LLL_LATENCY = 1 << 9,
    280 
    281  LLL_COUNT = 10 /* set to count of valid flags */
    282 };
    283 
    284 LWS_VISIBLE LWS_EXTERN void _lws_log(int filter, const char *format, ...);
    285 LWS_VISIBLE LWS_EXTERN void _lws_logv(int filter, const char *format, va_list vl);
    295 LWS_VISIBLE LWS_EXTERN int
    296 lwsl_timestamp(int level, char *p, int len);
    297 
    298 #define lwsl_err(...) _lws_log(LLL_ERR, __VA_ARGS__)
    299 
    300 #if !defined(LWS_WITH_NO_LOGS)
    301 /* notice, warn and log are always compiled in */
    302 #define lwsl_warn(...) _lws_log(LLL_WARN, __VA_ARGS__)
    303 #define lwsl_notice(...) _lws_log(LLL_NOTICE, __VA_ARGS__)
    304 #endif
    305 /*
    306  * weaker logging can be deselected at configure time using --disable-debug
    307  * that gets rid of the overhead of checking while keeping _warn and _err
    308  * active
    309  */
    310 
    311 #if defined(LWS_WITH_ESP8266)
    312 #undef _DEBUG
    313 #endif
    314 
    315 #ifdef _DEBUG
    316 #if defined(LWS_WITH_NO_LOGS)
    317 /* notice, warn and log are always compiled in */
    318 //#define lwsl_err(...) _lws_log(LLL_ERR, __VA_ARGS__)
    319 #define lwsl_warn(...) _lws_log(LLL_WARN, __VA_ARGS__)
    320 #define lwsl_notice(...) _lws_log(LLL_NOTICE, __VA_ARGS__)
    321 #endif
    322 #define lwsl_info(...) _lws_log(LLL_INFO, __VA_ARGS__)
    323 #define lwsl_debug(...) _lws_log(LLL_DEBUG, __VA_ARGS__)
    324 #define lwsl_parser(...) _lws_log(LLL_PARSER, __VA_ARGS__)
    325 #define lwsl_header(...) _lws_log(LLL_HEADER, __VA_ARGS__)
    326 #define lwsl_ext(...) _lws_log(LLL_EXT, __VA_ARGS__)
    327 #define lwsl_client(...) _lws_log(LLL_CLIENT, __VA_ARGS__)
    328 #define lwsl_latency(...) _lws_log(LLL_LATENCY, __VA_ARGS__)
    329 
    335 LWS_VISIBLE LWS_EXTERN void lwsl_hexdump(void *buf, size_t len);
    336 
    337 #else /* no debug */
    338 #if defined(LWS_WITH_NO_LOGS)
    339 //#define lwsl_err(...) do {} while(0)
    340 #define lwsl_warn(...) do {} while(0)
    341 #define lwsl_notice(...) do {} while(0)
    342 #endif
    343 #define lwsl_info(...) do {} while(0)
    344 #define lwsl_debug(...) do {} while(0)
    345 #define lwsl_parser(...) do {} while(0)
    346 #define lwsl_header(...) do {} while(0)
    347 #define lwsl_ext(...) do {} while(0)
    348 #define lwsl_client(...) do {} while(0)
    349 #define lwsl_latency(...) do {} while(0)
    350 #define lwsl_hexdump(a, b)
    351 
    352 #endif
    353 
    364 LWS_VISIBLE LWS_EXTERN void
    365 lws_set_log_level(int level,
    366  void (*log_emit_function)(int level, const char *line));
    367 
    377 LWS_VISIBLE LWS_EXTERN void
    378 lwsl_emit_syslog(int level, const char *line);
    379 
    381 
    382 
    383 #include <stddef.h>
    384 
    385 #ifndef lws_container_of
    386 #define lws_container_of(P,T,M) ((T *)((char *)(P) - offsetof(T, M)))
    387 #endif
    388 
    389 
    390 struct lws;
    391 #ifndef ARRAY_SIZE
    392 #define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
    393 #endif
    394 
    395 /* api change list for user code to test against */
    396 
    397 #define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_ARG
    398 
    399 /* the struct lws_protocols has the id field present */
    400 #define LWS_FEATURE_PROTOCOLS_HAS_ID_FIELD
    401 
    402 /* you can call lws_get_peer_write_allowance */
    403 #define LWS_FEATURE_PROTOCOLS_HAS_PEER_WRITE_ALLOWANCE
    404 
    405 /* extra parameter introduced in 917f43ab821 */
    406 #define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_LEN
    407 
    408 /* File operations stuff exists */
    409 #define LWS_FEATURE_FOPS
    410 
    411 
    412 #if defined(_WIN32)
    413 typedef SOCKET lws_sockfd_type;
    414 typedef HANDLE lws_filefd_type;
    415 #define lws_sockfd_valid(sfd) (!!sfd)
    416 struct lws_pollfd {
    417  lws_sockfd_type fd;
    418  SHORT events;
    419  SHORT revents;
    420 };
    421 #define LWS_POLLHUP (FD_CLOSE)
    422 #define LWS_POLLIN (FD_READ | FD_ACCEPT)
    423 #define LWS_POLLOUT (FD_WRITE)
    424 #else
    425 
    426 #if defined(MBED_OPERATORS)
    427 /* it's a class lws_conn * */
    428 typedef void * lws_sockfd_type;
    429 typedef void * lws_filefd_type;
    430 #define lws_sockfd_valid(sfd) (!!sfd)
    431 struct pollfd {
    432  lws_sockfd_type fd;
    433  short events;
    434  short revents;
    435 };
    436 #define POLLIN 0x0001
    437 #define POLLPRI 0x0002
    438 #define POLLOUT 0x0004
    439 #define POLLERR 0x0008
    440 #define POLLHUP 0x0010
    441 #define POLLNVAL 0x0020
    442 
    443 struct lws;
    444 
    445 void * mbed3_create_tcp_stream_socket(void);
    446 void mbed3_delete_tcp_stream_socket(void *sockfd);
    447 void mbed3_tcp_stream_bind(void *sock, int port, struct lws *);
    448 void mbed3_tcp_stream_accept(void *sock, struct lws *);
    449 #else
    450 #if defined(LWS_WITH_ESP8266)
    451 
    452 #include <user_interface.h>
    453 #include <espconn.h>
    454 
    455 typedef struct espconn * lws_sockfd_type;
    456 typedef void * lws_filefd_type;
    457 #define lws_sockfd_valid(sfd) (!!sfd)
    458 struct pollfd {
    459  lws_sockfd_type fd;
    460  short events;
    461  short revents;
    462 };
    463 #define POLLIN 0x0001
    464 #define POLLPRI 0x0002
    465 #define POLLOUT 0x0004
    466 #define POLLERR 0x0008
    467 #define POLLHUP 0x0010
    468 #define POLLNVAL 0x0020
    469 
    470 struct lws_vhost;
    471 
    472 lws_sockfd_type esp8266_create_tcp_listen_socket(struct lws_vhost *vh);
    473 void esp8266_tcp_stream_accept(lws_sockfd_type fd, struct lws *wsi);
    474 
    475 #include <os_type.h>
    476 #include <osapi.h>
    477 #include "ets_sys.h"
    478 
    479 int ets_snprintf(char *str, size_t size, const char *format, ...);
    480 #define snprintf ets_snprintf
    481 
    482 typedef os_timer_t uv_timer_t;
    483 typedef void uv_cb_t(uv_timer_t *);
    484 
    485 void os_timer_disarm(void *);
    486 void os_timer_setfn(os_timer_t *, os_timer_func_t *, void *);
    487 
    488 void ets_timer_arm_new(os_timer_t *, int, int, int);
    489 
    490 //void os_timer_arm(os_timer_t *, int, int);
    491 
    492 #define UV_VERSION_MAJOR 1
    493 
    494 #define lws_uv_getloop(a, b) (NULL)
    495 
    496 static inline void uv_timer_init(void *l, uv_timer_t *t)
    497 {
    498  (void)l;
    499  memset(t, 0, sizeof(*t));
    500  os_timer_disarm(t);
    501 }
    502 
    503 static inline void uv_timer_start(uv_timer_t *t, uv_cb_t *cb, int first, int rep)
    504 {
    505  os_timer_setfn(t, (os_timer_func_t *)cb, t);
    506  /* ms, repeat */
    507  os_timer_arm(t, first, !!rep);
    508 }
    509 
    510 static inline void uv_timer_stop(uv_timer_t *t)
    511 {
    512  os_timer_disarm(t);
    513 }
    514 
    515 #else
    516 typedef int lws_sockfd_type;
    517 typedef int lws_filefd_type;
    518 #define lws_sockfd_valid(sfd) (sfd >= 0)
    519 #endif
    520 #endif
    521 
    522 #define lws_pollfd pollfd
    523 #define LWS_POLLHUP (POLLHUP|POLLERR)
    524 #define LWS_POLLIN (POLLIN)
    525 #define LWS_POLLOUT (POLLOUT)
    526 #endif
    527 
    530 struct lws_pollargs {
    531  lws_sockfd_type fd;
    532  int events;
    534 };
    535 
    536 struct lws_tokens;
    537 struct lws_token_limits;
    538 
    546 
    548 /*
    549  * NOTE: These public enums are part of the abi. If you want to add one,
    550  * add it at where specified so existing users are unaffected.
    551  */
    554  LWS_CLOSE_STATUS_NOSTATUS = 0,
    616  /****** add new things just above ---^ ******/
    617 
    618  LWS_CLOSE_STATUS_NOSTATUS_CONTEXT_DESTROY = 9999,
    619 };
    620 
    633 LWS_VISIBLE LWS_EXTERN void
    634 lws_close_reason(struct lws *wsi, enum lws_close_status status,
    635  unsigned char *buf, size_t len);
    636 
    638 
    639 struct lws;
    640 struct lws_context;
    641 /* needed even with extensions disabled for create context */
    642 struct lws_extension;
    643 
    655 
    657 
    658 /*
    659  * NOTE: These public enums are part of the abi. If you want to add one,
    660  * add it at where specified so existing users are unaffected.
    661  */
    905  /* external poll() management support */
    968  LWS_CALLBACK_WS_EXT_DEFAULTS = 39,
    971  LWS_CALLBACK_CGI = 40,
    973  LWS_CALLBACK_CGI_TERMINATED = 41,
    975  LWS_CALLBACK_CGI_STDIN_DATA = 42,
    977  LWS_CALLBACK_CGI_STDIN_COMPLETED = 43,
    979  LWS_CALLBACK_ESTABLISHED_CLIENT_HTTP = 44,
    981  LWS_CALLBACK_CLOSED_CLIENT_HTTP = 45,
    983  LWS_CALLBACK_RECEIVE_CLIENT_HTTP = 46,
    985  LWS_CALLBACK_COMPLETED_CLIENT_HTTP = 47,
    987  LWS_CALLBACK_RECEIVE_CLIENT_HTTP_READ = 48,
    989  LWS_CALLBACK_HTTP_BIND_PROTOCOL = 49,
    991  LWS_CALLBACK_HTTP_DROP_PROTOCOL = 50,
    993  LWS_CALLBACK_CHECK_ACCESS_RIGHTS = 51,
    995  LWS_CALLBACK_PROCESS_HTML = 52,
    997  LWS_CALLBACK_ADD_HEADERS = 53,
    999  LWS_CALLBACK_SESSION_INFO = 54,
    1002  LWS_CALLBACK_GS_EVENT = 55,
    1019  /****** add new things just above ---^ ******/
    1020 
    1023 };
    1024 
    1025 
    1026 
    1042 typedef int
    1043 lws_callback_function(struct lws *wsi, enum lws_callback_reasons reason,
    1044  void *user, void *in, size_t len);
    1046 
    1056 
    1058 /*
    1059  * NOTE: These public enums are part of the abi. If you want to add one,
    1060  * add it at where specified so existing users are unaffected.
    1061  */
    1062 enum lws_extension_callback_reasons {
    1063  LWS_EXT_CB_SERVER_CONTEXT_CONSTRUCT = 0,
    1064  LWS_EXT_CB_CLIENT_CONTEXT_CONSTRUCT = 1,
    1065  LWS_EXT_CB_SERVER_CONTEXT_DESTRUCT = 2,
    1066  LWS_EXT_CB_CLIENT_CONTEXT_DESTRUCT = 3,
    1067  LWS_EXT_CB_CONSTRUCT = 4,
    1068  LWS_EXT_CB_CLIENT_CONSTRUCT = 5,
    1069  LWS_EXT_CB_CHECK_OK_TO_REALLY_CLOSE = 6,
    1070  LWS_EXT_CB_CHECK_OK_TO_PROPOSE_EXTENSION = 7,
    1071  LWS_EXT_CB_DESTROY = 8,
    1072  LWS_EXT_CB_DESTROY_ANY_WSI_CLOSING = 9,
    1073  LWS_EXT_CB_ANY_WSI_ESTABLISHED = 10,
    1074  LWS_EXT_CB_PACKET_RX_PREPARSE = 11,
    1075  LWS_EXT_CB_PACKET_TX_PRESEND = 12,
    1076  LWS_EXT_CB_PACKET_TX_DO_SEND = 13,
    1077  LWS_EXT_CB_HANDSHAKE_REPLY_TX = 14,
    1078  LWS_EXT_CB_FLUSH_PENDING_TX = 15,
    1079  LWS_EXT_CB_EXTENDED_PAYLOAD_RX = 16,
    1080  LWS_EXT_CB_CAN_PROXY_CLIENT_CONNECTION = 17,
    1081  LWS_EXT_CB_1HZ = 18,
    1082  LWS_EXT_CB_REQUEST_ON_WRITEABLE = 19,
    1083  LWS_EXT_CB_IS_WRITEABLE = 20,
    1084  LWS_EXT_CB_PAYLOAD_TX = 21,
    1085  LWS_EXT_CB_PAYLOAD_RX = 22,
    1086  LWS_EXT_CB_OPTION_DEFAULT = 23,
    1087  LWS_EXT_CB_OPTION_SET = 24,
    1088  LWS_EXT_CB_OPTION_CONFIRM = 25,
    1089  LWS_EXT_CB_NAMED_OPTION_SET = 26,
    1090 
    1091  /****** add new things just above ---^ ******/
    1092 };
    1093 
    1100  /* Add new things just above here ---^
    1101  * This is part of the ABI, don't needlessly break compatibility */
    1102 };
    1103 
    1109  const char *name;
    1112  /* Add new things just above here ---^
    1113  * This is part of the ABI, don't needlessly break compatibility */
    1114 };
    1115 
    1118  const char *option_name;
    1120  const char *start;
    1121  int len;
    1122 };
    1123 
    1184 typedef int
    1185 lws_extension_callback_function(struct lws_context *context,
    1186  const struct lws_extension *ext, struct lws *wsi,
    1187  enum lws_extension_callback_reasons reason,
    1188  void *user, void *in, size_t len);
    1189 
    1192  const char *name;
    1194  const char *client_offer;
    1196  /* Add new things just above here ---^
    1197  * This is part of the ABI, don't needlessly break compatibility */
    1198 };
    1199 
    1208 LWS_VISIBLE LWS_EXTERN int
    1209 lws_set_extension_option(struct lws *wsi, const char *ext_name,
    1210  const char *opt_name, const char *opt_val);
    1211 
    1212 #ifndef LWS_NO_EXTENSIONS
    1213 /* lws_get_internal_extensions() - DEPRECATED
    1214  *
    1215  * \Deprecated There is no longer a set internal extensions table. The table is provided
    1216  * by user code along with application-specific settings. See the test
    1217  * client and server for how to do.
    1218  */
    1219 static LWS_INLINE LWS_WARN_DEPRECATED const struct lws_extension *
    1220 lws_get_internal_extensions(void) { return NULL; }
    1221 
    1232 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    1233 lws_ext_parse_options(const struct lws_extension *ext, struct lws *wsi,
    1234  void *ext_user, const struct lws_ext_options *opts,
    1235  const char *o, int len);
    1236 #endif
    1237 
    1250 LWS_EXTERN
    1252  struct lws_context *context, const struct lws_extension *ext,
    1253  struct lws *wsi, enum lws_extension_callback_reasons reason,
    1254  void *user, void *in, size_t len);
    1255 
    1256 /*
    1257  * The internal exts are part of the public abi
    1258  * If we add more extensions, publish the callback here ------v
    1259  */
    1261 
    1277 
    1282  const char *name;
    1303  unsigned int id;
    1310  void *user;
    1313  /* Add new things just above here ---^
    1314  * This is part of the ABI, don't needlessly break compatibility */
    1315 };
    1316 
    1317 struct lws_vhost;
    1318 
    1327 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
    1328 lws_vhost_name_to_protocol(struct lws_vhost *vh, const char *name);
    1329 
    1339 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
    1340 lws_get_protocol(struct lws *wsi);
    1341 
    1343 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
    1344 lws_protocol_get(struct lws *wsi) LWS_WARN_DEPRECATED;
    1345 
    1356 LWS_VISIBLE LWS_EXTERN void *
    1357 lws_protocol_vh_priv_zalloc(struct lws_vhost *vhost, const struct lws_protocols *prot,
    1358  int size);
    1359 
    1369 LWS_VISIBLE LWS_EXTERN void *
    1370 lws_protocol_vh_priv_get(struct lws_vhost *vhost, const struct lws_protocols *prot);
    1371 
    1380 LWS_VISIBLE LWS_EXTERN int
    1381 lws_finalize_startup(struct lws_context *context);
    1382 
    1383 #ifdef LWS_WITH_PLUGINS
    1384 
    1385 /* PLUGINS implies LIBUV */
    1386 
    1387 #define LWS_PLUGIN_API_MAGIC 180
    1388 
    1391  unsigned int api_magic;
    1392  const struct lws_protocols *protocols;
    1394  const struct lws_extension *extensions;
    1396 };
    1397 
    1398 typedef int (*lws_plugin_init_func)(struct lws_context *,
    1399  struct lws_plugin_capability *);
    1400 typedef int (*lws_plugin_destroy_func)(struct lws_context *);
    1401 
    1403 struct lws_plugin {
    1404  struct lws_plugin *list;
    1405 #if (UV_VERSION_MAJOR > 0)
    1406  uv_lib_t lib;
    1407 #else
    1408  void *l;
    1409 #endif
    1410  char name[64];
    1412 };
    1413 
    1414 #endif
    1415 
    1417 
    1418 
    1427 
    1429 #define LWSGS_EMAIL_CONTENT_SIZE 16384
    1430 
    1432 /* SHA-1 binary and hexified versions */
    1434 typedef struct { unsigned char bin[20]; } lwsgw_hash_bin;
    1436 typedef struct { char id[41]; } lwsgw_hash;
    1437 
    1444 };
    1445 
    1448  char username[32];
    1449  char email[100];
    1450  char ip[72];
    1451  unsigned int mask;
    1453  char session[42];
    1454 };
    1455 
    1460 };
    1461 
    1464  enum lws_gs_event event;
    1465  const char *username;
    1466  const char *email;
    1467 };
    1468 
    1470 
    1471 
    1485 
    1487 /*
    1488  * NOTE: These public enums are part of the abi. If you want to add one,
    1489  * add it at where specified so existing users are unaffected.
    1490  */
    1491 
    1495  (1 << 12),
    1502  (1 << 12),
    1518  (1 << 12),
    1523  (1 << 12),
    1547  /****** add new things just above ---^ ******/
    1548 };
    1549 
    1550 #define lws_check_opt(c, f) (((c) & (f)) == (f))
    1551 
    1562  int port;
    1567  const char *iface;
    1574  const struct lws_protocols *protocols;
    1578  const struct lws_extension *extensions;
    1586  const char *ssl_cert_filepath;
    1596  const char *ssl_ca_filepath;
    1598  const char *ssl_cipher_list;
    1602  const char *http_proxy_address;
    1605  unsigned int http_proxy_port;
    1607  int gid;
    1609  int uid;
    1611  unsigned int options;
    1613  void *user;
    1616  int ka_time;
    1626 #ifdef LWS_OPENSSL_SUPPORT
    1632 #else /* maintain structure layout either way */
    1634 #endif
    1635 
    1646  unsigned int count_threads;
    1648  unsigned int fd_limit_per_thread;
    1652  unsigned int timeout_secs;
    1657  const char *ecdh_curve;
    1659  const char *vhost_name;
    1663  const char * const *plugin_dirs;
    1672  const char *log_filepath;
    1675  const struct lws_http_mount *mounts;
    1677  const char *server_string;
    1680  unsigned int pt_serv_buf_size;
    1695  unsigned short ws_ping_pong_interval;
    1719  /* Add new things just above here ---^
    1720  * This is part of the ABI, don't needlessly break compatibility
    1721  *
    1722  * The below is to ensure later library versions with new
    1723  * members added above will see 0 (default) even if the app
    1724  * was not built against the newer headers.
    1725  */
    1726 
    1727  void *_unused[8];
    1728 };
    1729 
    1764 LWS_VISIBLE LWS_EXTERN struct lws_context *
    1766 
    1775 LWS_VISIBLE LWS_EXTERN void
    1776 lws_context_destroy(struct lws_context *context);
    1777 
    1795 LWS_VISIBLE LWS_EXTERN int
    1796 lws_set_proxy(struct lws_vhost *vhost, const char *proxy);
    1797 
    1798 
    1799 struct lws_vhost;
    1800 
    1810 LWS_EXTERN LWS_VISIBLE struct lws_vhost *
    1811 lws_create_vhost(struct lws_context *context,
    1812  struct lws_context_creation_info *info);
    1813 
    1828 LWS_VISIBLE LWS_EXTERN int
    1829 lwsws_get_config_globals(struct lws_context_creation_info *info, const char *d,
    1830  char **config_strings, int *len);
    1831 
    1847 LWS_VISIBLE LWS_EXTERN int
    1848 lwsws_get_config_vhosts(struct lws_context *context,
    1849  struct lws_context_creation_info *info, const char *d,
    1850  char **config_strings, int *len);
    1851 
    1853 LWS_VISIBLE LWS_EXTERN struct lws_vhost *
    1854 lws_vhost_get(struct lws *wsi) LWS_WARN_DEPRECATED;
    1855 
    1861 LWS_VISIBLE LWS_EXTERN struct lws_vhost *
    1862 lws_get_vhost(struct lws *wsi);
    1863 
    1871 LWS_VISIBLE LWS_EXTERN int
    1872 lws_json_dump_vhost(const struct lws_vhost *vh, char *buf, int len);
    1873 
    1881 LWS_VISIBLE LWS_EXTERN int
    1882 lws_json_dump_context(const struct lws_context *context, char *buf, int len);
    1883 
    1893 LWS_VISIBLE LWS_EXTERN void *
    1894 lws_context_user(struct lws_context *context);
    1895 
    1901 
    1911  const char *name;
    1912  const char *value;
    1913 };
    1914 
    1927 };
    1928 
    1936  const char *mountpoint;
    1938  const char *origin;
    1940  const char *def;
    1942  const char *protocol;
    1961  unsigned int auth_mask;
    1964  unsigned int cache_reusable:1;
    1965  unsigned int cache_revalidate:1;
    1966  unsigned int cache_intermediaries:1;
    1968  unsigned char origin_protocol;
    1969  unsigned char mountpoint_len;
    1970 };
    1973 
    1979 
    1987  LCCSCF_USE_SSL = (1 << 0),
    1988  LCCSCF_ALLOW_SELFSIGNED = (1 << 1),
    1989  LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK = (1 << 2),
    1990  LCCSCF_ALLOW_EXPIRED = (1 << 3)
    1991 };
    1992 
    1997  struct lws_context *context;
    1999  const char *address;
    2001  int port;
    2005  const char *path;
    2007  const char *host;
    2009  const char *origin;
    2011  const char *protocol;
    2015  void *userdata;
    2019  const char *method;
    2022  struct lws *parent_wsi;
    2026  const char *uri_replace_from;
    2029  const char *uri_replace_to;
    2031  struct lws_vhost *vhost;
    2033  struct lws **pwsi;
    2045  /* Add new things just above here ---^
    2046  * This is part of the ABI, don't needlessly break compatibility
    2047  *
    2048  * The below is to ensure later library versions with new
    2049  * members added above will see 0 (default) even if the app
    2050  * was not built against the newer headers.
    2051  */
    2052 
    2053  void *_unused[4];
    2054 };
    2055 
    2063 LWS_VISIBLE LWS_EXTERN struct lws *
    2065 
    2086 /* deprecated, use lws_client_connect_via_info() */
    2087 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    2088 lws_client_connect(struct lws_context *clients, const char *address,
    2089  int port, int ssl_connection, const char *path,
    2090  const char *host, const char *origin, const char *protocol,
    2091  int ietf_version_or_minus_one) LWS_WARN_DEPRECATED;
    2092 /* deprecated, use lws_client_connect_via_info() */
    2113 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    2114 lws_client_connect_extended(struct lws_context *clients, const char *address,
    2115  int port, int ssl_connection, const char *path,
    2116  const char *host, const char *origin,
    2117  const char *protocol, int ietf_version_or_minus_one,
    2118  void *userdata) LWS_WARN_DEPRECATED;
    2119 
    2145 LWS_VISIBLE LWS_EXTERN int
    2147  struct lws_vhost *vhost);
    2148 
    2149 LWS_VISIBLE LWS_EXTERN int
    2150 lws_http_client_read(struct lws *wsi, char **buf, int *len);
    2151 
    2159 LWS_VISIBLE LWS_EXTERN unsigned int
    2160 lws_http_client_http_response(struct lws *wsi);
    2161 
    2162 LWS_VISIBLE LWS_EXTERN void
    2163 lws_client_http_body_pending(struct lws *wsi, int something_left_to_send);
    2164 
    2185 
    2194 
    2227 LWS_VISIBLE LWS_EXTERN int
    2228 lws_service(struct lws_context *context, int timeout_ms);
    2229 
    2241 LWS_VISIBLE LWS_EXTERN int
    2242 lws_service_tsi(struct lws_context *context, int timeout_ms, int tsi);
    2243 
    2259 LWS_VISIBLE LWS_EXTERN void
    2260 lws_cancel_service_pt(struct lws *wsi);
    2261 
    2273 LWS_VISIBLE LWS_EXTERN void
    2274 lws_cancel_service(struct lws_context *context);
    2275 
    2302 LWS_VISIBLE LWS_EXTERN int
    2303 lws_service_fd(struct lws_context *context, struct lws_pollfd *pollfd);
    2304 
    2314 LWS_VISIBLE LWS_EXTERN int
    2315 lws_service_fd_tsi(struct lws_context *context, struct lws_pollfd *pollfd,
    2316  int tsi);
    2317 
    2335 LWS_VISIBLE LWS_EXTERN int
    2336 lws_service_adjust_timeout(struct lws_context *context, int timeout_ms, int tsi);
    2337 
    2338 /* Backwards compatibility */
    2339 #define lws_plat_service_tsi lws_service_tsi
    2340 
    2342 
    2348 
    2355 
    2367 LWS_VISIBLE LWS_EXTERN const char *
    2368 lws_get_mimetype(const char *file, const struct lws_http_mount *m);
    2369 
    2388 LWS_VISIBLE LWS_EXTERN int
    2389 lws_serve_http_file(struct lws *wsi, const char *file, const char *content_type,
    2390  const char *other_headers, int other_headers_len);
    2391 LWS_VISIBLE LWS_EXTERN int
    2392 lws_serve_http_file_fragment(struct lws *wsi);
    2394 
    2405 
    2406 enum http_status {
    2407  HTTP_STATUS_OK = 200,
    2408  HTTP_STATUS_NO_CONTENT = 204,
    2409 
    2410  HTTP_STATUS_MOVED_PERMANENTLY = 301,
    2411  HTTP_STATUS_FOUND = 302,
    2412  HTTP_STATUS_SEE_OTHER = 303,
    2413 
    2414  HTTP_STATUS_BAD_REQUEST = 400,
    2415  HTTP_STATUS_UNAUTHORIZED,
    2416  HTTP_STATUS_PAYMENT_REQUIRED,
    2417  HTTP_STATUS_FORBIDDEN,
    2418  HTTP_STATUS_NOT_FOUND,
    2419  HTTP_STATUS_METHOD_NOT_ALLOWED,
    2420  HTTP_STATUS_NOT_ACCEPTABLE,
    2421  HTTP_STATUS_PROXY_AUTH_REQUIRED,
    2422  HTTP_STATUS_REQUEST_TIMEOUT,
    2423  HTTP_STATUS_CONFLICT,
    2424  HTTP_STATUS_GONE,
    2425  HTTP_STATUS_LENGTH_REQUIRED,
    2426  HTTP_STATUS_PRECONDITION_FAILED,
    2427  HTTP_STATUS_REQ_ENTITY_TOO_LARGE,
    2428  HTTP_STATUS_REQ_URI_TOO_LONG,
    2429  HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE,
    2430  HTTP_STATUS_REQ_RANGE_NOT_SATISFIABLE,
    2431  HTTP_STATUS_EXPECTATION_FAILED,
    2432 
    2433  HTTP_STATUS_INTERNAL_SERVER_ERROR = 500,
    2434  HTTP_STATUS_NOT_IMPLEMENTED,
    2435  HTTP_STATUS_BAD_GATEWAY,
    2436  HTTP_STATUS_SERVICE_UNAVAILABLE,
    2437  HTTP_STATUS_GATEWAY_TIMEOUT,
    2438  HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED,
    2439 };
    2440 
    2442  char *p;
    2443  int len;
    2444  int max_len;
    2445  int final;
    2446 };
    2447 
    2448 typedef const char *(*lws_process_html_state_cb)(void *data, int index);
    2449 
    2451  char *start;
    2452  char swallow[16];
    2453  int pos;
    2454  void *data;
    2455  const char * const *vars;
    2458  lws_process_html_state_cb replace;
    2459 };
    2460 
    2465 LWS_VISIBLE LWS_EXTERN int
    2467  struct lws_process_html_state *s);
    2469 
    2502 
    2510 struct lws_tokens {
    2511  char *token;
    2513 };
    2514 
    2515 /* enum lws_token_indexes
    2516  * these have to be kept in sync with lextable.h / minilex.c
    2517  *
    2518  * NOTE: These public enums are part of the abi. If you want to add one,
    2519  * add it at where specified so existing users are unaffected.
    2520  */
    2521 enum lws_token_indexes {
    2522  WSI_TOKEN_GET_URI = 0,
    2523  WSI_TOKEN_POST_URI = 1,
    2524  WSI_TOKEN_OPTIONS_URI = 2,
    2525  WSI_TOKEN_HOST = 3,
    2526  WSI_TOKEN_CONNECTION = 4,
    2527  WSI_TOKEN_UPGRADE = 5,
    2528  WSI_TOKEN_ORIGIN = 6,
    2529  WSI_TOKEN_DRAFT = 7,
    2530  WSI_TOKEN_CHALLENGE = 8,
    2531  WSI_TOKEN_EXTENSIONS = 9,
    2532  WSI_TOKEN_KEY1 = 10,
    2533  WSI_TOKEN_KEY2 = 11,
    2534  WSI_TOKEN_PROTOCOL = 12,
    2535  WSI_TOKEN_ACCEPT = 13,
    2536  WSI_TOKEN_NONCE = 14,
    2537  WSI_TOKEN_HTTP = 15,
    2538  WSI_TOKEN_HTTP2_SETTINGS = 16,
    2539  WSI_TOKEN_HTTP_ACCEPT = 17,
    2540  WSI_TOKEN_HTTP_AC_REQUEST_HEADERS = 18,
    2541  WSI_TOKEN_HTTP_IF_MODIFIED_SINCE = 19,
    2542  WSI_TOKEN_HTTP_IF_NONE_MATCH = 20,
    2543  WSI_TOKEN_HTTP_ACCEPT_ENCODING = 21,
    2544  WSI_TOKEN_HTTP_ACCEPT_LANGUAGE = 22,
    2545  WSI_TOKEN_HTTP_PRAGMA = 23,
    2546  WSI_TOKEN_HTTP_CACHE_CONTROL = 24,
    2547  WSI_TOKEN_HTTP_AUTHORIZATION = 25,
    2548  WSI_TOKEN_HTTP_COOKIE = 26,
    2549  WSI_TOKEN_HTTP_CONTENT_LENGTH = 27,
    2550  WSI_TOKEN_HTTP_CONTENT_TYPE = 28,
    2551  WSI_TOKEN_HTTP_DATE = 29,
    2552  WSI_TOKEN_HTTP_RANGE = 30,
    2553  WSI_TOKEN_HTTP_REFERER = 31,
    2554  WSI_TOKEN_KEY = 32,
    2555  WSI_TOKEN_VERSION = 33,
    2556  WSI_TOKEN_SWORIGIN = 34,
    2557 
    2558  WSI_TOKEN_HTTP_COLON_AUTHORITY = 35,
    2559  WSI_TOKEN_HTTP_COLON_METHOD = 36,
    2560  WSI_TOKEN_HTTP_COLON_PATH = 37,
    2561  WSI_TOKEN_HTTP_COLON_SCHEME = 38,
    2562  WSI_TOKEN_HTTP_COLON_STATUS = 39,
    2563 
    2564  WSI_TOKEN_HTTP_ACCEPT_CHARSET = 40,
    2565  WSI_TOKEN_HTTP_ACCEPT_RANGES = 41,
    2566  WSI_TOKEN_HTTP_ACCESS_CONTROL_ALLOW_ORIGIN = 42,
    2567  WSI_TOKEN_HTTP_AGE = 43,
    2568  WSI_TOKEN_HTTP_ALLOW = 44,
    2569  WSI_TOKEN_HTTP_CONTENT_DISPOSITION = 45,
    2570  WSI_TOKEN_HTTP_CONTENT_ENCODING = 46,
    2571  WSI_TOKEN_HTTP_CONTENT_LANGUAGE = 47,
    2572  WSI_TOKEN_HTTP_CONTENT_LOCATION = 48,
    2573  WSI_TOKEN_HTTP_CONTENT_RANGE = 49,
    2574  WSI_TOKEN_HTTP_ETAG = 50,
    2575  WSI_TOKEN_HTTP_EXPECT = 51,
    2576  WSI_TOKEN_HTTP_EXPIRES = 52,
    2577  WSI_TOKEN_HTTP_FROM = 53,
    2578  WSI_TOKEN_HTTP_IF_MATCH = 54,
    2579  WSI_TOKEN_HTTP_IF_RANGE = 55,
    2580  WSI_TOKEN_HTTP_IF_UNMODIFIED_SINCE = 56,
    2581  WSI_TOKEN_HTTP_LAST_MODIFIED = 57,
    2582  WSI_TOKEN_HTTP_LINK = 58,
    2583  WSI_TOKEN_HTTP_LOCATION = 59,
    2584  WSI_TOKEN_HTTP_MAX_FORWARDS = 60,
    2585  WSI_TOKEN_HTTP_PROXY_AUTHENTICATE = 61,
    2586  WSI_TOKEN_HTTP_PROXY_AUTHORIZATION = 62,
    2587  WSI_TOKEN_HTTP_REFRESH = 63,
    2588  WSI_TOKEN_HTTP_RETRY_AFTER = 64,
    2589  WSI_TOKEN_HTTP_SERVER = 65,
    2590  WSI_TOKEN_HTTP_SET_COOKIE = 66,
    2591  WSI_TOKEN_HTTP_STRICT_TRANSPORT_SECURITY = 67,
    2592  WSI_TOKEN_HTTP_TRANSFER_ENCODING = 68,
    2593  WSI_TOKEN_HTTP_USER_AGENT = 69,
    2594  WSI_TOKEN_HTTP_VARY = 70,
    2595  WSI_TOKEN_HTTP_VIA = 71,
    2596  WSI_TOKEN_HTTP_WWW_AUTHENTICATE = 72,
    2597 
    2598  WSI_TOKEN_PATCH_URI = 73,
    2599  WSI_TOKEN_PUT_URI = 74,
    2600  WSI_TOKEN_DELETE_URI = 75,
    2601 
    2602  WSI_TOKEN_HTTP_URI_ARGS = 76,
    2603  WSI_TOKEN_PROXY = 77,
    2604  WSI_TOKEN_HTTP_X_REAL_IP = 78,
    2605  WSI_TOKEN_HTTP1_0 = 79,
    2606 
    2607  /****** add new things just above ---^ ******/
    2608 
    2609  /* use token storage to stash these internally, not for
    2610  * user use */
    2611 
    2612  _WSI_TOKEN_CLIENT_SENT_PROTOCOLS,
    2613  _WSI_TOKEN_CLIENT_PEER_ADDRESS,
    2614  _WSI_TOKEN_CLIENT_URI,
    2615  _WSI_TOKEN_CLIENT_HOST,
    2616  _WSI_TOKEN_CLIENT_ORIGIN,
    2617  _WSI_TOKEN_CLIENT_METHOD,
    2618 
    2619  /* always last real token index*/
    2620  WSI_TOKEN_COUNT,
    2621 
    2622  /* parser state additions, no storage associated */
    2623  WSI_TOKEN_NAME_PART,
    2624  WSI_TOKEN_SKIPPING,
    2625  WSI_TOKEN_SKIPPING_SAW_CR,
    2626  WSI_PARSING_COMPLETE,
    2627  WSI_INIT_TOKEN_MUXURL,
    2628 };
    2629 
    2631  unsigned short token_limit[WSI_TOKEN_COUNT];
    2632 };
    2633 
    2639 LWS_VISIBLE LWS_EXTERN const unsigned char *
    2640 lws_token_to_string(enum lws_token_indexes token);
    2641 
    2642 
    2651 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2652 lws_hdr_total_length(struct lws *wsi, enum lws_token_indexes h);
    2653 
    2663 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2664 lws_hdr_fragment_length(struct lws *wsi, enum lws_token_indexes h, int frag_idx);
    2665 
    2679 LWS_VISIBLE LWS_EXTERN int
    2680 lws_hdr_copy(struct lws *wsi, char *dest, int len, enum lws_token_indexes h);
    2681 
    2699 LWS_VISIBLE LWS_EXTERN int
    2700 lws_hdr_copy_fragment(struct lws *wsi, char *dest, int len,
    2701  enum lws_token_indexes h, int frag_idx);
    2702 
    2713 LWS_VISIBLE LWS_EXTERN const char *
    2714 lws_get_urlarg_by_name(struct lws *wsi, const char *name, char *buf, int len);
    2716 
    2731 
    2742 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2743 lws_add_http_header_status(struct lws *wsi,
    2744  unsigned int code, unsigned char **p,
    2745  unsigned char *end);
    2758 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2759 lws_add_http_header_by_name(struct lws *wsi, const unsigned char *name,
    2760  const unsigned char *value, int length,
    2761  unsigned char **p, unsigned char *end);
    2775 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2776 lws_add_http_header_by_token(struct lws *wsi, enum lws_token_indexes token,
    2777  const unsigned char *value, int length,
    2778  unsigned char **p, unsigned char *end);
    2789 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2790 lws_add_http_header_content_length(struct lws *wsi,
    2791  unsigned long content_length,
    2792  unsigned char **p, unsigned char *end);
    2802 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2803 lws_finalize_http_header(struct lws *wsi, unsigned char **p,
    2804  unsigned char *end);
    2806 
    2825 
    2835 };
    2836 
    2850 typedef int (*lws_spa_fileupload_cb)(void *data, const char *name,
    2851  const char *filename, char *buf, int len,
    2852  enum lws_spa_fileupload_states state);
    2853 
    2856 struct lws_spa;
    2857 
    2876 LWS_VISIBLE LWS_EXTERN struct lws_spa *
    2877 lws_spa_create(struct lws *wsi, const char * const *param_names,
    2878  int count_params, int max_storage, lws_spa_fileupload_cb opt_cb,
    2879  void *opt_data);
    2880 
    2888 LWS_VISIBLE LWS_EXTERN int
    2889 lws_spa_process(struct lws_spa *spa, const char *in, int len);
    2890 
    2896 LWS_VISIBLE LWS_EXTERN int
    2897 lws_spa_finalize(struct lws_spa *spa);
    2898 
    2905 LWS_VISIBLE LWS_EXTERN int
    2906 lws_spa_get_length(struct lws_spa *spa, int n);
    2907 
    2913 LWS_VISIBLE LWS_EXTERN const char *
    2914 lws_spa_get_string(struct lws_spa *spa, int n);
    2915 
    2921 LWS_VISIBLE LWS_EXTERN int
    2922 lws_spa_destroy(struct lws_spa *spa);
    2924 
    2935 
    2946 LWS_VISIBLE LWS_EXTERN const char *
    2947 lws_urlencode(char *escaped, const char *string, int len);
    2948 
    2949 /*
    2950  * URLDECODE 1 / 2
    2951  *
    2952  * This simple urldecode only operates until the first '\0' and requires the
    2953  * data to exist all at once
    2954  */
    2967 LWS_VISIBLE LWS_EXTERN int
    2968 lws_urldecode(char *string, const char *escaped, int len);
    2970 
    2979 LWS_VISIBLE LWS_EXTERN int
    2980 lws_return_http_status(struct lws *wsi, unsigned int code,
    2981  const char *html_body);
    2982 
    2993 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2994 lws_http_redirect(struct lws *wsi, int code, const unsigned char *loc, int len,
    2995  unsigned char **p, unsigned char *end);
    2996 
    3005 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3006 lws_http_transaction_completed(struct lws *wsi);
    3008 
    3016 
    3027 LWS_VISIBLE LWS_EXTERN const char *
    3028 lws_sql_purify(char *escaped, const char *string, int len);
    3029 
    3040 LWS_VISIBLE LWS_EXTERN const char *
    3041 lws_json_purify(char *escaped, const char *string, int len);
    3043 
    3050 
    3052 #ifdef LWS_USE_LIBEV
    3053 typedef void (lws_ev_signal_cb_t)(EV_P_ struct ev_signal *w, int revents);
    3054 
    3055 LWS_VISIBLE LWS_EXTERN int
    3056 lws_ev_sigint_cfg(struct lws_context *context, int use_ev_sigint,
    3057  lws_ev_signal_cb_t *cb);
    3058 
    3059 LWS_VISIBLE LWS_EXTERN int
    3060 lws_ev_initloop(struct lws_context *context, struct ev_loop *loop, int tsi);
    3061 
    3062 LWS_VISIBLE LWS_EXTERN void
    3063 lws_ev_sigint_cb(struct ev_loop *loop, struct ev_signal *watcher, int revents);
    3064 #endif /* LWS_USE_LIBEV */
    3065 
    3067 
    3074 #ifdef LWS_USE_LIBUV
    3076 LWS_VISIBLE LWS_EXTERN int
    3077 lws_uv_sigint_cfg(struct lws_context *context, int use_uv_sigint,
    3078  uv_signal_cb cb);
    3079 
    3080 LWS_VISIBLE LWS_EXTERN void
    3081 lws_libuv_run(const struct lws_context *context, int tsi);
    3082 
    3083 LWS_VISIBLE LWS_EXTERN void
    3084 lws_libuv_stop(struct lws_context *context);
    3085 
    3086 LWS_VISIBLE LWS_EXTERN int
    3087 lws_uv_initloop(struct lws_context *context, uv_loop_t *loop, int tsi);
    3088 
    3089 LWS_VISIBLE LWS_EXTERN uv_loop_t *
    3090 lws_uv_getloop(struct lws_context *context, int tsi);
    3091 
    3092 LWS_VISIBLE LWS_EXTERN void
    3093 lws_uv_sigint_cb(uv_signal_t *watcher, int signum);
    3094 #endif /* LWS_USE_LIBUV */
    3095 
    3102 
    3103 /*
    3104  * NOTE: These public enums are part of the abi. If you want to add one,
    3105  * add it at where specified so existing users are unaffected.
    3106  */
    3107 enum pending_timeout {
    3108  NO_PENDING_TIMEOUT = 0,
    3109  PENDING_TIMEOUT_AWAITING_PROXY_RESPONSE = 1,
    3110  PENDING_TIMEOUT_AWAITING_CONNECT_RESPONSE = 2,
    3111  PENDING_TIMEOUT_ESTABLISH_WITH_SERVER = 3,
    3112  PENDING_TIMEOUT_AWAITING_SERVER_RESPONSE = 4,
    3113  PENDING_TIMEOUT_AWAITING_PING = 5,
    3114  PENDING_TIMEOUT_CLOSE_ACK = 6,
    3115  PENDING_TIMEOUT_AWAITING_EXTENSION_CONNECT_RESPONSE = 7,
    3116  PENDING_TIMEOUT_SENT_CLIENT_HANDSHAKE = 8,
    3117  PENDING_TIMEOUT_SSL_ACCEPT = 9,
    3118  PENDING_TIMEOUT_HTTP_CONTENT = 10,
    3119  PENDING_TIMEOUT_AWAITING_CLIENT_HS_SEND = 11,
    3120  PENDING_FLUSH_STORED_SEND_BEFORE_CLOSE = 12,
    3121  PENDING_TIMEOUT_SHUTDOWN_FLUSH = 13,
    3122  PENDING_TIMEOUT_CGI = 14,
    3123  PENDING_TIMEOUT_HTTP_KEEPALIVE_IDLE = 15,
    3124  PENDING_TIMEOUT_WS_PONG_CHECK_SEND_PING = 16,
    3125  PENDING_TIMEOUT_WS_PONG_CHECK_GET_PONG = 17,
    3126  PENDING_TIMEOUT_CLIENT_ISSUE_PAYLOAD = 18,
    3127 
    3128  /****** add new things just above ---^ ******/
    3129 };
    3130 
    3140 LWS_VISIBLE LWS_EXTERN void
    3141 lws_set_timeout(struct lws *wsi, enum pending_timeout reason, int secs);
    3143 
    3149 #if !defined(LWS_SIZEOFPTR)
    3150 #define LWS_SIZEOFPTR (sizeof (void *))
    3151 #endif
    3152 #if !defined(u_int64_t)
    3153 #define u_int64_t unsigned long long
    3154 #endif
    3155 
    3156 #if defined(__x86_64__)
    3157 #define _LWS_PAD_SIZE 16 /* Intel recommended for best performance */
    3158 #else
    3159 #define _LWS_PAD_SIZE LWS_SIZEOFPTR /* Size of a pointer on the target arch */
    3160 #endif
    3161 #define _LWS_PAD(n) (((n) % _LWS_PAD_SIZE) ? \
    3162  ((n) + (_LWS_PAD_SIZE - ((n) % _LWS_PAD_SIZE))) : (n))
    3163 #define LWS_PRE _LWS_PAD(4 + 10)
    3164 /* used prior to 1.7 and retained for backward compatibility */
    3165 #define LWS_SEND_BUFFER_PRE_PADDING LWS_PRE
    3166 #define LWS_SEND_BUFFER_POST_PADDING 0
    3167 
    3168 /*
    3169  * NOTE: These public enums are part of the abi. If you want to add one,
    3170  * add it at where specified so existing users are unaffected.
    3171  */
    3186  /* LWS_WRITE_CLOSE is handled by lws_close_reason() */
    3187  LWS_WRITE_PING = 5,
    3188  LWS_WRITE_PONG = 6,
    3189 
    3190  /* Same as write_http but we know this write ends the transaction */
    3191  LWS_WRITE_HTTP_FINAL = 7,
    3192 
    3193  /* HTTP2 */
    3194 
    3202  /****** add new things just above ---^ ******/
    3203 
    3204  /* flags */
    3205 
    3213 };
    3214 
    3215 
    3302 LWS_VISIBLE LWS_EXTERN int
    3303 lws_write(struct lws *wsi, unsigned char *buf, size_t len,
    3304  enum lws_write_protocol protocol);
    3305 
    3306 /* helper for case where buffer may be const */
    3307 #define lws_write_http(wsi, buf, len) \
    3308  lws_write(wsi, (unsigned char *)(buf), len, LWS_WRITE_HTTP)
    3309 
    3329 
    3342 LWS_VISIBLE LWS_EXTERN int
    3343 lws_callback_on_writable(struct lws *wsi);
    3344 
    3358 LWS_VISIBLE LWS_EXTERN int
    3359 lws_callback_on_writable_all_protocol(const struct lws_context *context,
    3360  const struct lws_protocols *protocol);
    3361 
    3375 LWS_VISIBLE LWS_EXTERN int
    3376 lws_callback_on_writable_all_protocol_vhost(const struct lws_vhost *vhost,
    3377  const struct lws_protocols *protocol);
    3378 
    3391 LWS_VISIBLE LWS_EXTERN int
    3392 lws_callback_all_protocol(struct lws_context *context,
    3393  const struct lws_protocols *protocol, int reason);
    3394 
    3407 LWS_VISIBLE LWS_EXTERN int
    3408 lws_callback_all_protocol_vhost(struct lws_vhost *vh,
    3409  const struct lws_protocols *protocol, int reason);
    3410 
    3424 LWS_VISIBLE LWS_EXTERN int
    3425 lws_callback_vhost_protocols(struct lws *wsi, int reason, void *in, int len);
    3426 
    3427 LWS_VISIBLE LWS_EXTERN int
    3428 lws_callback_http_dummy(struct lws *wsi, enum lws_callback_reasons reason,
    3429  void *user, void *in, size_t len);
    3430 
    3438 LWS_VISIBLE LWS_EXTERN int
    3439 lws_get_socket_fd(struct lws *wsi);
    3440 
    3462 LWS_VISIBLE LWS_EXTERN size_t
    3463 lws_get_peer_write_allowance(struct lws *wsi);
    3465 
    3476 LWS_VISIBLE LWS_EXTERN int
    3477 lws_rx_flow_control(struct lws *wsi, int enable);
    3478 
    3488 LWS_VISIBLE LWS_EXTERN void
    3489 lws_rx_flow_allow_all_protocol(const struct lws_context *context,
    3490  const struct lws_protocols *protocol);
    3491 
    3508 LWS_VISIBLE LWS_EXTERN size_t
    3509 lws_remaining_packet_payload(struct lws *wsi);
    3510 
    3511 
    3520 
    3533 LWS_VISIBLE LWS_EXTERN struct lws *
    3534 lws_adopt_socket(struct lws_context *context, lws_sockfd_type accept_fd);
    3557 LWS_VISIBLE LWS_EXTERN struct lws *
    3558 lws_adopt_socket_readbuf(struct lws_context *context, lws_sockfd_type accept_fd,
    3559  const char *readbuf, size_t len);
    3561 
    3567 
    3578 LWS_VISIBLE LWS_EXTERN const char * LWS_WARN_UNUSED_RESULT
    3579 lws_canonical_hostname(struct lws_context *context);
    3580 
    3595 LWS_VISIBLE LWS_EXTERN void
    3596 lws_get_peer_addresses(struct lws *wsi, lws_sockfd_type fd, char *name,
    3597  int name_len, char *rip, int rip_len);
    3598 
    3609 LWS_VISIBLE LWS_EXTERN const char *
    3610 lws_get_peer_simple(struct lws *wsi, char *name, int namelen);
    3611 #ifndef LWS_WITH_ESP8266
    3612 
    3623 LWS_VISIBLE LWS_EXTERN int
    3624 lws_interface_to_sa(int ipv6, const char *ifname, struct sockaddr_in *addr,
    3625  size_t addrlen);
    3627 #endif
    3628 
    3634 
    3647 LWS_VISIBLE LWS_EXTERN int
    3648 lws_snprintf(char *str, size_t size, const char *format, ...);
    3649 
    3661 LWS_VISIBLE LWS_EXTERN int
    3662 lws_get_random(struct lws_context *context, void *buf, int len);
    3670 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3671 lws_daemonize(const char *_lock_path);
    3677 LWS_VISIBLE LWS_EXTERN const char * LWS_WARN_UNUSED_RESULT
    3679 
    3686 LWS_VISIBLE LWS_EXTERN void *
    3687 lws_wsi_user(struct lws *wsi);
    3688 
    3700 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3701 lws_parse_uri(char *p, const char **prot, const char **ads, int *port,
    3702  const char **path);
    3703 
    3707 LWS_VISIBLE LWS_EXTERN unsigned long
    3708 lws_now_secs(void);
    3709 
    3719 LWS_VISIBLE LWS_EXTERN struct lws_context * LWS_WARN_UNUSED_RESULT
    3720 lws_get_context(const struct lws *wsi);
    3721 
    3731 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3732 lws_get_count_threads(struct lws_context *context);
    3733 
    3741 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    3742 lws_get_parent(const struct lws *wsi);
    3743 
    3750 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    3751 lws_get_child(const struct lws *wsi);
    3752 
    3753 
    3754 /*
    3755  * \deprecated DEPRECATED Note: this is not normally needed as a user api.
    3756  * It's provided in case it is
    3757  * useful when integrating with other app poll loop service code.
    3758  */
    3759 LWS_VISIBLE LWS_EXTERN int
    3760 lws_read(struct lws *wsi, unsigned char *buf, size_t len);
    3761 
    3769 LWS_VISIBLE LWS_EXTERN void
    3770 lws_set_allocator(void *(*realloc)(void *ptr, size_t size));
    3772 
    3778 
    3785 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3786 lws_send_pipe_choked(struct lws *wsi);
    3787 
    3792 LWS_VISIBLE LWS_EXTERN int
    3793 lws_is_final_fragment(struct lws *wsi);
    3794 
    3799 LWS_VISIBLE LWS_EXTERN unsigned char
    3800 lws_get_reserved_bits(struct lws *wsi);
    3801 
    3818 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3819 lws_partial_buffered(struct lws *wsi);
    3820 
    3830 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3831 lws_frame_is_binary(struct lws *wsi);
    3832 
    3841 LWS_VISIBLE LWS_EXTERN int
    3842 lws_is_ssl(struct lws *wsi);
    3847 LWS_VISIBLE LWS_EXTERN int
    3848 lws_is_cgi(struct lws *wsi);
    3850 
    3851 
    3857 #ifdef LWS_SHA1_USE_OPENSSL_NAME
    3859 #define lws_SHA1 SHA1
    3860 #else
    3861 
    3870 LWS_VISIBLE LWS_EXTERN unsigned char *
    3871 lws_SHA1(const unsigned char *d, size_t n, unsigned char *md);
    3872 #endif
    3873 
    3883 LWS_VISIBLE LWS_EXTERN int
    3884 lws_b64_encode_string(const char *in, int in_len, char *out, int out_size);
    3894 LWS_VISIBLE LWS_EXTERN int
    3895 lws_b64_decode_string(const char *in, char *out, int out_size);
    3897 
    3898 
    3908 #ifdef LWS_WITH_CGI
    3909 enum lws_enum_stdinouterr {
    3910  LWS_STDIN = 0,
    3911  LWS_STDOUT = 1,
    3912  LWS_STDERR = 2,
    3913 };
    3914 
    3915 enum lws_cgi_hdr_state {
    3916  LCHS_HEADER,
    3917  LCHS_CR1,
    3918  LCHS_LF1,
    3919  LCHS_CR2,
    3920  LCHS_LF2,
    3921  LHCS_PAYLOAD,
    3922  LCHS_SINGLE_0A,
    3923 };
    3924 
    3926  struct lws **stdwsi;
    3927  enum lws_enum_stdinouterr ch;
    3928  unsigned char *data;
    3929  enum lws_cgi_hdr_state hdr_state;
    3930  int len;
    3931 };
    3932 
    3933 
    3943 LWS_VISIBLE LWS_EXTERN int
    3944 lws_cgi(struct lws *wsi, const char * const *exec_array,
    3945  int script_uri_path_len, int timeout_secs,
    3946  const struct lws_protocol_vhost_options *mp_cgienv);
    3947 
    3953 LWS_VISIBLE LWS_EXTERN int
    3954 lws_cgi_write_split_stdout_headers(struct lws *wsi);
    3955 
    3961 LWS_VISIBLE LWS_EXTERN int
    3962 lws_cgi_kill(struct lws *wsi);
    3963 #endif
    3964 
    3966 
    3983 
    3990  lws_filefd_type (*open)(struct lws *wsi, const char *filename,
    3991  unsigned long *filelen, int flags);
    3995  int (*close)(struct lws *wsi, lws_filefd_type fd);
    3997  unsigned long (*seek_cur)(struct lws *wsi, lws_filefd_type fd,
    3998  long offset_from_cur_pos);
    4000  int (*read)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    4001  unsigned char *buf, unsigned long len);
    4003  int (*write)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    4004  unsigned char *buf, unsigned long len);
    4007  /* Add new things just above here ---^
    4008  * This is part of the ABI, don't needlessly break compatibility */
    4009 };
    4010 
    4016 LWS_VISIBLE LWS_EXTERN struct lws_plat_file_ops * LWS_WARN_UNUSED_RESULT
    4017 lws_get_fops(struct lws_context *context);
    4018 
    4027 static LWS_INLINE lws_filefd_type LWS_WARN_UNUSED_RESULT
    4028 lws_plat_file_open(struct lws *wsi, const char *filename,
    4029  unsigned long *filelen, int flags)
    4030 {
    4031  return lws_get_fops(lws_get_context(wsi))->open(wsi, filename,
    4032  filelen, flags);
    4033 }
    4034 
    4041 static LWS_INLINE int
    4042 lws_plat_file_close(struct lws *wsi, lws_filefd_type fd)
    4043 {
    4044  return lws_get_fops(lws_get_context(wsi))->close(wsi, fd);
    4045 }
    4046 
    4054 static LWS_INLINE unsigned long
    4055 lws_plat_file_seek_cur(struct lws *wsi, lws_filefd_type fd, long offset)
    4056 {
    4057  return lws_get_fops(lws_get_context(wsi))->seek_cur(wsi, fd, offset);
    4058 }
    4068 static LWS_INLINE int LWS_WARN_UNUSED_RESULT
    4069 lws_plat_file_read(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    4070  unsigned char *buf, unsigned long len)
    4071 {
    4072  return lws_get_fops(lws_get_context(wsi))->read(wsi, fd, amount, buf,
    4073  len);
    4074 }
    4084 static LWS_INLINE int LWS_WARN_UNUSED_RESULT
    4085 lws_plat_file_write(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    4086  unsigned char *buf, unsigned long len)
    4087 {
    4088  return lws_get_fops(lws_get_context(wsi))->write(wsi, fd, amount, buf,
    4089  len);
    4090 }
    4092 
    4124 #ifdef LWS_WITH_SMTP
    4125 
    4137 };
    4138 
    4140 struct lws_email {
    4141  void *data;
    4143  uv_loop_t *loop;
    4146  char email_smtp_ip[32];
    4147  char email_helo[32];
    4148  char email_from[100];
    4149  char email_to[100];
    4151  unsigned int max_content_size;
    4154  /* Fill all the callbacks before init */
    4155 
    4156  int (*on_next)(struct lws_email *email);
    4161  int (*on_sent)(struct lws_email *email);
    4166  int (*on_get_body)(struct lws_email *email, char *buf, int len);
    4172  /* private things */
    4173  uv_timer_t timeout_email;
    4175  uv_connect_t email_connect_req;
    4176  uv_tcp_t email_client;
    4178  char email_buf[256];
    4179  char *content;
    4180 };
    4181 
    4191 LWS_VISIBLE LWS_EXTERN int
    4192 lws_email_init(struct lws_email *email, uv_loop_t *loop, int max_content);
    4193 
    4202 LWS_VISIBLE LWS_EXTERN void
    4203 lws_email_check(struct lws_email *email);
    4211 LWS_VISIBLE LWS_EXTERN void
    4212 lws_email_destroy(struct lws_email *email);
    4213 
    4214 #endif
    4215 
    4216 
    4217 #ifdef __cplusplus
    4218 }
    4219 #endif
    4220 
    4221 #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 #if defined(MBED_OPERATORS) || defined(LWS_WITH_ESP8266)
    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 <fcntl.h>
    120 #else
    121 #define _O_RDONLY 0x0000
    122 #define O_RDONLY _O_RDONLY
    123 #endif
    124 
    125 // Visual studio older than 2015 and WIN_CE has only _stricmp
    126 #if (defined(_MSC_VER) && _MSC_VER < 1900) || defined(_WIN32_WCE)
    127 #define strcasecmp _stricmp
    128 #elif !defined(__MINGW32__)
    129 #define strcasecmp stricmp
    130 #endif
    131 #define getdtablesize() 30000
    132 
    133 #define LWS_INLINE __inline
    134 #define LWS_VISIBLE
    135 #define LWS_WARN_UNUSED_RESULT
    136 #define LWS_WARN_DEPRECATED
    137 
    138 #ifdef LWS_DLL
    139 #ifdef LWS_INTERNAL
    140 #define LWS_EXTERN extern __declspec(dllexport)
    141 #else
    142 #define LWS_EXTERN extern __declspec(dllimport)
    143 #endif
    144 #else
    145 #define LWS_EXTERN
    146 #endif
    147 
    148 #define LWS_INVALID_FILE INVALID_HANDLE_VALUE
    149 #define LWS_O_RDONLY _O_RDONLY
    150 
    151 #if !defined(__MINGW32__) && (!defined(_MSC_VER) || _MSC_VER < 1900) /* Visual Studio 2015 already defines this in <stdio.h> */
    152 #define lws_snprintf _snprintf
    153 #endif
    154 
    155 #ifndef __func__
    156 #define __func__ __FUNCTION__
    157 #endif
    158 
    159 #else /* NOT WIN32 */
    160 #include <unistd.h>
    161 
    162 #if defined(__NetBSD__) || defined(__FreeBSD__)
    163 #include <netinet/in.h>
    164 #endif
    165 
    166 #define LWS_INLINE inline
    167 #define LWS_O_RDONLY O_RDONLY
    168 
    169 #if !defined(MBED_OPERATORS) && !defined(LWS_WITH_ESP8266)
    170 #include <poll.h>
    171 #include <netdb.h>
    172 #define LWS_INVALID_FILE -1
    173 #else
    174 #define getdtablesize() (20)
    175 #define LWS_INVALID_FILE NULL
    176 #endif
    177 
    178 #if defined(__GNUC__)
    179 
    180 /* warn_unused_result attribute only supported by GCC 3.4 or later */
    181 #if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
    182 #define LWS_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
    183 #else
    184 #define LWS_WARN_UNUSED_RESULT
    185 #endif
    186 
    187 #define LWS_VISIBLE __attribute__((visibility("default")))
    188 #define LWS_WARN_DEPRECATED __attribute__ ((deprecated))
    189 #else
    190 #define LWS_VISIBLE
    191 #define LWS_WARN_UNUSED_RESULT
    192 #define LWS_WARN_DEPRECATED
    193 #endif
    194 
    195 #if defined(__ANDROID__)
    196 #include <unistd.h>
    197 #define getdtablesize() sysconf(_SC_OPEN_MAX)
    198 #endif
    199 
    200 #endif
    201 
    202 #ifdef LWS_USE_LIBEV
    203 #include <ev.h>
    204 #endif /* LWS_USE_LIBEV */
    205 #ifdef LWS_USE_LIBUV
    206 #include <uv.h>
    207 #ifdef LWS_HAVE_UV_VERSION_H
    208 #include <uv-version.h>
    209 #endif
    210 #endif /* LWS_USE_LIBUV */
    211 
    212 #ifndef LWS_EXTERN
    213 #define LWS_EXTERN extern
    214 #endif
    215 
    216 #ifdef _WIN32
    217 #define random rand
    218 #else
    219 #include <sys/time.h>
    220 #include <unistd.h>
    221 #endif
    222 
    223 #ifdef LWS_OPENSSL_SUPPORT
    224 
    225 #ifdef USE_WOLFSSL
    226 #ifdef USE_OLD_CYASSL
    227 #include <cyassl/openssl/ssl.h>
    228 #include <cyassl/error-ssl.h>
    229 #else
    230 #include <wolfssl/openssl/ssl.h>
    231 #include <wolfssl/error-ssl.h>
    232 #endif /* not USE_OLD_CYASSL */
    233 #else
    234 #if defined(LWS_USE_POLARSSL)
    235 #include <polarssl/ssl.h>
    237  x509_crt ca;
    238  x509_crt certificate;
    239  rsa_context key;
    240 };
    241 typedef struct lws_polarssl_context SSL_CTX;
    242 typedef ssl_context SSL;
    243 #else
    244 #if defined(LWS_USE_MBEDTLS)
    245 #include <mbedtls/ssl.h>
    246 #else
    247 #include <openssl/ssl.h>
    248 #include <openssl/err.h>
    249 #endif /* not USE_MBEDTLS */
    250 #endif /* not USE_POLARSSL */
    251 #endif /* not USE_WOLFSSL */
    252 #endif
    253 
    254 
    255 #define CONTEXT_PORT_NO_LISTEN -1
    256 
    267 
    269 enum lws_log_levels {
    270  LLL_ERR = 1 << 0,
    271  LLL_WARN = 1 << 1,
    272  LLL_NOTICE = 1 << 2,
    273  LLL_INFO = 1 << 3,
    274  LLL_DEBUG = 1 << 4,
    275  LLL_PARSER = 1 << 5,
    276  LLL_HEADER = 1 << 6,
    277  LLL_EXT = 1 << 7,
    278  LLL_CLIENT = 1 << 8,
    279  LLL_LATENCY = 1 << 9,
    280 
    281  LLL_COUNT = 10 /* set to count of valid flags */
    282 };
    283 
    284 LWS_VISIBLE LWS_EXTERN void _lws_log(int filter, const char *format, ...);
    285 LWS_VISIBLE LWS_EXTERN void _lws_logv(int filter, const char *format, va_list vl);
    295 LWS_VISIBLE LWS_EXTERN int
    296 lwsl_timestamp(int level, char *p, int len);
    297 
    298 #define lwsl_err(...) _lws_log(LLL_ERR, __VA_ARGS__)
    299 
    300 #if !defined(LWS_WITH_NO_LOGS)
    301 /* notice, warn and log are always compiled in */
    302 #define lwsl_warn(...) _lws_log(LLL_WARN, __VA_ARGS__)
    303 #define lwsl_notice(...) _lws_log(LLL_NOTICE, __VA_ARGS__)
    304 #endif
    305 /*
    306  * weaker logging can be deselected at configure time using --disable-debug
    307  * that gets rid of the overhead of checking while keeping _warn and _err
    308  * active
    309  */
    310 
    311 #if defined(LWS_WITH_ESP8266)
    312 #undef _DEBUG
    313 #endif
    314 
    315 #ifdef _DEBUG
    316 #if defined(LWS_WITH_NO_LOGS)
    317 /* notice, warn and log are always compiled in */
    318 //#define lwsl_err(...) _lws_log(LLL_ERR, __VA_ARGS__)
    319 #define lwsl_warn(...) _lws_log(LLL_WARN, __VA_ARGS__)
    320 #define lwsl_notice(...) _lws_log(LLL_NOTICE, __VA_ARGS__)
    321 #endif
    322 #define lwsl_info(...) _lws_log(LLL_INFO, __VA_ARGS__)
    323 #define lwsl_debug(...) _lws_log(LLL_DEBUG, __VA_ARGS__)
    324 #define lwsl_parser(...) _lws_log(LLL_PARSER, __VA_ARGS__)
    325 #define lwsl_header(...) _lws_log(LLL_HEADER, __VA_ARGS__)
    326 #define lwsl_ext(...) _lws_log(LLL_EXT, __VA_ARGS__)
    327 #define lwsl_client(...) _lws_log(LLL_CLIENT, __VA_ARGS__)
    328 #define lwsl_latency(...) _lws_log(LLL_LATENCY, __VA_ARGS__)
    329 
    335 LWS_VISIBLE LWS_EXTERN void lwsl_hexdump(void *buf, size_t len);
    336 
    337 #else /* no debug */
    338 #if defined(LWS_WITH_NO_LOGS)
    339 //#define lwsl_err(...) do {} while(0)
    340 #define lwsl_warn(...) do {} while(0)
    341 #define lwsl_notice(...) do {} while(0)
    342 #endif
    343 #define lwsl_info(...) do {} while(0)
    344 #define lwsl_debug(...) do {} while(0)
    345 #define lwsl_parser(...) do {} while(0)
    346 #define lwsl_header(...) do {} while(0)
    347 #define lwsl_ext(...) do {} while(0)
    348 #define lwsl_client(...) do {} while(0)
    349 #define lwsl_latency(...) do {} while(0)
    350 #define lwsl_hexdump(a, b)
    351 
    352 #endif
    353 
    364 LWS_VISIBLE LWS_EXTERN void
    365 lws_set_log_level(int level,
    366  void (*log_emit_function)(int level, const char *line));
    367 
    377 LWS_VISIBLE LWS_EXTERN void
    378 lwsl_emit_syslog(int level, const char *line);
    379 
    381 
    382 
    383 #include <stddef.h>
    384 
    385 #ifndef lws_container_of
    386 #define lws_container_of(P,T,M) ((T *)((char *)(P) - offsetof(T, M)))
    387 #endif
    388 
    389 
    390 struct lws;
    391 #ifndef ARRAY_SIZE
    392 #define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
    393 #endif
    394 
    395 /* api change list for user code to test against */
    396 
    397 #define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_ARG
    398 
    399 /* the struct lws_protocols has the id field present */
    400 #define LWS_FEATURE_PROTOCOLS_HAS_ID_FIELD
    401 
    402 /* you can call lws_get_peer_write_allowance */
    403 #define LWS_FEATURE_PROTOCOLS_HAS_PEER_WRITE_ALLOWANCE
    404 
    405 /* extra parameter introduced in 917f43ab821 */
    406 #define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_LEN
    407 
    408 /* File operations stuff exists */
    409 #define LWS_FEATURE_FOPS
    410 
    411 
    412 #if defined(_WIN32)
    413 typedef SOCKET lws_sockfd_type;
    414 typedef HANDLE lws_filefd_type;
    415 #define lws_sockfd_valid(sfd) (!!sfd)
    416 struct lws_pollfd {
    417  lws_sockfd_type fd;
    418  SHORT events;
    419  SHORT revents;
    420 };
    421 #define LWS_POLLHUP (FD_CLOSE)
    422 #define LWS_POLLIN (FD_READ | FD_ACCEPT)
    423 #define LWS_POLLOUT (FD_WRITE)
    424 #else
    425 
    426 #if defined(MBED_OPERATORS)
    427 /* it's a class lws_conn * */
    428 typedef void * lws_sockfd_type;
    429 typedef void * lws_filefd_type;
    430 #define lws_sockfd_valid(sfd) (!!sfd)
    431 struct pollfd {
    432  lws_sockfd_type fd;
    433  short events;
    434  short revents;
    435 };
    436 #define POLLIN 0x0001
    437 #define POLLPRI 0x0002
    438 #define POLLOUT 0x0004
    439 #define POLLERR 0x0008
    440 #define POLLHUP 0x0010
    441 #define POLLNVAL 0x0020
    442 
    443 struct lws;
    444 
    445 void * mbed3_create_tcp_stream_socket(void);
    446 void mbed3_delete_tcp_stream_socket(void *sockfd);
    447 void mbed3_tcp_stream_bind(void *sock, int port, struct lws *);
    448 void mbed3_tcp_stream_accept(void *sock, struct lws *);
    449 #else
    450 #if defined(LWS_WITH_ESP8266)
    451 
    452 #include <user_interface.h>
    453 #include <espconn.h>
    454 
    455 typedef struct espconn * lws_sockfd_type;
    456 typedef void * lws_filefd_type;
    457 #define lws_sockfd_valid(sfd) (!!sfd)
    458 struct pollfd {
    459  lws_sockfd_type fd;
    460  short events;
    461  short revents;
    462 };
    463 #define POLLIN 0x0001
    464 #define POLLPRI 0x0002
    465 #define POLLOUT 0x0004
    466 #define POLLERR 0x0008
    467 #define POLLHUP 0x0010
    468 #define POLLNVAL 0x0020
    469 
    470 struct lws_vhost;
    471 
    472 lws_sockfd_type esp8266_create_tcp_listen_socket(struct lws_vhost *vh);
    473 void esp8266_tcp_stream_accept(lws_sockfd_type fd, struct lws *wsi);
    474 
    475 #include <os_type.h>
    476 #include <osapi.h>
    477 #include "ets_sys.h"
    478 
    479 int ets_snprintf(char *str, size_t size, const char *format, ...);
    480 #define snprintf ets_snprintf
    481 
    482 typedef os_timer_t uv_timer_t;
    483 typedef void uv_cb_t(uv_timer_t *);
    484 
    485 void os_timer_disarm(void *);
    486 void os_timer_setfn(os_timer_t *, os_timer_func_t *, void *);
    487 
    488 void ets_timer_arm_new(os_timer_t *, int, int, int);
    489 
    490 //void os_timer_arm(os_timer_t *, int, int);
    491 
    492 #define UV_VERSION_MAJOR 1
    493 
    494 #define lws_uv_getloop(a, b) (NULL)
    495 
    496 static inline void uv_timer_init(void *l, uv_timer_t *t)
    497 {
    498  (void)l;
    499  memset(t, 0, sizeof(*t));
    500  os_timer_disarm(t);
    501 }
    502 
    503 static inline void uv_timer_start(uv_timer_t *t, uv_cb_t *cb, int first, int rep)
    504 {
    505  os_timer_setfn(t, (os_timer_func_t *)cb, t);
    506  /* ms, repeat */
    507  os_timer_arm(t, first, !!rep);
    508 }
    509 
    510 static inline void uv_timer_stop(uv_timer_t *t)
    511 {
    512  os_timer_disarm(t);
    513 }
    514 
    515 #else
    516 typedef int lws_sockfd_type;
    517 typedef int lws_filefd_type;
    518 #define lws_sockfd_valid(sfd) (sfd >= 0)
    519 #endif
    520 #endif
    521 
    522 #define lws_pollfd pollfd
    523 #define LWS_POLLHUP (POLLHUP|POLLERR)
    524 #define LWS_POLLIN (POLLIN)
    525 #define LWS_POLLOUT (POLLOUT)
    526 #endif
    527 
    530 struct lws_pollargs {
    531  lws_sockfd_type fd;
    532  int events;
    534 };
    535 
    536 struct lws_tokens;
    537 struct lws_token_limits;
    538 
    546 
    548 /*
    549  * NOTE: These public enums are part of the abi. If you want to add one,
    550  * add it at where specified so existing users are unaffected.
    551  */
    554  LWS_CLOSE_STATUS_NOSTATUS = 0,
    616  /****** add new things just above ---^ ******/
    617 
    618  LWS_CLOSE_STATUS_NOSTATUS_CONTEXT_DESTROY = 9999,
    619 };
    620 
    633 LWS_VISIBLE LWS_EXTERN void
    634 lws_close_reason(struct lws *wsi, enum lws_close_status status,
    635  unsigned char *buf, size_t len);
    636 
    638 
    639 struct lws;
    640 struct lws_context;
    641 /* needed even with extensions disabled for create context */
    642 struct lws_extension;
    643 
    655 
    657 
    658 /*
    659  * NOTE: These public enums are part of the abi. If you want to add one,
    660  * add it at where specified so existing users are unaffected.
    661  */
    905  /* external poll() management support */
    968  LWS_CALLBACK_WS_EXT_DEFAULTS = 39,
    971  LWS_CALLBACK_CGI = 40,
    973  LWS_CALLBACK_CGI_TERMINATED = 41,
    975  LWS_CALLBACK_CGI_STDIN_DATA = 42,
    977  LWS_CALLBACK_CGI_STDIN_COMPLETED = 43,
    979  LWS_CALLBACK_ESTABLISHED_CLIENT_HTTP = 44,
    981  LWS_CALLBACK_CLOSED_CLIENT_HTTP = 45,
    983  LWS_CALLBACK_RECEIVE_CLIENT_HTTP = 46,
    985  LWS_CALLBACK_COMPLETED_CLIENT_HTTP = 47,
    987  LWS_CALLBACK_RECEIVE_CLIENT_HTTP_READ = 48,
    989  LWS_CALLBACK_HTTP_BIND_PROTOCOL = 49,
    991  LWS_CALLBACK_HTTP_DROP_PROTOCOL = 50,
    993  LWS_CALLBACK_CHECK_ACCESS_RIGHTS = 51,
    995  LWS_CALLBACK_PROCESS_HTML = 52,
    997  LWS_CALLBACK_ADD_HEADERS = 53,
    999  LWS_CALLBACK_SESSION_INFO = 54,
    1002  LWS_CALLBACK_GS_EVENT = 55,
    1019  /****** add new things just above ---^ ******/
    1020 
    1023 };
    1024 
    1025 
    1026 
    1042 typedef int
    1043 lws_callback_function(struct lws *wsi, enum lws_callback_reasons reason,
    1044  void *user, void *in, size_t len);
    1046 
    1056 
    1058 /*
    1059  * NOTE: These public enums are part of the abi. If you want to add one,
    1060  * add it at where specified so existing users are unaffected.
    1061  */
    1062 enum lws_extension_callback_reasons {
    1063  LWS_EXT_CB_SERVER_CONTEXT_CONSTRUCT = 0,
    1064  LWS_EXT_CB_CLIENT_CONTEXT_CONSTRUCT = 1,
    1065  LWS_EXT_CB_SERVER_CONTEXT_DESTRUCT = 2,
    1066  LWS_EXT_CB_CLIENT_CONTEXT_DESTRUCT = 3,
    1067  LWS_EXT_CB_CONSTRUCT = 4,
    1068  LWS_EXT_CB_CLIENT_CONSTRUCT = 5,
    1069  LWS_EXT_CB_CHECK_OK_TO_REALLY_CLOSE = 6,
    1070  LWS_EXT_CB_CHECK_OK_TO_PROPOSE_EXTENSION = 7,
    1071  LWS_EXT_CB_DESTROY = 8,
    1072  LWS_EXT_CB_DESTROY_ANY_WSI_CLOSING = 9,
    1073  LWS_EXT_CB_ANY_WSI_ESTABLISHED = 10,
    1074  LWS_EXT_CB_PACKET_RX_PREPARSE = 11,
    1075  LWS_EXT_CB_PACKET_TX_PRESEND = 12,
    1076  LWS_EXT_CB_PACKET_TX_DO_SEND = 13,
    1077  LWS_EXT_CB_HANDSHAKE_REPLY_TX = 14,
    1078  LWS_EXT_CB_FLUSH_PENDING_TX = 15,
    1079  LWS_EXT_CB_EXTENDED_PAYLOAD_RX = 16,
    1080  LWS_EXT_CB_CAN_PROXY_CLIENT_CONNECTION = 17,
    1081  LWS_EXT_CB_1HZ = 18,
    1082  LWS_EXT_CB_REQUEST_ON_WRITEABLE = 19,
    1083  LWS_EXT_CB_IS_WRITEABLE = 20,
    1084  LWS_EXT_CB_PAYLOAD_TX = 21,
    1085  LWS_EXT_CB_PAYLOAD_RX = 22,
    1086  LWS_EXT_CB_OPTION_DEFAULT = 23,
    1087  LWS_EXT_CB_OPTION_SET = 24,
    1088  LWS_EXT_CB_OPTION_CONFIRM = 25,
    1089  LWS_EXT_CB_NAMED_OPTION_SET = 26,
    1090 
    1091  /****** add new things just above ---^ ******/
    1092 };
    1093 
    1100  /* Add new things just above here ---^
    1101  * This is part of the ABI, don't needlessly break compatibility */
    1102 };
    1103 
    1109  const char *name;
    1112  /* Add new things just above here ---^
    1113  * This is part of the ABI, don't needlessly break compatibility */
    1114 };
    1115 
    1118  const char *option_name;
    1120  const char *start;
    1121  int len;
    1122 };
    1123 
    1184 typedef int
    1185 lws_extension_callback_function(struct lws_context *context,
    1186  const struct lws_extension *ext, struct lws *wsi,
    1187  enum lws_extension_callback_reasons reason,
    1188  void *user, void *in, size_t len);
    1189 
    1192  const char *name;
    1194  const char *client_offer;
    1196  /* Add new things just above here ---^
    1197  * This is part of the ABI, don't needlessly break compatibility */
    1198 };
    1199 
    1208 LWS_VISIBLE LWS_EXTERN int
    1209 lws_set_extension_option(struct lws *wsi, const char *ext_name,
    1210  const char *opt_name, const char *opt_val);
    1211 
    1212 #ifndef LWS_NO_EXTENSIONS
    1213 /* lws_get_internal_extensions() - DEPRECATED
    1214  *
    1215  * \Deprecated There is no longer a set internal extensions table. The table is provided
    1216  * by user code along with application-specific settings. See the test
    1217  * client and server for how to do.
    1218  */
    1219 static LWS_INLINE LWS_WARN_DEPRECATED const struct lws_extension *
    1220 lws_get_internal_extensions(void) { return NULL; }
    1221 
    1232 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    1233 lws_ext_parse_options(const struct lws_extension *ext, struct lws *wsi,
    1234  void *ext_user, const struct lws_ext_options *opts,
    1235  const char *o, int len);
    1236 #endif
    1237 
    1250 LWS_EXTERN
    1252  struct lws_context *context, const struct lws_extension *ext,
    1253  struct lws *wsi, enum lws_extension_callback_reasons reason,
    1254  void *user, void *in, size_t len);
    1255 
    1256 /*
    1257  * The internal exts are part of the public abi
    1258  * If we add more extensions, publish the callback here ------v
    1259  */
    1261 
    1277 
    1282  const char *name;
    1303  unsigned int id;
    1310  void *user;
    1313  /* Add new things just above here ---^
    1314  * This is part of the ABI, don't needlessly break compatibility */
    1315 };
    1316 
    1317 struct lws_vhost;
    1318 
    1327 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
    1328 lws_vhost_name_to_protocol(struct lws_vhost *vh, const char *name);
    1329 
    1339 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
    1340 lws_get_protocol(struct lws *wsi);
    1341 
    1343 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
    1344 lws_protocol_get(struct lws *wsi) LWS_WARN_DEPRECATED;
    1345 
    1356 LWS_VISIBLE LWS_EXTERN void *
    1357 lws_protocol_vh_priv_zalloc(struct lws_vhost *vhost, const struct lws_protocols *prot,
    1358  int size);
    1359 
    1369 LWS_VISIBLE LWS_EXTERN void *
    1370 lws_protocol_vh_priv_get(struct lws_vhost *vhost, const struct lws_protocols *prot);
    1371 
    1380 LWS_VISIBLE LWS_EXTERN int
    1381 lws_finalize_startup(struct lws_context *context);
    1382 
    1383 #ifdef LWS_WITH_PLUGINS
    1384 
    1385 /* PLUGINS implies LIBUV */
    1386 
    1387 #define LWS_PLUGIN_API_MAGIC 180
    1388 
    1391  unsigned int api_magic;
    1392  const struct lws_protocols *protocols;
    1394  const struct lws_extension *extensions;
    1396 };
    1397 
    1398 typedef int (*lws_plugin_init_func)(struct lws_context *,
    1399  struct lws_plugin_capability *);
    1400 typedef int (*lws_plugin_destroy_func)(struct lws_context *);
    1401 
    1403 struct lws_plugin {
    1404  struct lws_plugin *list;
    1405 #if (UV_VERSION_MAJOR > 0)
    1406  uv_lib_t lib;
    1407 #else
    1408  void *l;
    1409 #endif
    1410  char name[64];
    1412 };
    1413 
    1414 #endif
    1415 
    1417 
    1418 
    1427 
    1429 #define LWSGS_EMAIL_CONTENT_SIZE 16384
    1430 
    1432 /* SHA-1 binary and hexified versions */
    1434 typedef struct { unsigned char bin[20]; } lwsgw_hash_bin;
    1436 typedef struct { char id[41]; } lwsgw_hash;
    1437 
    1444 };
    1445 
    1448  char username[32];
    1449  char email[100];
    1450  char ip[72];
    1451  unsigned int mask;
    1453  char session[42];
    1454 };
    1455 
    1460 };
    1461 
    1464  enum lws_gs_event event;
    1465  const char *username;
    1466  const char *email;
    1467 };
    1468 
    1470 
    1471 
    1485 
    1487 /*
    1488  * NOTE: These public enums are part of the abi. If you want to add one,
    1489  * add it at where specified so existing users are unaffected.
    1490  */
    1491 
    1495  (1 << 12),
    1502  (1 << 12),
    1518  (1 << 12),
    1523  (1 << 12),
    1547  /****** add new things just above ---^ ******/
    1548 };
    1549 
    1550 #define lws_check_opt(c, f) (((c) & (f)) == (f))
    1551 
    1562  int port;
    1567  const char *iface;
    1574  const struct lws_protocols *protocols;
    1578  const struct lws_extension *extensions;
    1586  const char *ssl_cert_filepath;
    1596  const char *ssl_ca_filepath;
    1598  const char *ssl_cipher_list;
    1602  const char *http_proxy_address;
    1605  unsigned int http_proxy_port;
    1607  int gid;
    1609  int uid;
    1611  unsigned int options;
    1613  void *user;
    1616  int ka_time;
    1626 #ifdef LWS_OPENSSL_SUPPORT
    1632 #else /* maintain structure layout either way */
    1634 #endif
    1635 
    1646  unsigned int count_threads;
    1648  unsigned int fd_limit_per_thread;
    1652  unsigned int timeout_secs;
    1657  const char *ecdh_curve;
    1659  const char *vhost_name;
    1663  const char * const *plugin_dirs;
    1672  const char *log_filepath;
    1675  const struct lws_http_mount *mounts;
    1677  const char *server_string;
    1680  unsigned int pt_serv_buf_size;
    1695  unsigned short ws_ping_pong_interval;
    1726  /* Add new things just above here ---^
    1727  * This is part of the ABI, don't needlessly break compatibility
    1728  *
    1729  * The below is to ensure later library versions with new
    1730  * members added above will see 0 (default) even if the app
    1731  * was not built against the newer headers.
    1732  */
    1733 
    1734  void *_unused[8];
    1735 };
    1736 
    1771 LWS_VISIBLE LWS_EXTERN struct lws_context *
    1773 
    1782 LWS_VISIBLE LWS_EXTERN void
    1783 lws_context_destroy(struct lws_context *context);
    1784 
    1802 LWS_VISIBLE LWS_EXTERN int
    1803 lws_set_proxy(struct lws_vhost *vhost, const char *proxy);
    1804 
    1805 
    1806 struct lws_vhost;
    1807 
    1817 LWS_EXTERN LWS_VISIBLE struct lws_vhost *
    1818 lws_create_vhost(struct lws_context *context,
    1819  struct lws_context_creation_info *info);
    1820 
    1835 LWS_VISIBLE LWS_EXTERN int
    1836 lwsws_get_config_globals(struct lws_context_creation_info *info, const char *d,
    1837  char **config_strings, int *len);
    1838 
    1854 LWS_VISIBLE LWS_EXTERN int
    1855 lwsws_get_config_vhosts(struct lws_context *context,
    1856  struct lws_context_creation_info *info, const char *d,
    1857  char **config_strings, int *len);
    1858 
    1860 LWS_VISIBLE LWS_EXTERN struct lws_vhost *
    1861 lws_vhost_get(struct lws *wsi) LWS_WARN_DEPRECATED;
    1862 
    1868 LWS_VISIBLE LWS_EXTERN struct lws_vhost *
    1869 lws_get_vhost(struct lws *wsi);
    1870 
    1878 LWS_VISIBLE LWS_EXTERN int
    1879 lws_json_dump_vhost(const struct lws_vhost *vh, char *buf, int len);
    1880 
    1888 LWS_VISIBLE LWS_EXTERN int
    1889 lws_json_dump_context(const struct lws_context *context, char *buf, int len);
    1890 
    1900 LWS_VISIBLE LWS_EXTERN void *
    1901 lws_context_user(struct lws_context *context);
    1902 
    1908 
    1918  const char *name;
    1919  const char *value;
    1920 };
    1921 
    1934 };
    1935 
    1943  const char *mountpoint;
    1945  const char *origin;
    1947  const char *def;
    1949  const char *protocol;
    1965  unsigned int auth_mask;
    1968  unsigned int cache_reusable:1;
    1969  unsigned int cache_revalidate:1;
    1970  unsigned int cache_intermediaries:1;
    1972  unsigned char origin_protocol;
    1973  unsigned char mountpoint_len;
    1978  /* Add new things just above here ---^
    1979  * This is part of the ABI, don't needlessly break compatibility
    1980  *
    1981  * The below is to ensure later library versions with new
    1982  * members added above will see 0 (default) even if the app
    1983  * was not built against the newer headers.
    1984  */
    1985 
    1986  void *_unused[2];
    1987 };
    1990 
    1996 
    2004  LCCSCF_USE_SSL = (1 << 0),
    2005  LCCSCF_ALLOW_SELFSIGNED = (1 << 1),
    2006  LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK = (1 << 2),
    2007  LCCSCF_ALLOW_EXPIRED = (1 << 3)
    2008 };
    2009 
    2014  struct lws_context *context;
    2016  const char *address;
    2018  int port;
    2022  const char *path;
    2024  const char *host;
    2026  const char *origin;
    2028  const char *protocol;
    2032  void *userdata;
    2036  const char *method;
    2039  struct lws *parent_wsi;
    2043  const char *uri_replace_from;
    2046  const char *uri_replace_to;
    2048  struct lws_vhost *vhost;
    2050  struct lws **pwsi;
    2062  /* Add new things just above here ---^
    2063  * This is part of the ABI, don't needlessly break compatibility
    2064  *
    2065  * The below is to ensure later library versions with new
    2066  * members added above will see 0 (default) even if the app
    2067  * was not built against the newer headers.
    2068  */
    2069 
    2070  void *_unused[4];
    2071 };
    2072 
    2080 LWS_VISIBLE LWS_EXTERN struct lws *
    2082 
    2103 /* deprecated, use lws_client_connect_via_info() */
    2104 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    2105 lws_client_connect(struct lws_context *clients, const char *address,
    2106  int port, int ssl_connection, const char *path,
    2107  const char *host, const char *origin, const char *protocol,
    2108  int ietf_version_or_minus_one) LWS_WARN_DEPRECATED;
    2109 /* deprecated, use lws_client_connect_via_info() */
    2130 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    2131 lws_client_connect_extended(struct lws_context *clients, const char *address,
    2132  int port, int ssl_connection, const char *path,
    2133  const char *host, const char *origin,
    2134  const char *protocol, int ietf_version_or_minus_one,
    2135  void *userdata) LWS_WARN_DEPRECATED;
    2136 
    2162 LWS_VISIBLE LWS_EXTERN int
    2164  struct lws_vhost *vhost);
    2165 
    2166 LWS_VISIBLE LWS_EXTERN int
    2167 lws_http_client_read(struct lws *wsi, char **buf, int *len);
    2168 
    2176 LWS_VISIBLE LWS_EXTERN unsigned int
    2177 lws_http_client_http_response(struct lws *wsi);
    2178 
    2179 LWS_VISIBLE LWS_EXTERN void
    2180 lws_client_http_body_pending(struct lws *wsi, int something_left_to_send);
    2181 
    2202 
    2211 
    2244 LWS_VISIBLE LWS_EXTERN int
    2245 lws_service(struct lws_context *context, int timeout_ms);
    2246 
    2258 LWS_VISIBLE LWS_EXTERN int
    2259 lws_service_tsi(struct lws_context *context, int timeout_ms, int tsi);
    2260 
    2276 LWS_VISIBLE LWS_EXTERN void
    2277 lws_cancel_service_pt(struct lws *wsi);
    2278 
    2290 LWS_VISIBLE LWS_EXTERN void
    2291 lws_cancel_service(struct lws_context *context);
    2292 
    2319 LWS_VISIBLE LWS_EXTERN int
    2320 lws_service_fd(struct lws_context *context, struct lws_pollfd *pollfd);
    2321 
    2331 LWS_VISIBLE LWS_EXTERN int
    2332 lws_service_fd_tsi(struct lws_context *context, struct lws_pollfd *pollfd,
    2333  int tsi);
    2334 
    2352 LWS_VISIBLE LWS_EXTERN int
    2353 lws_service_adjust_timeout(struct lws_context *context, int timeout_ms, int tsi);
    2354 
    2355 /* Backwards compatibility */
    2356 #define lws_plat_service_tsi lws_service_tsi
    2357 
    2359 
    2365 
    2372 
    2384 LWS_VISIBLE LWS_EXTERN const char *
    2385 lws_get_mimetype(const char *file, const struct lws_http_mount *m);
    2386 
    2405 LWS_VISIBLE LWS_EXTERN int
    2406 lws_serve_http_file(struct lws *wsi, const char *file, const char *content_type,
    2407  const char *other_headers, int other_headers_len);
    2408 LWS_VISIBLE LWS_EXTERN int
    2409 lws_serve_http_file_fragment(struct lws *wsi);
    2411 
    2422 
    2423 enum http_status {
    2424  HTTP_STATUS_OK = 200,
    2425  HTTP_STATUS_NO_CONTENT = 204,
    2426 
    2427  HTTP_STATUS_MOVED_PERMANENTLY = 301,
    2428  HTTP_STATUS_FOUND = 302,
    2429  HTTP_STATUS_SEE_OTHER = 303,
    2430 
    2431  HTTP_STATUS_BAD_REQUEST = 400,
    2432  HTTP_STATUS_UNAUTHORIZED,
    2433  HTTP_STATUS_PAYMENT_REQUIRED,
    2434  HTTP_STATUS_FORBIDDEN,
    2435  HTTP_STATUS_NOT_FOUND,
    2436  HTTP_STATUS_METHOD_NOT_ALLOWED,
    2437  HTTP_STATUS_NOT_ACCEPTABLE,
    2438  HTTP_STATUS_PROXY_AUTH_REQUIRED,
    2439  HTTP_STATUS_REQUEST_TIMEOUT,
    2440  HTTP_STATUS_CONFLICT,
    2441  HTTP_STATUS_GONE,
    2442  HTTP_STATUS_LENGTH_REQUIRED,
    2443  HTTP_STATUS_PRECONDITION_FAILED,
    2444  HTTP_STATUS_REQ_ENTITY_TOO_LARGE,
    2445  HTTP_STATUS_REQ_URI_TOO_LONG,
    2446  HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE,
    2447  HTTP_STATUS_REQ_RANGE_NOT_SATISFIABLE,
    2448  HTTP_STATUS_EXPECTATION_FAILED,
    2449 
    2450  HTTP_STATUS_INTERNAL_SERVER_ERROR = 500,
    2451  HTTP_STATUS_NOT_IMPLEMENTED,
    2452  HTTP_STATUS_BAD_GATEWAY,
    2453  HTTP_STATUS_SERVICE_UNAVAILABLE,
    2454  HTTP_STATUS_GATEWAY_TIMEOUT,
    2455  HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED,
    2456 };
    2457 
    2459  char *p;
    2460  int len;
    2461  int max_len;
    2462  int final;
    2463 };
    2464 
    2465 typedef const char *(*lws_process_html_state_cb)(void *data, int index);
    2466 
    2468  char *start;
    2469  char swallow[16];
    2470  int pos;
    2471  void *data;
    2472  const char * const *vars;
    2475  lws_process_html_state_cb replace;
    2476 };
    2477 
    2482 LWS_VISIBLE LWS_EXTERN int
    2484  struct lws_process_html_state *s);
    2486 
    2519 
    2527 struct lws_tokens {
    2528  char *token;
    2530 };
    2531 
    2532 /* enum lws_token_indexes
    2533  * these have to be kept in sync with lextable.h / minilex.c
    2534  *
    2535  * NOTE: These public enums are part of the abi. If you want to add one,
    2536  * add it at where specified so existing users are unaffected.
    2537  */
    2538 enum lws_token_indexes {
    2539  WSI_TOKEN_GET_URI = 0,
    2540  WSI_TOKEN_POST_URI = 1,
    2541  WSI_TOKEN_OPTIONS_URI = 2,
    2542  WSI_TOKEN_HOST = 3,
    2543  WSI_TOKEN_CONNECTION = 4,
    2544  WSI_TOKEN_UPGRADE = 5,
    2545  WSI_TOKEN_ORIGIN = 6,
    2546  WSI_TOKEN_DRAFT = 7,
    2547  WSI_TOKEN_CHALLENGE = 8,
    2548  WSI_TOKEN_EXTENSIONS = 9,
    2549  WSI_TOKEN_KEY1 = 10,
    2550  WSI_TOKEN_KEY2 = 11,
    2551  WSI_TOKEN_PROTOCOL = 12,
    2552  WSI_TOKEN_ACCEPT = 13,
    2553  WSI_TOKEN_NONCE = 14,
    2554  WSI_TOKEN_HTTP = 15,
    2555  WSI_TOKEN_HTTP2_SETTINGS = 16,
    2556  WSI_TOKEN_HTTP_ACCEPT = 17,
    2557  WSI_TOKEN_HTTP_AC_REQUEST_HEADERS = 18,
    2558  WSI_TOKEN_HTTP_IF_MODIFIED_SINCE = 19,
    2559  WSI_TOKEN_HTTP_IF_NONE_MATCH = 20,
    2560  WSI_TOKEN_HTTP_ACCEPT_ENCODING = 21,
    2561  WSI_TOKEN_HTTP_ACCEPT_LANGUAGE = 22,
    2562  WSI_TOKEN_HTTP_PRAGMA = 23,
    2563  WSI_TOKEN_HTTP_CACHE_CONTROL = 24,
    2564  WSI_TOKEN_HTTP_AUTHORIZATION = 25,
    2565  WSI_TOKEN_HTTP_COOKIE = 26,
    2566  WSI_TOKEN_HTTP_CONTENT_LENGTH = 27,
    2567  WSI_TOKEN_HTTP_CONTENT_TYPE = 28,
    2568  WSI_TOKEN_HTTP_DATE = 29,
    2569  WSI_TOKEN_HTTP_RANGE = 30,
    2570  WSI_TOKEN_HTTP_REFERER = 31,
    2571  WSI_TOKEN_KEY = 32,
    2572  WSI_TOKEN_VERSION = 33,
    2573  WSI_TOKEN_SWORIGIN = 34,
    2574 
    2575  WSI_TOKEN_HTTP_COLON_AUTHORITY = 35,
    2576  WSI_TOKEN_HTTP_COLON_METHOD = 36,
    2577  WSI_TOKEN_HTTP_COLON_PATH = 37,
    2578  WSI_TOKEN_HTTP_COLON_SCHEME = 38,
    2579  WSI_TOKEN_HTTP_COLON_STATUS = 39,
    2580 
    2581  WSI_TOKEN_HTTP_ACCEPT_CHARSET = 40,
    2582  WSI_TOKEN_HTTP_ACCEPT_RANGES = 41,
    2583  WSI_TOKEN_HTTP_ACCESS_CONTROL_ALLOW_ORIGIN = 42,
    2584  WSI_TOKEN_HTTP_AGE = 43,
    2585  WSI_TOKEN_HTTP_ALLOW = 44,
    2586  WSI_TOKEN_HTTP_CONTENT_DISPOSITION = 45,
    2587  WSI_TOKEN_HTTP_CONTENT_ENCODING = 46,
    2588  WSI_TOKEN_HTTP_CONTENT_LANGUAGE = 47,
    2589  WSI_TOKEN_HTTP_CONTENT_LOCATION = 48,
    2590  WSI_TOKEN_HTTP_CONTENT_RANGE = 49,
    2591  WSI_TOKEN_HTTP_ETAG = 50,
    2592  WSI_TOKEN_HTTP_EXPECT = 51,
    2593  WSI_TOKEN_HTTP_EXPIRES = 52,
    2594  WSI_TOKEN_HTTP_FROM = 53,
    2595  WSI_TOKEN_HTTP_IF_MATCH = 54,
    2596  WSI_TOKEN_HTTP_IF_RANGE = 55,
    2597  WSI_TOKEN_HTTP_IF_UNMODIFIED_SINCE = 56,
    2598  WSI_TOKEN_HTTP_LAST_MODIFIED = 57,
    2599  WSI_TOKEN_HTTP_LINK = 58,
    2600  WSI_TOKEN_HTTP_LOCATION = 59,
    2601  WSI_TOKEN_HTTP_MAX_FORWARDS = 60,
    2602  WSI_TOKEN_HTTP_PROXY_AUTHENTICATE = 61,
    2603  WSI_TOKEN_HTTP_PROXY_AUTHORIZATION = 62,
    2604  WSI_TOKEN_HTTP_REFRESH = 63,
    2605  WSI_TOKEN_HTTP_RETRY_AFTER = 64,
    2606  WSI_TOKEN_HTTP_SERVER = 65,
    2607  WSI_TOKEN_HTTP_SET_COOKIE = 66,
    2608  WSI_TOKEN_HTTP_STRICT_TRANSPORT_SECURITY = 67,
    2609  WSI_TOKEN_HTTP_TRANSFER_ENCODING = 68,
    2610  WSI_TOKEN_HTTP_USER_AGENT = 69,
    2611  WSI_TOKEN_HTTP_VARY = 70,
    2612  WSI_TOKEN_HTTP_VIA = 71,
    2613  WSI_TOKEN_HTTP_WWW_AUTHENTICATE = 72,
    2614 
    2615  WSI_TOKEN_PATCH_URI = 73,
    2616  WSI_TOKEN_PUT_URI = 74,
    2617  WSI_TOKEN_DELETE_URI = 75,
    2618 
    2619  WSI_TOKEN_HTTP_URI_ARGS = 76,
    2620  WSI_TOKEN_PROXY = 77,
    2621  WSI_TOKEN_HTTP_X_REAL_IP = 78,
    2622  WSI_TOKEN_HTTP1_0 = 79,
    2623  WSI_TOKEN_X_FORWARDED_FOR = 80,
    2624 
    2625  /****** add new things just above ---^ ******/
    2626 
    2627  /* use token storage to stash these internally, not for
    2628  * user use */
    2629 
    2630  _WSI_TOKEN_CLIENT_SENT_PROTOCOLS,
    2631  _WSI_TOKEN_CLIENT_PEER_ADDRESS,
    2632  _WSI_TOKEN_CLIENT_URI,
    2633  _WSI_TOKEN_CLIENT_HOST,
    2634  _WSI_TOKEN_CLIENT_ORIGIN,
    2635  _WSI_TOKEN_CLIENT_METHOD,
    2636 
    2637  /* always last real token index*/
    2638  WSI_TOKEN_COUNT,
    2639 
    2640  /* parser state additions, no storage associated */
    2641  WSI_TOKEN_NAME_PART,
    2642  WSI_TOKEN_SKIPPING,
    2643  WSI_TOKEN_SKIPPING_SAW_CR,
    2644  WSI_PARSING_COMPLETE,
    2645  WSI_INIT_TOKEN_MUXURL,
    2646 };
    2647 
    2649  unsigned short token_limit[WSI_TOKEN_COUNT];
    2650 };
    2651 
    2657 LWS_VISIBLE LWS_EXTERN const unsigned char *
    2658 lws_token_to_string(enum lws_token_indexes token);
    2659 
    2660 
    2669 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2670 lws_hdr_total_length(struct lws *wsi, enum lws_token_indexes h);
    2671 
    2681 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2682 lws_hdr_fragment_length(struct lws *wsi, enum lws_token_indexes h, int frag_idx);
    2683 
    2697 LWS_VISIBLE LWS_EXTERN int
    2698 lws_hdr_copy(struct lws *wsi, char *dest, int len, enum lws_token_indexes h);
    2699 
    2717 LWS_VISIBLE LWS_EXTERN int
    2718 lws_hdr_copy_fragment(struct lws *wsi, char *dest, int len,
    2719  enum lws_token_indexes h, int frag_idx);
    2720 
    2731 LWS_VISIBLE LWS_EXTERN const char *
    2732 lws_get_urlarg_by_name(struct lws *wsi, const char *name, char *buf, int len);
    2734 
    2749 
    2760 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2761 lws_add_http_header_status(struct lws *wsi,
    2762  unsigned int code, unsigned char **p,
    2763  unsigned char *end);
    2776 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2777 lws_add_http_header_by_name(struct lws *wsi, const unsigned char *name,
    2778  const unsigned char *value, int length,
    2779  unsigned char **p, unsigned char *end);
    2793 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2794 lws_add_http_header_by_token(struct lws *wsi, enum lws_token_indexes token,
    2795  const unsigned char *value, int length,
    2796  unsigned char **p, unsigned char *end);
    2807 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2808 lws_add_http_header_content_length(struct lws *wsi,
    2809  unsigned long content_length,
    2810  unsigned char **p, unsigned char *end);
    2820 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2821 lws_finalize_http_header(struct lws *wsi, unsigned char **p,
    2822  unsigned char *end);
    2824 
    2843 
    2853 };
    2854 
    2868 typedef int (*lws_spa_fileupload_cb)(void *data, const char *name,
    2869  const char *filename, char *buf, int len,
    2870  enum lws_spa_fileupload_states state);
    2871 
    2874 struct lws_spa;
    2875 
    2894 LWS_VISIBLE LWS_EXTERN struct lws_spa *
    2895 lws_spa_create(struct lws *wsi, const char * const *param_names,
    2896  int count_params, int max_storage, lws_spa_fileupload_cb opt_cb,
    2897  void *opt_data);
    2898 
    2906 LWS_VISIBLE LWS_EXTERN int
    2907 lws_spa_process(struct lws_spa *spa, const char *in, int len);
    2908 
    2914 LWS_VISIBLE LWS_EXTERN int
    2915 lws_spa_finalize(struct lws_spa *spa);
    2916 
    2923 LWS_VISIBLE LWS_EXTERN int
    2924 lws_spa_get_length(struct lws_spa *spa, int n);
    2925 
    2931 LWS_VISIBLE LWS_EXTERN const char *
    2932 lws_spa_get_string(struct lws_spa *spa, int n);
    2933 
    2939 LWS_VISIBLE LWS_EXTERN int
    2940 lws_spa_destroy(struct lws_spa *spa);
    2942 
    2953 
    2964 LWS_VISIBLE LWS_EXTERN const char *
    2965 lws_urlencode(char *escaped, const char *string, int len);
    2966 
    2967 /*
    2968  * URLDECODE 1 / 2
    2969  *
    2970  * This simple urldecode only operates until the first '\0' and requires the
    2971  * data to exist all at once
    2972  */
    2985 LWS_VISIBLE LWS_EXTERN int
    2986 lws_urldecode(char *string, const char *escaped, int len);
    2988 
    2997 LWS_VISIBLE LWS_EXTERN int
    2998 lws_return_http_status(struct lws *wsi, unsigned int code,
    2999  const char *html_body);
    3000 
    3011 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3012 lws_http_redirect(struct lws *wsi, int code, const unsigned char *loc, int len,
    3013  unsigned char **p, unsigned char *end);
    3014 
    3023 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3024 lws_http_transaction_completed(struct lws *wsi);
    3026 
    3034 
    3045 LWS_VISIBLE LWS_EXTERN const char *
    3046 lws_sql_purify(char *escaped, const char *string, int len);
    3047 
    3058 LWS_VISIBLE LWS_EXTERN const char *
    3059 lws_json_purify(char *escaped, const char *string, int len);
    3061 
    3068 
    3070 #ifdef LWS_USE_LIBEV
    3071 typedef void (lws_ev_signal_cb_t)(EV_P_ struct ev_signal *w, int revents);
    3072 
    3073 LWS_VISIBLE LWS_EXTERN int
    3074 lws_ev_sigint_cfg(struct lws_context *context, int use_ev_sigint,
    3075  lws_ev_signal_cb_t *cb);
    3076 
    3077 LWS_VISIBLE LWS_EXTERN int
    3078 lws_ev_initloop(struct lws_context *context, struct ev_loop *loop, int tsi);
    3079 
    3080 LWS_VISIBLE LWS_EXTERN void
    3081 lws_ev_sigint_cb(struct ev_loop *loop, struct ev_signal *watcher, int revents);
    3082 #endif /* LWS_USE_LIBEV */
    3083 
    3085 
    3092 #ifdef LWS_USE_LIBUV
    3094 LWS_VISIBLE LWS_EXTERN int
    3095 lws_uv_sigint_cfg(struct lws_context *context, int use_uv_sigint,
    3096  uv_signal_cb cb);
    3097 
    3098 LWS_VISIBLE LWS_EXTERN void
    3099 lws_libuv_run(const struct lws_context *context, int tsi);
    3100 
    3101 LWS_VISIBLE LWS_EXTERN void
    3102 lws_libuv_stop(struct lws_context *context);
    3103 
    3104 LWS_VISIBLE LWS_EXTERN int
    3105 lws_uv_initloop(struct lws_context *context, uv_loop_t *loop, int tsi);
    3106 
    3107 LWS_VISIBLE LWS_EXTERN uv_loop_t *
    3108 lws_uv_getloop(struct lws_context *context, int tsi);
    3109 
    3110 LWS_VISIBLE LWS_EXTERN void
    3111 lws_uv_sigint_cb(uv_signal_t *watcher, int signum);
    3112 #endif /* LWS_USE_LIBUV */
    3113 
    3120 
    3121 /*
    3122  * NOTE: These public enums are part of the abi. If you want to add one,
    3123  * add it at where specified so existing users are unaffected.
    3124  */
    3125 enum pending_timeout {
    3126  NO_PENDING_TIMEOUT = 0,
    3127  PENDING_TIMEOUT_AWAITING_PROXY_RESPONSE = 1,
    3128  PENDING_TIMEOUT_AWAITING_CONNECT_RESPONSE = 2,
    3129  PENDING_TIMEOUT_ESTABLISH_WITH_SERVER = 3,
    3130  PENDING_TIMEOUT_AWAITING_SERVER_RESPONSE = 4,
    3131  PENDING_TIMEOUT_AWAITING_PING = 5,
    3132  PENDING_TIMEOUT_CLOSE_ACK = 6,
    3133  PENDING_TIMEOUT_AWAITING_EXTENSION_CONNECT_RESPONSE = 7,
    3134  PENDING_TIMEOUT_SENT_CLIENT_HANDSHAKE = 8,
    3135  PENDING_TIMEOUT_SSL_ACCEPT = 9,
    3136  PENDING_TIMEOUT_HTTP_CONTENT = 10,
    3137  PENDING_TIMEOUT_AWAITING_CLIENT_HS_SEND = 11,
    3138  PENDING_FLUSH_STORED_SEND_BEFORE_CLOSE = 12,
    3139  PENDING_TIMEOUT_SHUTDOWN_FLUSH = 13,
    3140  PENDING_TIMEOUT_CGI = 14,
    3141  PENDING_TIMEOUT_HTTP_KEEPALIVE_IDLE = 15,
    3142  PENDING_TIMEOUT_WS_PONG_CHECK_SEND_PING = 16,
    3143  PENDING_TIMEOUT_WS_PONG_CHECK_GET_PONG = 17,
    3144  PENDING_TIMEOUT_CLIENT_ISSUE_PAYLOAD = 18,
    3145 
    3146  /****** add new things just above ---^ ******/
    3147 };
    3148 
    3158 LWS_VISIBLE LWS_EXTERN void
    3159 lws_set_timeout(struct lws *wsi, enum pending_timeout reason, int secs);
    3161 
    3167 #if !defined(LWS_SIZEOFPTR)
    3168 #define LWS_SIZEOFPTR (sizeof (void *))
    3169 #endif
    3170 #if !defined(u_int64_t)
    3171 #define u_int64_t unsigned long long
    3172 #endif
    3173 
    3174 #if defined(__x86_64__)
    3175 #define _LWS_PAD_SIZE 16 /* Intel recommended for best performance */
    3176 #else
    3177 #define _LWS_PAD_SIZE LWS_SIZEOFPTR /* Size of a pointer on the target arch */
    3178 #endif
    3179 #define _LWS_PAD(n) (((n) % _LWS_PAD_SIZE) ? \
    3180  ((n) + (_LWS_PAD_SIZE - ((n) % _LWS_PAD_SIZE))) : (n))
    3181 #define LWS_PRE _LWS_PAD(4 + 10)
    3182 /* used prior to 1.7 and retained for backward compatibility */
    3183 #define LWS_SEND_BUFFER_PRE_PADDING LWS_PRE
    3184 #define LWS_SEND_BUFFER_POST_PADDING 0
    3185 
    3186 /*
    3187  * NOTE: These public enums are part of the abi. If you want to add one,
    3188  * add it at where specified so existing users are unaffected.
    3189  */
    3204  /* LWS_WRITE_CLOSE is handled by lws_close_reason() */
    3205  LWS_WRITE_PING = 5,
    3206  LWS_WRITE_PONG = 6,
    3207 
    3208  /* Same as write_http but we know this write ends the transaction */
    3209  LWS_WRITE_HTTP_FINAL = 7,
    3210 
    3211  /* HTTP2 */
    3212 
    3220  /****** add new things just above ---^ ******/
    3221 
    3222  /* flags */
    3223 
    3231 };
    3232 
    3233 
    3320 LWS_VISIBLE LWS_EXTERN int
    3321 lws_write(struct lws *wsi, unsigned char *buf, size_t len,
    3322  enum lws_write_protocol protocol);
    3323 
    3324 /* helper for case where buffer may be const */
    3325 #define lws_write_http(wsi, buf, len) \
    3326  lws_write(wsi, (unsigned char *)(buf), len, LWS_WRITE_HTTP)
    3327 
    3347 
    3360 LWS_VISIBLE LWS_EXTERN int
    3361 lws_callback_on_writable(struct lws *wsi);
    3362 
    3376 LWS_VISIBLE LWS_EXTERN int
    3377 lws_callback_on_writable_all_protocol(const struct lws_context *context,
    3378  const struct lws_protocols *protocol);
    3379 
    3393 LWS_VISIBLE LWS_EXTERN int
    3394 lws_callback_on_writable_all_protocol_vhost(const struct lws_vhost *vhost,
    3395  const struct lws_protocols *protocol);
    3396 
    3409 LWS_VISIBLE LWS_EXTERN int
    3410 lws_callback_all_protocol(struct lws_context *context,
    3411  const struct lws_protocols *protocol, int reason);
    3412 
    3425 LWS_VISIBLE LWS_EXTERN int
    3426 lws_callback_all_protocol_vhost(struct lws_vhost *vh,
    3427  const struct lws_protocols *protocol, int reason);
    3428 
    3442 LWS_VISIBLE LWS_EXTERN int
    3443 lws_callback_vhost_protocols(struct lws *wsi, int reason, void *in, int len);
    3444 
    3445 LWS_VISIBLE LWS_EXTERN int
    3446 lws_callback_http_dummy(struct lws *wsi, enum lws_callback_reasons reason,
    3447  void *user, void *in, size_t len);
    3448 
    3456 LWS_VISIBLE LWS_EXTERN int
    3457 lws_get_socket_fd(struct lws *wsi);
    3458 
    3480 LWS_VISIBLE LWS_EXTERN size_t
    3481 lws_get_peer_write_allowance(struct lws *wsi);
    3483 
    3494 LWS_VISIBLE LWS_EXTERN int
    3495 lws_rx_flow_control(struct lws *wsi, int enable);
    3496 
    3506 LWS_VISIBLE LWS_EXTERN void
    3507 lws_rx_flow_allow_all_protocol(const struct lws_context *context,
    3508  const struct lws_protocols *protocol);
    3509 
    3526 LWS_VISIBLE LWS_EXTERN size_t
    3527 lws_remaining_packet_payload(struct lws *wsi);
    3528 
    3529 
    3538 
    3551 LWS_VISIBLE LWS_EXTERN struct lws *
    3552 lws_adopt_socket(struct lws_context *context, lws_sockfd_type accept_fd);
    3575 LWS_VISIBLE LWS_EXTERN struct lws *
    3576 lws_adopt_socket_readbuf(struct lws_context *context, lws_sockfd_type accept_fd,
    3577  const char *readbuf, size_t len);
    3579 
    3585 
    3596 LWS_VISIBLE LWS_EXTERN const char * LWS_WARN_UNUSED_RESULT
    3597 lws_canonical_hostname(struct lws_context *context);
    3598 
    3613 LWS_VISIBLE LWS_EXTERN void
    3614 lws_get_peer_addresses(struct lws *wsi, lws_sockfd_type fd, char *name,
    3615  int name_len, char *rip, int rip_len);
    3616 
    3627 LWS_VISIBLE LWS_EXTERN const char *
    3628 lws_get_peer_simple(struct lws *wsi, char *name, int namelen);
    3629 #ifndef LWS_WITH_ESP8266
    3630 
    3641 LWS_VISIBLE LWS_EXTERN int
    3642 lws_interface_to_sa(int ipv6, const char *ifname, struct sockaddr_in *addr,
    3643  size_t addrlen);
    3645 #endif
    3646 
    3652 
    3665 LWS_VISIBLE LWS_EXTERN int
    3666 lws_snprintf(char *str, size_t size, const char *format, ...);
    3667 
    3679 LWS_VISIBLE LWS_EXTERN int
    3680 lws_get_random(struct lws_context *context, void *buf, int len);
    3688 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3689 lws_daemonize(const char *_lock_path);
    3695 LWS_VISIBLE LWS_EXTERN const char * LWS_WARN_UNUSED_RESULT
    3697 
    3704 LWS_VISIBLE LWS_EXTERN void *
    3705 lws_wsi_user(struct lws *wsi);
    3706 
    3718 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3719 lws_parse_uri(char *p, const char **prot, const char **ads, int *port,
    3720  const char **path);
    3721 
    3725 LWS_VISIBLE LWS_EXTERN unsigned long
    3726 lws_now_secs(void);
    3727 
    3737 LWS_VISIBLE LWS_EXTERN struct lws_context * LWS_WARN_UNUSED_RESULT
    3738 lws_get_context(const struct lws *wsi);
    3739 
    3749 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3750 lws_get_count_threads(struct lws_context *context);
    3751 
    3759 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    3760 lws_get_parent(const struct lws *wsi);
    3761 
    3768 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    3769 lws_get_child(const struct lws *wsi);
    3770 
    3771 
    3772 /*
    3773  * \deprecated DEPRECATED Note: this is not normally needed as a user api.
    3774  * It's provided in case it is
    3775  * useful when integrating with other app poll loop service code.
    3776  */
    3777 LWS_VISIBLE LWS_EXTERN int
    3778 lws_read(struct lws *wsi, unsigned char *buf, size_t len);
    3779 
    3787 LWS_VISIBLE LWS_EXTERN void
    3788 lws_set_allocator(void *(*realloc)(void *ptr, size_t size));
    3790 
    3796 
    3803 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3804 lws_send_pipe_choked(struct lws *wsi);
    3805 
    3810 LWS_VISIBLE LWS_EXTERN int
    3811 lws_is_final_fragment(struct lws *wsi);
    3812 
    3817 LWS_VISIBLE LWS_EXTERN unsigned char
    3818 lws_get_reserved_bits(struct lws *wsi);
    3819 
    3836 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3837 lws_partial_buffered(struct lws *wsi);
    3838 
    3848 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3849 lws_frame_is_binary(struct lws *wsi);
    3850 
    3859 LWS_VISIBLE LWS_EXTERN int
    3860 lws_is_ssl(struct lws *wsi);
    3865 LWS_VISIBLE LWS_EXTERN int
    3866 lws_is_cgi(struct lws *wsi);
    3868 
    3869 
    3875 #ifdef LWS_SHA1_USE_OPENSSL_NAME
    3877 #define lws_SHA1 SHA1
    3878 #else
    3879 
    3888 LWS_VISIBLE LWS_EXTERN unsigned char *
    3889 lws_SHA1(const unsigned char *d, size_t n, unsigned char *md);
    3890 #endif
    3891 
    3901 LWS_VISIBLE LWS_EXTERN int
    3902 lws_b64_encode_string(const char *in, int in_len, char *out, int out_size);
    3912 LWS_VISIBLE LWS_EXTERN int
    3913 lws_b64_decode_string(const char *in, char *out, int out_size);
    3915 
    3916 
    3926 #ifdef LWS_WITH_CGI
    3927 enum lws_enum_stdinouterr {
    3928  LWS_STDIN = 0,
    3929  LWS_STDOUT = 1,
    3930  LWS_STDERR = 2,
    3931 };
    3932 
    3933 enum lws_cgi_hdr_state {
    3934  LCHS_HEADER,
    3935  LCHS_CR1,
    3936  LCHS_LF1,
    3937  LCHS_CR2,
    3938  LCHS_LF2,
    3939  LHCS_PAYLOAD,
    3940  LCHS_SINGLE_0A,
    3941 };
    3942 
    3944  struct lws **stdwsi;
    3945  enum lws_enum_stdinouterr ch;
    3946  unsigned char *data;
    3947  enum lws_cgi_hdr_state hdr_state;
    3948  int len;
    3949 };
    3950 
    3951 
    3961 LWS_VISIBLE LWS_EXTERN int
    3962 lws_cgi(struct lws *wsi, const char * const *exec_array,
    3963  int script_uri_path_len, int timeout_secs,
    3964  const struct lws_protocol_vhost_options *mp_cgienv);
    3965 
    3971 LWS_VISIBLE LWS_EXTERN int
    3972 lws_cgi_write_split_stdout_headers(struct lws *wsi);
    3973 
    3979 LWS_VISIBLE LWS_EXTERN int
    3980 lws_cgi_kill(struct lws *wsi);
    3981 #endif
    3982 
    3984 
    4001 
    4008  lws_filefd_type (*open)(struct lws *wsi, const char *filename,
    4009  unsigned long *filelen, int flags);
    4013  int (*close)(struct lws *wsi, lws_filefd_type fd);
    4015  unsigned long (*seek_cur)(struct lws *wsi, lws_filefd_type fd,
    4016  long offset_from_cur_pos);
    4018  int (*read)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    4019  unsigned char *buf, unsigned long len);
    4021  int (*write)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    4022  unsigned char *buf, unsigned long len);
    4025  /* Add new things just above here ---^
    4026  * This is part of the ABI, don't needlessly break compatibility */
    4027 };
    4028 
    4034 LWS_VISIBLE LWS_EXTERN struct lws_plat_file_ops * LWS_WARN_UNUSED_RESULT
    4035 lws_get_fops(struct lws_context *context);
    4036 
    4045 static LWS_INLINE lws_filefd_type LWS_WARN_UNUSED_RESULT
    4046 lws_plat_file_open(struct lws *wsi, const char *filename,
    4047  unsigned long *filelen, int flags)
    4048 {
    4049  return lws_get_fops(lws_get_context(wsi))->open(wsi, filename,
    4050  filelen, flags);
    4051 }
    4052 
    4059 static LWS_INLINE int
    4060 lws_plat_file_close(struct lws *wsi, lws_filefd_type fd)
    4061 {
    4062  return lws_get_fops(lws_get_context(wsi))->close(wsi, fd);
    4063 }
    4064 
    4072 static LWS_INLINE unsigned long
    4073 lws_plat_file_seek_cur(struct lws *wsi, lws_filefd_type fd, long offset)
    4074 {
    4075  return lws_get_fops(lws_get_context(wsi))->seek_cur(wsi, fd, offset);
    4076 }
    4086 static LWS_INLINE int LWS_WARN_UNUSED_RESULT
    4087 lws_plat_file_read(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    4088  unsigned char *buf, unsigned long len)
    4089 {
    4090  return lws_get_fops(lws_get_context(wsi))->read(wsi, fd, amount, buf,
    4091  len);
    4092 }
    4102 static LWS_INLINE int LWS_WARN_UNUSED_RESULT
    4103 lws_plat_file_write(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    4104  unsigned char *buf, unsigned long len)
    4105 {
    4106  return lws_get_fops(lws_get_context(wsi))->write(wsi, fd, amount, buf,
    4107  len);
    4108 }
    4110 
    4142 #ifdef LWS_WITH_SMTP
    4143 
    4155 };
    4156 
    4158 struct lws_email {
    4159  void *data;
    4161  uv_loop_t *loop;
    4164  char email_smtp_ip[32];
    4165  char email_helo[32];
    4166  char email_from[100];
    4167  char email_to[100];
    4169  unsigned int max_content_size;
    4172  /* Fill all the callbacks before init */
    4173 
    4174  int (*on_next)(struct lws_email *email);
    4179  int (*on_sent)(struct lws_email *email);
    4184  int (*on_get_body)(struct lws_email *email, char *buf, int len);
    4190  /* private things */
    4191  uv_timer_t timeout_email;
    4193  uv_connect_t email_connect_req;
    4194  uv_tcp_t email_client;
    4196  char email_buf[256];
    4197  char *content;
    4198 };
    4199 
    4209 LWS_VISIBLE LWS_EXTERN int
    4210 lws_email_init(struct lws_email *email, uv_loop_t *loop, int max_content);
    4211 
    4220 LWS_VISIBLE LWS_EXTERN void
    4221 lws_email_check(struct lws_email *email);
    4229 LWS_VISIBLE LWS_EXTERN void
    4230 lws_email_destroy(struct lws_email *email);
    4231 
    4232 #endif
    4233 
    4234 
    4235 #ifdef __cplusplus
    4236 }
    4237 #endif
    4238 
    4239 #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:3925
    +
    Definition: libwebsockets.h:3943
    size_t rx_buffer_size
    Definition: libwebsockets.h:1294
    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
    @@ -74,16 +74,16 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
    Definition: libwebsockets.h:770
    Definition: libwebsockets.h:898
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_daemonize(const char *_lock_path)
    -
    Definition: libwebsockets.h:1923
    -
    Definition: libwebsockets.h:3183
    -
    Definition: libwebsockets.h:4130
    +
    Definition: libwebsockets.h:1930
    +
    Definition: libwebsockets.h:3201
    +
    Definition: libwebsockets.h:4148
    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:236
    -
    unsigned int auth_mask
    Definition: libwebsockets.h:1961
    -
    Definition: libwebsockets.h:3206
    -
    void * data
    Definition: libwebsockets.h:4141
    -
    const char * uri_replace_from
    Definition: libwebsockets.h:2026
    -
    int(* write)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount, unsigned char *buf, unsigned long len)
    Definition: libwebsockets.h:4003
    +
    unsigned int auth_mask
    Definition: libwebsockets.h:1965
    +
    Definition: libwebsockets.h:3224
    +
    void * data
    Definition: libwebsockets.h:4159
    +
    const char * uri_replace_from
    Definition: libwebsockets.h:2043
    +
    int(* write)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount, unsigned char *buf, unsigned long len)
    Definition: libwebsockets.h:4021
    lws_callback_reasons
    Definition: libwebsockets.h:663
    LWS_VISIBLE LWS_EXTERN int lws_hdr_copy_fragment(struct lws *wsi, char *dest, int len, enum lws_token_indexes h, int frag_idx)
    @@ -103,77 +103,77 @@ $(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:747
    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:4161
    +
    int(* on_sent)(struct lws_email *email)
    Definition: libwebsockets.h:4179
    Definition: libwebsockets.h:1434
    -
    struct lws ** pwsi
    Definition: libwebsockets.h:2033
    +
    struct lws ** pwsi
    Definition: libwebsockets.h:2050
    Definition: libwebsockets.h:781
    -
    const char * path
    Definition: libwebsockets.h:2005
    +
    const char * path
    Definition: libwebsockets.h:2022
    LWS_VISIBLE LWS_EXTERN size_t lws_remaining_packet_payload(struct lws *wsi)
    Definition: libwebsockets.h:582
    Definition: libwebsockets.h:1390
    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:4177
    +
    time_t email_connect_started
    Definition: libwebsockets.h:4195
    lws_close_status
    Definition: libwebsockets.h:553
    LWS_VISIBLE LWS_EXTERN int lws_callback_all_protocol(struct lws_context *context, const struct lws_protocols *protocol, int reason)
    Definition: libwebsockets.h:593
    -
    int token_len
    Definition: libwebsockets.h:2512
    +
    int token_len
    Definition: libwebsockets.h:2529
    const struct lws_http_mount * mounts
    Definition: libwebsockets.h:1675
    Definition: libwebsockets.h:922
    LWS_VISIBLE LWS_EXTERN struct lws_context *LWS_WARN_UNUSED_RESULT lws_get_context(const struct lws *wsi)
    -
    const char * value
    Definition: libwebsockets.h:1912
    -
    Definition: libwebsockets.h:2831
    -
    Definition: libwebsockets.h:4135
    +
    const char * value
    Definition: libwebsockets.h:1919
    +
    Definition: libwebsockets.h:2849
    +
    Definition: libwebsockets.h:4153
    const char * username
    Definition: libwebsockets.h:1465
    LWS_VISIBLE LWS_EXTERN struct lws * lws_client_connect_via_info(struct lws_client_connect_info *ccinfo)
    -
    const char * protocol
    Definition: libwebsockets.h:1942
    -
    struct lws ** stdwsi
    Definition: libwebsockets.h:3926
    +
    const char * protocol
    Definition: libwebsockets.h:1949
    +
    struct lws ** stdwsi
    Definition: libwebsockets.h:3944
    LWS_VISIBLE LWS_EXTERN int lws_json_dump_vhost(const struct lws_vhost *vh, char *buf, int len)
    Definition: libwebsockets.h:868
    LWS_VISIBLE LWS_EXTERN const char * lws_get_mimetype(const char *file, const struct lws_http_mount *m)
    Definition: libwebsockets.h:1436
    -
    int cache_max_age
    Definition: libwebsockets.h:1959
    +
    int cache_max_age
    Definition: libwebsockets.h:1963
    long ssl_options_clear
    Definition: libwebsockets.h:1693
    Definition: libwebsockets.h:761
    Definition: libwebsockets.h:1561
    LWS_VISIBLE LWS_EXTERN void lws_context_destroy(struct lws_context *context)
    Definition: libwebsockets.h:609
    -
    char * start
    Definition: libwebsockets.h:2451
    +
    char * start
    Definition: libwebsockets.h:2468
    LWS_VISIBLE LWS_EXTERN void lws_set_allocator(void *(*realloc)(void *ptr, size_t size))
    lws_callback_function * callback
    Definition: libwebsockets.h:1285
    -
    Definition: libwebsockets.h:3173
    +
    Definition: libwebsockets.h:3191
    LWS_VISIBLE LWS_EXTERN int lws_get_socket_fd(struct lws *wsi)
    Definition: libwebsockets.h:959
    -
    const char * protocol
    Definition: libwebsockets.h:2011
    +
    const char * protocol
    Definition: libwebsockets.h:2028
    Definition: libwebsockets.h:948
    unsigned int pt_serv_buf_size
    Definition: libwebsockets.h:1680
    LWS_VISIBLE LWS_EXTERN struct lws * lws_adopt_socket(struct lws_context *context, lws_sockfd_type accept_fd)
    -
    int len
    Definition: libwebsockets.h:2443
    +
    int len
    Definition: libwebsockets.h:2460
    int ka_time
    Definition: libwebsockets.h:1616
    Definition: libwebsockets.h:1510
    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:1695
    int count_extensions
    Definition: libwebsockets.h:1395
    -
    Definition: libwebsockets.h:3177
    -
    int port
    Definition: libwebsockets.h:2001
    -
    struct lws_context * context
    Definition: libwebsockets.h:1997
    +
    Definition: libwebsockets.h:3195
    +
    int port
    Definition: libwebsockets.h:2018
    +
    struct lws_context * context
    Definition: libwebsockets.h:2014
    Definition: libwebsockets.h:1442
    -
    int ietf_version_or_minus_one
    Definition: libwebsockets.h:2013
    +
    int ietf_version_or_minus_one
    Definition: libwebsockets.h:2030
    LWS_VISIBLE LWS_EXTERN int lws_callback_all_protocol_vhost(struct lws_vhost *vh, const struct lws_protocols *protocol, int reason)
    -
    Definition: libwebsockets.h:4128
    -
    Definition: libwebsockets.h:1908
    +
    Definition: libwebsockets.h:4146
    +
    Definition: libwebsockets.h:1915
    LWS_VISIBLE LWS_EXTERN int lws_callback_on_writable(struct lws *wsi)
    -
    const char *const * vars
    Definition: libwebsockets.h:2455
    +
    const char *const * vars
    Definition: libwebsockets.h:2472
    Definition: libwebsockets.h:561
    -
    Definition: libwebsockets.h:1996
    +
    Definition: libwebsockets.h:2013
    Definition: libwebsockets.h:1540
    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:1185
    int len
    Definition: libwebsockets.h:1121
    -
    Definition: libwebsockets.h:1933
    -
    const char * def
    Definition: libwebsockets.h:1940
    +
    Definition: libwebsockets.h:1940
    +
    const char * def
    Definition: libwebsockets.h:1947
    Definition: libwebsockets.h:722
    Definition: libwebsockets.h:1522
    lws_context_options
    Definition: libwebsockets.h:1493
    @@ -182,29 +182,29 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
    Definition: libwebsockets.h:1528
    Definition: libwebsockets.h:888
    const char * option_name
    Definition: libwebsockets.h:1118
    -
    Definition: libwebsockets.h:1921
    +
    Definition: libwebsockets.h:1928
    lws_sockfd_type fd
    Definition: libwebsockets.h:531
    const char * ssl_private_key_password
    Definition: libwebsockets.h:1584
    short events
    Definition: libwebsockets.h:433
    Definition: libwebsockets.h:1403
    const struct lws_extension * extensions
    Definition: libwebsockets.h:1394
    -
    const struct lws_http_mount * mount_next
    Definition: libwebsockets.h:1934
    +
    const struct lws_http_mount * mount_next
    Definition: libwebsockets.h:1941
    LWS_VISIBLE LWS_EXTERN void lws_set_timeout(struct lws *wsi, enum pending_timeout reason, int secs)
    -
    void * userdata
    Definition: libwebsockets.h:2015
    +
    void * userdata
    Definition: libwebsockets.h:2032
    Definition: libwebsockets.h:719
    Definition: libwebsockets.h:906
    LWS_VISIBLE LWS_EXTERN int lws_service_tsi(struct lws_context *context, int timeout_ms, int tsi)
    -
    unsigned char * data
    Definition: libwebsockets.h:3928
    -
    const struct lws_protocol_vhost_options * extra_mimetypes
    Definition: libwebsockets.h:1952
    +
    unsigned char * data
    Definition: libwebsockets.h:3946
    +
    const struct lws_protocol_vhost_options * extra_mimetypes
    Definition: libwebsockets.h:1956
    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:712
    LWS_VISIBLE LWS_EXTERN const char * lws_urlencode(char *escaped, const char *string, int len)
    Definition: libwebsockets.h:793
    -
    uv_loop_t * loop
    Definition: libwebsockets.h:4143
    +
    uv_loop_t * loop
    Definition: libwebsockets.h:4161
    Definition: libwebsockets.h:891
    Definition: libwebsockets.h:72
    -
    Definition: libwebsockets.h:3209
    -
    int pos
    Definition: libwebsockets.h:2453
    +
    Definition: libwebsockets.h:3227
    +
    int pos
    Definition: libwebsockets.h:2470
    struct lws_plugin * list
    Definition: libwebsockets.h:1404
    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:1636
    @@ -217,26 +217,26 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
    Definition: libwebsockets.h:1097
    int ka_probes
    Definition: libwebsockets.h:1619
    void onError(Socket *s, socket_error_t err)
    -
    const char * origin
    Definition: libwebsockets.h:2009
    +
    const char * origin
    Definition: libwebsockets.h:2026
    SHORT revents
    Definition: libwebsockets.h:419
    -
    const char * method
    Definition: libwebsockets.h:2019
    +
    const char * method
    Definition: libwebsockets.h:2036
    LWS_VISIBLE LWS_EXTERN const char * lws_spa_get_string(struct lws_spa *spa, int n)
    Definition: libwebsockets.h:1191
    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:928
    -
    const struct lws_extension * client_exts
    Definition: libwebsockets.h:2017
    -
    unsigned char origin_protocol
    Definition: libwebsockets.h:1968
    +
    const struct lws_extension * client_exts
    Definition: libwebsockets.h:2034
    +
    unsigned char origin_protocol
    Definition: libwebsockets.h:1972
    const char * log_filepath
    Definition: libwebsockets.h:1672
    Definition: libwebsockets.h:768
    -
    unsigned int max_content_size
    Definition: libwebsockets.h:4151
    +
    unsigned int max_content_size
    Definition: libwebsockets.h:4169
    int option_index
    Definition: libwebsockets.h:1119
    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:764
    -
    const char * uri_replace_to
    Definition: libwebsockets.h:2029
    -
    struct lws * parent_wsi
    Definition: libwebsockets.h:2022
    +
    const char * uri_replace_to
    Definition: libwebsockets.h:2046
    +
    struct lws * parent_wsi
    Definition: libwebsockets.h:2039
    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:4174
    +
    enum lwsgs_smtp_states estate
    Definition: libwebsockets.h:4192
    LWS_VISIBLE LWS_EXTERN int lws_spa_finalize(struct lws_spa *spa)
    Definition: libwebsockets.h:664
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_get_count_threads(struct lws_context *context)
    @@ -244,29 +244,29 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
    char name[64]
    Definition: libwebsockets.h:1410
    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:4178
    +
    char email_buf[256]
    Definition: libwebsockets.h:4196
    LWS_VISIBLE LWS_EXTERN int lws_is_ssl(struct lws *wsi)
    Definition: libwebsockets.h:1499
    -
    int(* close)(struct lws *wsi, lws_filefd_type fd)
    Definition: libwebsockets.h:3995
    +
    int(* close)(struct lws *wsi, lws_filefd_type fd)
    Definition: libwebsockets.h:4013
    uv_lib_t lib
    Definition: libwebsockets.h:1406
    x509_crt certificate
    Definition: libwebsockets.h:238
    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:4129
    +
    Definition: libwebsockets.h:4147
    LWS_VISIBLE LWS_EXTERN int lws_is_cgi(struct lws *wsi)
    -
    int ssl_connection
    Definition: libwebsockets.h:2003
    +
    int ssl_connection
    Definition: libwebsockets.h:2020
    Definition: libwebsockets.h:1458
    SSL_CTX * provided_client_ssl_ctx
    Definition: libwebsockets.h:1627
    LWS_VISIBLE LWS_EXTERN int lws_rx_flow_control(struct lws *wsi, int enable)
    -
    Definition: libwebsockets.h:2441
    +
    Definition: libwebsockets.h:2458
    LWS_VISIBLE LWS_EXTERN struct lws_plat_file_ops *LWS_WARN_UNUSED_RESULT lws_get_fops(struct lws_context *context)
    Definition: libwebsockets.h:530
    -
    const struct lws_protocol_vhost_options * cgienv
    Definition: libwebsockets.h:1948
    -
    const char * name
    Definition: libwebsockets.h:1911
    -
    unsigned char mountpoint_len
    Definition: libwebsockets.h:1969
    -
    Definition: libwebsockets.h:3180
    +
    const struct lws_protocol_vhost_options * cgienv
    Definition: libwebsockets.h:1952
    +
    const char * name
    Definition: libwebsockets.h:1918
    +
    unsigned char mountpoint_len
    Definition: libwebsockets.h:1973
    +
    Definition: libwebsockets.h:3198
    Definition: libwebsockets.h:1517
    lws_sockfd_type fd
    Definition: libwebsockets.h:417
    -
    Definition: libwebsockets.h:1922
    +
    Definition: libwebsockets.h:1929
    LWS_VISIBLE LWS_EXTERN int lws_is_final_fragment(struct lws *wsi)
    const struct lws_extension * extensions
    Definition: libwebsockets.h:1578
    Definition: libwebsockets.h:1501
    @@ -281,14 +281,14 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
    const char * start
    Definition: libwebsockets.h:1120
    const char * ssl_cipher_list
    Definition: libwebsockets.h:1598
    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:1936
    +
    const char * mountpoint
    Definition: libwebsockets.h:1943
    const char * http_proxy_address
    Definition: libwebsockets.h:1602
    rsa_context key
    Definition: libwebsockets.h:239
    const char * ssl_cert_filepath
    Definition: libwebsockets.h:1586
    const char * ecdh_curve
    Definition: libwebsockets.h:1657
    -
    int cgi_timeout
    Definition: libwebsockets.h:1957
    -
    Definition: libwebsockets.h:1924
    +
    int cgi_timeout
    Definition: libwebsockets.h:1961
    +
    Definition: libwebsockets.h:1931
    Definition: libwebsockets.h:1443
    Definition: libwebsockets.h:431
    Definition: libwebsockets.h:587
    @@ -305,16 +305,16 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
    LWS_VISIBLE LWS_EXTERN int lwsl_timestamp(int level, char *p, int len)
    Definition: libwebsockets.h:1004
    Definition: libwebsockets.h:1538
    -
    uv_timer_t timeout_email
    Definition: libwebsockets.h:4173
    +
    uv_timer_t timeout_email
    Definition: libwebsockets.h:4191
    Definition: libwebsockets.h:1508
    short max_http_header_pool
    Definition: libwebsockets.h:1639
    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:2442
    +
    char * p
    Definition: libwebsockets.h:2459
    x509_crt ca
    Definition: libwebsockets.h:237
    size_t per_session_data_size
    Definition: libwebsockets.h:1289
    Definition: libwebsockets.h:571
    const struct lws_protocol_vhost_options * reject_service_keywords
    Definition: libwebsockets.h:1711
    -
    lwsgs_smtp_states
    Definition: libwebsockets.h:4127
    +
    lwsgs_smtp_states
    Definition: libwebsockets.h:4145
    Definition: libwebsockets.h:1520
    Definition: libwebsockets.h:844
    LWS_VISIBLE LWS_EXTERN int lws_snprintf(char *str, size_t size, const char *format,...)
    @@ -326,14 +326,14 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
    const char * email
    Definition: libwebsockets.h:1466
    LWS_VISIBLE LWS_EXTERN int lws_get_random(struct lws_context *context, void *buf, int len)
    Definition: libwebsockets.h:558
    -
    uv_connect_t email_connect_req
    Definition: libwebsockets.h:4175
    +
    uv_connect_t email_connect_req
    Definition: libwebsockets.h:4193
    const char * server_string
    Definition: libwebsockets.h:1677
    Definition: libwebsockets.h:1531
    SHORT events
    Definition: libwebsockets.h:418
    Definition: libwebsockets.h:735
    Definition: libwebsockets.h:1515
    const char * vhost_name
    Definition: libwebsockets.h:1659
    -
    Definition: libwebsockets.h:1925
    +
    Definition: libwebsockets.h:1932
    LWS_VISIBLE LWS_EXTERN const struct lws_protocols * lws_get_protocol(struct lws *wsi)
    Definition: libwebsockets.h:1441
    Definition: libwebsockets.h:1463
    @@ -344,12 +344,12 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
    int ka_interval
    Definition: libwebsockets.h:1623
    Definition: libwebsockets.h:1440
    int uid
    Definition: libwebsockets.h:1609
    -
    Definition: libwebsockets.h:2833
    +
    Definition: libwebsockets.h:2851
    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:1282
    LWS_VISIBLE LWS_EXTERN int lws_init_vhost_client_ssl(const struct lws_context_creation_info *info, struct lws_vhost *vhost)
    -
    Definition: libwebsockets.h:4133
    +
    Definition: libwebsockets.h:4151
    unsigned int http_proxy_port
    Definition: libwebsockets.h:1605
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_partial_buffered(struct lws *wsi)
    unsigned int timeout_secs
    Definition: libwebsockets.h:1652
    @@ -357,45 +357,45 @@ $(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:1611
    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:1910
    +
    const struct lws_protocol_vhost_options * options
    Definition: libwebsockets.h:1917
    int prev_events
    Definition: libwebsockets.h:533
    int keepalive_timeout
    Definition: libwebsockets.h:1669
    Definition: libwebsockets.h:1447
    Definition: libwebsockets.h:1108
    const struct lws_protocol_vhost_options * headers
    Definition: libwebsockets.h:1707
    -
    Definition: libwebsockets.h:2630
    +
    Definition: libwebsockets.h:2648
    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:1666
    -
    const char * basic_auth_login_file
    Definition: libwebsockets.h:1945
    -
    const char * host
    Definition: libwebsockets.h:2007
    +
    const char * basic_auth_login_file
    Definition: libwebsockets.h:1975
    +
    const char * host
    Definition: libwebsockets.h:2024
    Definition: libwebsockets.h:1117
    Definition: libwebsockets.h:597
    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:3930
    +
    int len
    Definition: libwebsockets.h:3948
    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:1567
    -
    Definition: libwebsockets.h:3989
    +
    Definition: libwebsockets.h:4007
    LWS_VISIBLE LWS_EXTERN void lwsl_hexdump(void *buf, size_t len)
    Definition: libwebsockets.h:1009
    -
    lws_spa_fileupload_states
    Definition: libwebsockets.h:2828
    +
    lws_spa_fileupload_states
    Definition: libwebsockets.h:2846
    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:555
    Definition: libwebsockets.h:564
    LWS_VISIBLE LWS_EXTERN const char * lws_sql_purify(char *escaped, const char *string, int len)
    -
    uv_tcp_t email_client
    Definition: libwebsockets.h:4176
    +
    uv_tcp_t email_client
    Definition: libwebsockets.h:4194
    LWS_VISIBLE LWS_EXTERN int lws_json_dump_context(const struct lws_context *context, char *buf, int len)
    Definition: libwebsockets.h:416
    Definition: libwebsockets.h:668
    -
    lws_filefd_type(* open)(struct lws *wsi, const char *filename, unsigned long *filelen, int flags)
    Definition: libwebsockets.h:3990
    -
    lws_write_protocol
    Definition: libwebsockets.h:3172
    +
    lws_filefd_type(* open)(struct lws *wsi, const char *filename, unsigned long *filelen, int flags)
    Definition: libwebsockets.h:4008
    +
    lws_write_protocol
    Definition: libwebsockets.h:3190
    const char * client_offer
    Definition: libwebsockets.h:1194
    -
    int(* read)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount, unsigned char *buf, unsigned long len)
    Definition: libwebsockets.h:4000
    +
    int(* read)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount, unsigned char *buf, unsigned long len)
    Definition: libwebsockets.h:4018
    LWS_VISIBLE LWS_EXTERN void lws_cancel_service(struct lws_context *context)
    -
    Definition: libwebsockets.h:2829
    +
    Definition: libwebsockets.h:2847
    Definition: libwebsockets.h:569
    -
    const char * origin
    Definition: libwebsockets.h:1938
    +
    const char * origin
    Definition: libwebsockets.h:1945
    const char * name
    Definition: libwebsockets.h:1109
    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)
    @@ -404,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:745
    const char * name
    Definition: libwebsockets.h:1192
    -
    Definition: libwebsockets.h:4132
    +
    Definition: libwebsockets.h:4150
    short revents
    Definition: libwebsockets.h:434
    lws_extension_callback_function * callback
    Definition: libwebsockets.h:1193
    long ssl_options_set
    Definition: libwebsockets.h:1691
    @@ -412,65 +412,66 @@ $(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:1451
    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:1919
    +
    lws_mount_protocols
    Definition: libwebsockets.h:1926
    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:432
    unsigned int max_http_header_data2
    Definition: libwebsockets.h:1686
    -
    Definition: libwebsockets.h:1920
    +
    Definition: libwebsockets.h:1927
    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:1954
    +
    const struct lws_protocol_vhost_options * interpret
    Definition: libwebsockets.h:1958
    +
    void * external_baggage_free_on_destroy
    Definition: libwebsockets.h:1718
    LWS_VISIBLE LWS_EXTERN int lws_service(struct lws_context *context, int timeout_ms)
    Definition: libwebsockets.h:1513
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_http_transaction_completed(struct lws *wsi)
    -
    int count_vars
    Definition: libwebsockets.h:2456
    +
    int count_vars
    Definition: libwebsockets.h:2473
    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:2510
    +
    Definition: libwebsockets.h:2527
    LWS_VISIBLE LWS_EXTERN struct lws_context * lws_create_context(struct lws_context_creation_info *info)
    Definition: libwebsockets.h:724
    -
    void * data
    Definition: libwebsockets.h:2454
    -
    char * content
    Definition: libwebsockets.h:4179
    +
    void * data
    Definition: libwebsockets.h:2471
    +
    char * content
    Definition: libwebsockets.h:4197
    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:1581
    -
    Definition: libwebsockets.h:4140
    -
    const char * address
    Definition: libwebsockets.h:1999
    -
    unsigned long(* seek_cur)(struct lws *wsi, lws_filefd_type fd, long offset_from_cur_pos)
    Definition: libwebsockets.h:3997
    +
    Definition: libwebsockets.h:4158
    +
    const char * address
    Definition: libwebsockets.h:2016
    +
    unsigned long(* seek_cur)(struct lws *wsi, lws_filefd_type fd, long offset_from_cur_pos)
    Definition: libwebsockets.h:4015
    void * user
    Definition: libwebsockets.h:1310
    int events
    Definition: libwebsockets.h:532
    LWS_VISIBLE LWS_EXTERN unsigned int lws_http_client_http_response(struct lws *wsi)
    -
    int(* on_get_body)(struct lws_email *email, char *buf, int len)
    Definition: libwebsockets.h:4166
    -
    Definition: libwebsockets.h:1926
    +
    int(* on_get_body)(struct lws_email *email, char *buf, int len)
    Definition: libwebsockets.h:4184
    +
    Definition: libwebsockets.h:1933
    void * user
    Definition: libwebsockets.h:1613
    -
    Definition: libwebsockets.h:4136
    -
    Definition: libwebsockets.h:3195
    -
    char * token
    Definition: libwebsockets.h:2511
    +
    Definition: libwebsockets.h:4154
    +
    Definition: libwebsockets.h:3213
    +
    char * token
    Definition: libwebsockets.h:2528
    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:1393
    void * l
    Definition: libwebsockets.h:1408
    const char * ssl_private_key_filepath
    Definition: libwebsockets.h:1590
    -
    int max_len
    Definition: libwebsockets.h:2444
    +
    int max_len
    Definition: libwebsockets.h:2461
    Definition: libwebsockets.h:726
    -
    const struct lws_protocol_vhost_options * next
    Definition: libwebsockets.h:1909
    +
    const struct lws_protocol_vhost_options * next
    Definition: libwebsockets.h:1916
    Definition: libwebsockets.h:737
    LWS_VISIBLE LWS_EXTERN void lws_rx_flow_allow_all_protocol(const struct lws_context *context, const struct lws_protocols *protocol)
    -
    Definition: libwebsockets.h:2450
    +
    Definition: libwebsockets.h:2467
    LWS_VISIBLE LWS_EXTERN const char *LWS_WARN_UNUSED_RESULT lws_canonical_hostname(struct lws_context *context)
    Definition: libwebsockets.h:936
    const char * ssl_ca_filepath
    Definition: libwebsockets.h:1596
    -
    lws_client_connect_ssl_connection_flags
    Definition: libwebsockets.h:1986
    +
    lws_client_connect_ssl_connection_flags
    Definition: libwebsockets.h:2003
    int gid
    Definition: libwebsockets.h:1607
    -
    struct lws_vhost * vhost
    Definition: libwebsockets.h:2031
    +
    struct lws_vhost * vhost
    Definition: libwebsockets.h:2048
    int lws_callback_function(struct lws *wsi, enum lws_callback_reasons reason, void *user, void *in, size_t len)
    Definition: libwebsockets.h:1043
    LWS_VISIBLE LWS_EXTERN void lws_cancel_service_pt(struct lws *wsi)
    Definition: libwebsockets.h:1533
    Definition: libwebsockets.h:605
    -
    Definition: libwebsockets.h:4131
    +
    Definition: libwebsockets.h:4149
    unsigned int api_magic
    Definition: libwebsockets.h:1391
    Definition: libwebsockets.h:1536
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_send_pipe_choked(struct lws *wsi)
    -
    Definition: libwebsockets.h:4134
    -
    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:2850
    +
    Definition: libwebsockets.h:4152
    +
    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:2868
    diff --git a/doc/html/menudata.js b/doc/html/menudata.js index 6df2f1d..b6cddb9 100644 --- a/doc/html/menudata.js +++ b/doc/html/menudata.js @@ -1,69 +1,69 @@ var menudata={children:[ -{text:'Main Page',url:'index.html'}, -{text:'Related Pages',url:'pages.html'}, -{text:'Modules',url:'modules.html'}, -{text:'Data Structures',url:'annotated.html',children:[ -{text:'Data Structures',url:'annotated.html'}, -{text:'Data Structure Index',url:'classes.html'}, -{text:'Class Hierarchy',url:'hierarchy.html'}, -{text:'Data Fields',url:'functions.html',children:[ -{text:'All',url:'functions.html',children:[ -{text:'_',url:'functions.html#index__'}, -{text:'a',url:'functions.html#index_a'}, -{text:'b',url:'functions.html#index_b'}, -{text:'c',url:'functions.html#index_c'}, -{text:'d',url:'functions.html#index_d'}, -{text:'e',url:'functions.html#index_e'}, -{text:'f',url:'functions.html#index_f'}, -{text:'g',url:'functions.html#index_g'}, -{text:'h',url:'functions.html#index_h'}, -{text:'i',url:'functions.html#index_i'}, -{text:'k',url:'functions.html#index_k'}, -{text:'l',url:'functions.html#index_l'}, -{text:'m',url:'functions.html#index_m'}, -{text:'n',url:'functions.html#index_n'}, -{text:'o',url:'functions.html#index_o'}, -{text:'p',url:'functions.html#index_p'}, -{text:'r',url:'functions.html#index_r'}, -{text:'s',url:'functions.html#index_s'}, -{text:'t',url:'functions.html#index_t'}, -{text:'u',url:'functions.html#index_u'}, -{text:'v',url:'functions.html#index_v'}, -{text:'w',url:'functions.html#index_w'}]}, -{text:'Functions',url:'functions_func.html'}, -{text:'Variables',url:'functions_vars.html',children:[ -{text:'_',url:'functions_vars.html#index__'}, -{text:'a',url:'functions_vars.html#index_a'}, -{text:'b',url:'functions_vars.html#index_b'}, -{text:'c',url:'functions_vars.html#index_c'}, -{text:'d',url:'functions_vars.html#index_d'}, -{text:'e',url:'functions_vars.html#index_e'}, -{text:'f',url:'functions_vars.html#index_f'}, -{text:'g',url:'functions_vars.html#index_g'}, -{text:'h',url:'functions_vars.html#index_h'}, -{text:'i',url:'functions_vars.html#index_i'}, -{text:'k',url:'functions_vars.html#index_k'}, -{text:'l',url:'functions_vars.html#index_l'}, -{text:'m',url:'functions_vars.html#index_m'}, -{text:'n',url:'functions_vars.html#index_n'}, -{text:'o',url:'functions_vars.html#index_o'}, -{text:'p',url:'functions_vars.html#index_p'}, -{text:'r',url:'functions_vars.html#index_r'}, -{text:'s',url:'functions_vars.html#index_s'}, -{text:'t',url:'functions_vars.html#index_t'}, -{text:'u',url:'functions_vars.html#index_u'}, -{text:'v',url:'functions_vars.html#index_v'}, -{text:'w',url:'functions_vars.html#index_w'}]}]}]}, -{text:'Files',url:'files.html',children:[ -{text:'File List',url:'files.html'}, -{text:'Globals',url:'globals.html',children:[ -{text:'All',url:'globals.html',children:[ -{text:'e',url:'globals.html#index_e'}, -{text:'l',url:'globals_l.html#index_l'}]}, -{text:'Functions',url:'globals_func.html',children:[ -{text:'l',url:'globals_func.html#index_l'}]}, -{text:'Typedefs',url:'globals_type.html'}, -{text:'Enumerations',url:'globals_enum.html'}, -{text:'Enumerator',url:'globals_eval.html',children:[ -{text:'e',url:'globals_eval.html#index_e'}, -{text:'l',url:'globals_eval.html#index_l'}]}]}]}]} +{text:"Main Page",url:"index.html"}, +{text:"Related Pages",url:"pages.html"}, +{text:"Modules",url:"modules.html"}, +{text:"Data Structures",url:"annotated.html",children:[ +{text:"Data Structures",url:"annotated.html"}, +{text:"Data Structure Index",url:"classes.html"}, +{text:"Class Hierarchy",url:"hierarchy.html"}, +{text:"Data Fields",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"_",url:"functions.html#index__"}, +{text:"a",url:"functions.html#index_a"}, +{text:"b",url:"functions.html#index_b"}, +{text:"c",url:"functions.html#index_c"}, +{text:"d",url:"functions.html#index_d"}, +{text:"e",url:"functions.html#index_e"}, +{text:"f",url:"functions.html#index_f"}, +{text:"g",url:"functions.html#index_g"}, +{text:"h",url:"functions.html#index_h"}, +{text:"i",url:"functions.html#index_i"}, +{text:"k",url:"functions.html#index_k"}, +{text:"l",url:"functions.html#index_l"}, +{text:"m",url:"functions.html#index_m"}, +{text:"n",url:"functions.html#index_n"}, +{text:"o",url:"functions.html#index_o"}, +{text:"p",url:"functions.html#index_p"}, +{text:"r",url:"functions.html#index_r"}, +{text:"s",url:"functions.html#index_s"}, +{text:"t",url:"functions.html#index_t"}, +{text:"u",url:"functions.html#index_u"}, +{text:"v",url:"functions.html#index_v"}, +{text:"w",url:"functions.html#index_w"}]}, +{text:"Functions",url:"functions_func.html"}, +{text:"Variables",url:"functions_vars.html",children:[ +{text:"_",url:"functions_vars.html#index__"}, +{text:"a",url:"functions_vars.html#index_a"}, +{text:"b",url:"functions_vars.html#index_b"}, +{text:"c",url:"functions_vars.html#index_c"}, +{text:"d",url:"functions_vars.html#index_d"}, +{text:"e",url:"functions_vars.html#index_e"}, +{text:"f",url:"functions_vars.html#index_f"}, +{text:"g",url:"functions_vars.html#index_g"}, +{text:"h",url:"functions_vars.html#index_h"}, +{text:"i",url:"functions_vars.html#index_i"}, +{text:"k",url:"functions_vars.html#index_k"}, +{text:"l",url:"functions_vars.html#index_l"}, +{text:"m",url:"functions_vars.html#index_m"}, +{text:"n",url:"functions_vars.html#index_n"}, +{text:"o",url:"functions_vars.html#index_o"}, +{text:"p",url:"functions_vars.html#index_p"}, +{text:"r",url:"functions_vars.html#index_r"}, +{text:"s",url:"functions_vars.html#index_s"}, +{text:"t",url:"functions_vars.html#index_t"}, +{text:"u",url:"functions_vars.html#index_u"}, +{text:"v",url:"functions_vars.html#index_v"}, +{text:"w",url:"functions_vars.html#index_w"}]}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"Globals",url:"globals.html",children:[ +{text:"All",url:"globals.html",children:[ +{text:"e",url:"globals.html#index_e"}, +{text:"l",url:"globals_l.html#index_l"}]}, +{text:"Functions",url:"globals_func.html",children:[ +{text:"l",url:"globals_func.html#index_l"}]}, +{text:"Typedefs",url:"globals_type.html"}, +{text:"Enumerations",url:"globals_enum.html"}, +{text:"Enumerator",url:"globals_eval.html",children:[ +{text:"e",url:"globals_eval.html#index_e"}, +{text:"l",url:"globals_eval.html#index_l"}]}]}]}]} diff --git a/doc/html/navtreedata.js b/doc/html/navtreedata.js index d9efa4a..ff0c93a 100644 --- a/doc/html/navtreedata.js +++ b/doc/html/navtreedata.js @@ -135,8 +135,8 @@ var NAVTREEINDEX = "annotated.html", "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a87a824b2e812f4c3e7f2c4a1ea4f8abd", "group__service.html#ga9b3cc4473fd8848e5bbee7f310712939", -"group__wsstatus.html#gaeca4afc94b1f026034f99cbba37e2f85", -"structlws__http__mount.html#a614364c770b0bd4db464ad65cddab477" +"group__wsstatus.html#gaccd9c59336efad8af0554f79cc5966fd", +"structlws__http__mount.html#a4437423df85ee3dbcae0e15974c89ec7" ]; var SYNCONMSG = 'click to disable panel synchronisation'; diff --git a/doc/html/navtreeindex0.js b/doc/html/navtreeindex0.js index 53872db..1e2abf8 100644 --- a/doc/html/navtreeindex0.js +++ b/doc/html/navtreeindex0.js @@ -70,24 +70,24 @@ var NAVTREEINDEX0 = "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea11ed9b0cc3b4525c830de7185fd8d7df":[11,0,0,0,34,62], "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea1347e093d73e88489ba3ebda56a393a5":[11,0,0,0,34,32], "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea138fedfdb81765272d22b0eca9aec22b":[11,0,0,0,34,9], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea157c1db7d8edd3cd3b649e7756a559c8":[11,0,0,0,34,80], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea157c1db7d8edd3cd3b649e7756a559c8":[11,0,0,0,34,81], "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea166e60d6689436c1fb9169438d5db1b9":[11,0,0,0,34,13], "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea1d41be78df2704c54b906f7f0abbaa30":[11,0,0,0,34,51], "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea1ee866e12a483229599f4e3cfc358b36":[11,0,0,0,34,53], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea21ac48d2a499f6afa44cee92cebd8ae3":[11,0,0,0,34,82], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea21ac48d2a499f6afa44cee92cebd8ae3":[11,0,0,0,34,83], "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea220975eeb65cac57691adb3761a492bb":[11,0,0,0,34,50], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea228ece9e187ddbb80236851e9a09145c":[11,0,0,0,34,83], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea228ece9e187ddbb80236851e9a09145c":[11,0,0,0,34,84], "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea277d11b0d5e7fdfc6b5fb45470e6f63e":[11,0,0,0,34,39], "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea2be8537e80387a88197d3ed62ac3b954":[11,0,0,0,34,45], "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea2efae4ba6646ba040c371706f7f3a125":[11,0,0,0,34,56], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea3733863fb466c1df6b00c9384a53e544":[11,0,0,0,34,85], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea3733863fb466c1df6b00c9384a53e544":[11,0,0,0,34,86], "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea385f0e1933f81529307fff61eb08ff8d":[11,0,0,0,34,54], "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea3ac4744411849aff89001ee0350aed75":[11,0,0,0,34,60], "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea3cf47b821d473b717002b22619a9814e":[11,0,0,0,34,7], "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea3ef26b531c1c2416850ebd539f08ba5e":[11,0,0,0,34,17], "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea3fd7c7c9587953adc8f317a615df6b83":[11,0,0,0,34,14], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea400831fe4ba52d4c454364a81ea3bfe4":[11,0,0,0,34,91], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea428409a7aaea6446b660574e4097c0bd":[11,0,0,0,34,90], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea400831fe4ba52d4c454364a81ea3bfe4":[11,0,0,0,34,92], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea428409a7aaea6446b660574e4097c0bd":[11,0,0,0,34,91], "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea439ada24e20de209e08e7dd398ca61ac":[11,0,0,0,34,66], "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea525ee6d2330fca0929df75ffb8dec68e":[11,0,0,0,34,33], "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea52a30bd1a5ca619ab19bb8178138e42f":[11,0,0,0,34,58], @@ -96,7 +96,7 @@ var NAVTREEINDEX0 = "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea569588399651cdd6b81de40be4b73fd8":[11,0,0,0,34,46], "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea57ff348ebbae88bf904bc64ef284d83b":[11,0,0,0,34,20], "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea598578cda71fe6ca34320bbd6ba1e887":[11,0,0,0,34,55], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea5dcd48b2643d8a82a97b7abbc3928ea8":[11,0,0,0,34,81], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea5dcd48b2643d8a82a97b7abbc3928ea8":[11,0,0,0,34,82], "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea5e005569744e3246ba40d524f9a84fe4":[11,0,0,0,34,44], "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea6164d17e9598f89c822b4be55814de0a":[11,0,0,0,34,48], "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea63e1e08da7555313caf632a819db27d4":[11,0,0,0,34,41], @@ -112,21 +112,22 @@ var NAVTREEINDEX0 = "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea7e80eff7eefa68741f0a776d6d8feeae":[11,0,0,0,34,78], "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea832a110c8b9eb42890f252a756c81bde":[11,0,0,0,34,36], "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea86b3c4cf71dc5c5b441243db99ca696a":[11,0,0,0,34,61], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea883a86db0c05266214affd78d37e871f":[11,0,0,0,34,86], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea883a86db0c05266214affd78d37e871f":[11,0,0,0,34,87], "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea8913c5b1378b1ffad7e2da975c454d15":[11,0,0,0,34,26], "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea8d7393b324a076186bbde01a2cfe6b62":[11,0,0,0,34,49], "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea8d9809cf381705f73af48d8f6809412b":[11,0,0,0,34,24], "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea8f6a44a37c29cb5ade4c5989467a880b":[11,0,0,0,34,75], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea8ff0b2f6666e008de14d9b9721b87ead":[11,0,0,0,34,89], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea8ff0b2f6666e008de14d9b9721b87ead":[11,0,0,0,34,90], "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea9004d6ff6b16b8877f760545a3c7be60":[11,0,0,0,34,63], "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaa0cad0c7a20ac23945a33dbc3d726718":[11,0,0,0,34,30], "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaa566f2c37d9a459ca95eee347cca68d0":[11,0,0,0,34,67], "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaa76ea751f1ee86567d27e9e30075d6db":[11,0,0,0,34,40], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaa84e4902ebeb7ab468e3a4bd4acf4f90":[11,0,0,0,34,84], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaa8c8eb9b32feb43ec214d8469655a0df":[11,0,0,0,34,87], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaa84e4902ebeb7ab468e3a4bd4acf4f90":[11,0,0,0,34,85], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaa8c8eb9b32feb43ec214d8469655a0df":[11,0,0,0,34,88], "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaab4585e187936b4f2abf22e9138ee271":[11,0,0,0,34,5], "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaae70d627de34f9c881445f6fbcfcc2dd":[11,0,0,0,34,38], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eab0926aa28ea9bb73d2b0124c05c30a78":[11,0,0,0,34,88], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaafce2cb6a31235606d12fb65a32a41c5":[11,0,0,0,34,80], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eab0926aa28ea9bb73d2b0124c05c30a78":[11,0,0,0,34,89], "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eab2339b9e75c79dae3547255d1fb046cd":[11,0,0,0,34,2], "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eab460c34b18e1ae54219c3fb9e60544ef":[11,0,0,0,34,4], "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaba11ed0aa8c8c7bd71d971a234df0a72":[11,0,0,0,34,21], @@ -211,14 +212,14 @@ var NAVTREEINDEX0 = "group__context-and-vhost.html#ga06e77ce2916f8bc9826ef8d9d68e3932":[11,0,0,0,103], "group__context-and-vhost.html#ga0c54c667ccd9b8b3dddcd123ca72f87c":[11,0,0,0,75], "group__context-and-vhost.html#ga0c54c667ccd9b8b3dddcd123ca72f87c":[9,4,7], -"group__context-and-vhost.html#ga341064721add2618ae1b29717493a212":[11,0,0,0,170], "group__context-and-vhost.html#ga341064721add2618ae1b29717493a212":[9,4,14], +"group__context-and-vhost.html#ga341064721add2618ae1b29717493a212":[11,0,0,0,170], "group__context-and-vhost.html#ga41c2d763f78cc248df3b9f8645dbd2a5":[11,0,0,0,26], "group__context-and-vhost.html#ga41c2d763f78cc248df3b9f8645dbd2a5":[9,4,3], -"group__context-and-vhost.html#ga7e9d5405547a457d86e0b4f0ae2bb1c4":[11,0,0,0,144], "group__context-and-vhost.html#ga7e9d5405547a457d86e0b4f0ae2bb1c4":[9,4,11], -"group__context-and-vhost.html#ga8db03e19a372e34ac25cf21af894a02c":[11,0,0,0,162], +"group__context-and-vhost.html#ga7e9d5405547a457d86e0b4f0ae2bb1c4":[11,0,0,0,144], "group__context-and-vhost.html#ga8db03e19a372e34ac25cf21af894a02c":[9,4,12], +"group__context-and-vhost.html#ga8db03e19a372e34ac25cf21af894a02c":[11,0,0,0,162], "group__context-and-vhost.html#ga8ee0314028755f1ddfa9428e09b4fddb":[11,0,0,0,72], "group__context-and-vhost.html#ga8ee0314028755f1ddfa9428e09b4fddb":[9,4,4], "group__context-and-vhost.html#ga94e6cc2223c4eec316b13bcebc3628b6":[11,0,0,0,118], @@ -248,6 +249,5 @@ var NAVTREEINDEX0 = "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a6582c985ee0ceaadc1d277030eae2d7c":[11,0,0,0,26,1], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a6582c985ee0ceaadc1d277030eae2d7c":[9,4,3,1], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a7fed6a527c8d5e0acac1b4179644583a":[11,0,0,0,26,11], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a7fed6a527c8d5e0acac1b4179644583a":[9,4,3,11], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a87a824b2e812f4c3e7f2c4a1ea4f8abd":[11,0,0,0,26,17] +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a7fed6a527c8d5e0acac1b4179644583a":[9,4,3,11] }; diff --git a/doc/html/navtreeindex1.js b/doc/html/navtreeindex1.js index 86a63bc..3f177f8 100644 --- a/doc/html/navtreeindex1.js +++ b/doc/html/navtreeindex1.js @@ -1,5 +1,6 @@ var NAVTREEINDEX1 = { +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a87a824b2e812f4c3e7f2c4a1ea4f8abd":[11,0,0,0,26,17], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a87a824b2e812f4c3e7f2c4a1ea4f8abd":[9,4,3,17], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a9637e9001d8c8b2521086bcafbd8a941":[11,0,0,0,26,13], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a9637e9001d8c8b2521086bcafbd8a941":[9,4,3,13], @@ -198,8 +199,8 @@ var NAVTREEINDEX1 = "group__misc.html#ga9f37d0e357de2ab4170723fcdb665d21":[9,8,10], "group__misc.html#gaa194584fff9698f3b280658f770ccd0f":[11,0,0,0,165], "group__misc.html#gaa194584fff9698f3b280658f770ccd0f":[9,8,11], -"group__misc.html#gab321ed812f46f6dc7ef9e3ca6f00cf1b":[11,0,0,0,141], "group__misc.html#gab321ed812f46f6dc7ef9e3ca6f00cf1b":[9,8,9], +"group__misc.html#gab321ed812f46f6dc7ef9e3ca6f00cf1b":[11,0,0,0,141], "group__misc.html#gac6abfc0b2bd5b2f09281a4432bb2f5f0":[9,8,4], "group__misc.html#gac6abfc0b2bd5b2f09281a4432bb2f5f0":[11,0,0,0,92], "group__misc.html#gacae4d7b6a8d22e4c2d82ff8b12c1e234":[9,8,1], @@ -209,8 +210,8 @@ var NAVTREEINDEX1 = "group__net.html":[9,9], "group__net.html#ga092e5f473b3347f03ffeef8a950080f3":[9,9,1], "group__net.html#ga092e5f473b3347f03ffeef8a950080f3":[11,0,0,0,95], -"group__net.html#ga869d8bdffb0f2a7ce08e3ce10d6be3d8":[9,9,3], "group__net.html#ga869d8bdffb0f2a7ce08e3ce10d6be3d8":[11,0,0,0,113], +"group__net.html#ga869d8bdffb0f2a7ce08e3ce10d6be3d8":[9,9,3], "group__net.html#gad01014fed09759741b6d23afccfdaacc":[9,9,2], "group__net.html#gad01014fed09759741b6d23afccfdaacc":[11,0,0,0,96], "group__net.html#gad0df22db2be9fc65a667a1e83f9a92a4":[9,9,0], @@ -248,6 +249,5 @@ var NAVTREEINDEX1 = "group__service.html#ga4fd9d714434ca499e2b3f7dbba86f241":[11,0,0,0,137], "group__service.html#ga4fd9d714434ca499e2b3f7dbba86f241":[9,0,3], "group__service.html#ga53e3d0801dfda7960a7249dd559e68a2":[9,0,0], -"group__service.html#ga53e3d0801dfda7960a7249dd559e68a2":[11,0,0,0,60], -"group__service.html#ga9b3cc4473fd8848e5bbee7f310712939":[11,0,0,0,140] +"group__service.html#ga53e3d0801dfda7960a7249dd559e68a2":[11,0,0,0,60] }; diff --git a/doc/html/navtreeindex2.js b/doc/html/navtreeindex2.js index 26a2915..ceb9d61 100644 --- a/doc/html/navtreeindex2.js +++ b/doc/html/navtreeindex2.js @@ -1,10 +1,11 @@ var NAVTREEINDEX2 = { +"group__service.html#ga9b3cc4473fd8848e5bbee7f310712939":[11,0,0,0,140], "group__service.html#ga9b3cc4473fd8848e5bbee7f310712939":[9,0,6], "group__service.html#gad82efa5466d14a9f05aa06416375b28d":[11,0,0,0,138], "group__service.html#gad82efa5466d14a9f05aa06416375b28d":[9,0,4], -"group__service.html#gaebf426eda371ba23642fc11d8e0ace6b":[11,0,0,0,139], "group__service.html#gaebf426eda371ba23642fc11d8e0ace6b":[9,0,5], +"group__service.html#gaebf426eda371ba23642fc11d8e0ace6b":[11,0,0,0,139], "group__service.html#gaf95bd0c663d6516a0c80047d9b1167a8":[11,0,0,0,136], "group__service.html#gaf95bd0c663d6516a0c80047d9b1167a8":[9,0,2], "group__sha.html":[9,11], @@ -12,31 +13,31 @@ var NAVTREEINDEX2 = "group__sha.html#ga66316e6a5a0644a09d5a10e919dfdd8d":[11,0,0,0,51], "group__sha.html#ga7b09ab74646266f0b555103b3bb8dfe5":[11,0,0,0,146], "group__sha.html#ga7b09ab74646266f0b555103b3bb8dfe5":[9,11,2], -"group__sha.html#gaf39765e4a3b413efb65e4698b2ec3575":[11,0,0,0,52], "group__sha.html#gaf39765e4a3b413efb65e4698b2ec3575":[9,11,1], +"group__sha.html#gaf39765e4a3b413efb65e4698b2ec3575":[11,0,0,0,52], "group__smtp.html":[9,14], "group__smtp.html#ga116be79bf44f9dc2a97f46e051fe4dc0":[9,14,1], "group__smtp.html#ga116be79bf44f9dc2a97f46e051fe4dc0":[11,0,0,0,37], -"group__smtp.html#ga25298a5afc1074e13b2d5711a86432b2":[11,0,0,0,78], "group__smtp.html#ga25298a5afc1074e13b2d5711a86432b2":[9,14,3], -"group__smtp.html#ga5e535e346d92a9daf00be33abf79d4eb":[9,14,2], +"group__smtp.html#ga25298a5afc1074e13b2d5711a86432b2":[11,0,0,0,78], "group__smtp.html#ga5e535e346d92a9daf00be33abf79d4eb":[11,0,0,0,77], +"group__smtp.html#ga5e535e346d92a9daf00be33abf79d4eb":[9,14,2], "group__smtp.html#ga77fc9b56a1bb39484844981ec375fc29":[11,0,0,0,79], "group__smtp.html#ga77fc9b56a1bb39484844981ec375fc29":[9,14,4], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad":[9,14,1,3], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad":[11,0,0,0,37,3], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c":[9,14,1,0], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c":[11,0,0,0,37,0], -"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5":[9,14,1,8], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5":[11,0,0,0,37,8], -"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69":[11,0,0,0,37,7], +"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5":[9,14,1,8], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69":[9,14,1,7], +"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69":[11,0,0,0,37,7], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14":[11,0,0,0,37,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,37,4], -"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83":[9,14,1,5], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83":[11,0,0,0,37,5], +"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83":[9,14,1,5], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d":[9,14,1,2], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d":[11,0,0,0,37,2], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933":[9,14,1,1], @@ -48,8 +49,8 @@ var NAVTREEINDEX2 = "group__sock-adopt.html#gabe71b7462afb21c767bdc67334f305af":[9,15,0], "group__timeout.html":[9,3], "group__timeout.html#ga2c0aa4b9c3c55bae7b35cbfac3246c87":[11,0,0,0,38], -"group__timeout.html#gaced9f9237f6172fed9f730a2af51345a":[11,0,0,0,145], "group__timeout.html#gaced9f9237f6172fed9f730a2af51345a":[9,3,0], +"group__timeout.html#gaced9f9237f6172fed9f730a2af51345a":[11,0,0,0,145], "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a0d6b956db11acb6d263af3ea054a914e":[11,0,0,0,38,12], "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a0eef059426f37d00b75142d4dc3e25e3":[11,0,0,0,38,3], "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a1104c39d0177378713a9332ab7a9d7fe":[11,0,0,0,38,4], @@ -117,21 +118,21 @@ var NAVTREEINDEX2 = "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7e12418eec9bce85735e6460176ab604":[11,0,0,0,22,3], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7ec8e2e9557ee02a4fc9f7dec7e2babc":[11,0,0,0,22,11], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7ec8e2e9557ee02a4fc9f7dec7e2babc":[9,16,1,11], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a838b18d255c1b94a533287ba302a2eba":[11,0,0,0,22,5], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a838b18d255c1b94a533287ba302a2eba":[9,16,1,5], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a838b18d255c1b94a533287ba302a2eba":[11,0,0,0,22,5], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8909732521d379179003d97ab7a05428":[11,0,0,0,22,35], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8909732521d379179003d97ab7a05428":[9,16,1,35], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a89862929a72bff65257ca1d51a0fce4d":[11,0,0,0,22,52], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8e8b2e6dbeac76d8d126947d2166a514":[11,0,0,0,22,10], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8e8b2e6dbeac76d8d126947d2166a514":[9,16,1,10], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a909cc2a7018864b0b71abacc4058fd8f":[9,16,1,24], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a909cc2a7018864b0b71abacc4058fd8f":[11,0,0,0,22,24], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a909cc2a7018864b0b71abacc4058fd8f":[9,16,1,24], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a982579753e70e59a9ea13ce628ac891a":[11,0,0,0,22,58], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a982579753e70e59a9ea13ce628ac891a":[9,16,1,41], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa46f705dcf97502e95627ffde614f98b":[11,0,0,0,22,37], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa46f705dcf97502e95627ffde614f98b":[9,16,1,37], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa536e574a642ff3ab9e12bff7ba2c6a2":[11,0,0,0,22,2], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa536e574a642ff3ab9e12bff7ba2c6a2":[9,16,1,2], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa536e574a642ff3ab9e12bff7ba2c6a2":[11,0,0,0,22,2], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa5cc921b7697743017a533822a3d556a":[11,0,0,0,22,56], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa5cc921b7697743017a533822a3d556a":[9,16,1,39], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa627548e1296e654fcfab463ec3c9587":[11,0,0,0,22,15], @@ -142,15 +143,15 @@ var NAVTREEINDEX2 = "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ab69783a9fbf2ca71ad70706bda77b412":[11,0,0,0,22,32], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ab69783a9fbf2ca71ad70706bda77b412":[9,16,1,32], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ab884f3d5f8a6126a0d34c0172f5e3725":[11,0,0,0,22,53], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7abbbe7a0a67c5866ca9109d46823fc5b1":[11,0,0,0,22,8], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7abbbe7a0a67c5866ca9109d46823fc5b1":[9,16,1,8], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7abbbe7a0a67c5866ca9109d46823fc5b1":[11,0,0,0,22,8], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7abcf9c720cd3d361a83d1ac65bf052a25":[11,0,0,0,22,39], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac11c336f7052abf3618962902a71ebc8":[11,0,0,0,22,54], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac3fc5bbb55e69f90396526287ee84a51":[11,0,0,0,22,38], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac3fc5bbb55e69f90396526287ee84a51":[9,16,1,38], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac432e9f891c733ba8f968c1bf57c0ddc":[11,0,0,0,22,45], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac4c68e00efcf1ff7bda7ada462aff8ae":[11,0,0,0,22,13], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac4c68e00efcf1ff7bda7ada462aff8ae":[9,16,1,13], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac4c68e00efcf1ff7bda7ada462aff8ae":[11,0,0,0,22,13], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac8c0ae966ef1877e0020c0077ff2e4a4":[11,0,0,0,22,41], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aca834dc035b7f7486f9ce40fde54fe9e":[11,0,0,0,22,30], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aca834dc035b7f7486f9ce40fde54fe9e":[9,16,1,30], @@ -160,20 +161,20 @@ var NAVTREEINDEX2 = "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad5d34583e3556e153eda91620b48cc49":[9,16,1,27], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad724974204d51d688f569c5d387b967d":[11,0,0,0,22,43], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad87774f1c7784cf632e1e2f5b51036e1":[11,0,0,0,22,48], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad8c6207b0c4e732f3d507f0fb79370e8":[9,16,1,1], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad8c6207b0c4e732f3d507f0fb79370e8":[11,0,0,0,22,1], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad8c6207b0c4e732f3d507f0fb79370e8":[9,16,1,1], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7adfb41c92e2522712207ef7f2462b5e34":[11,0,0,0,22,31], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7adfb41c92e2522712207ef7f2462b5e34":[9,16,1,31], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae4986291b7a810fe290851d73bebeb1c":[11,0,0,0,22,21], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae4986291b7a810fe290851d73bebeb1c":[9,16,1,21], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae5ad65d779b7eab32ab67ceff91a3bac":[11,0,0,0,22,23], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae5ad65d779b7eab32ab67ceff91a3bac":[9,16,1,23], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae8d1de0bb56e03aa58cb4d44b18edd2e":[9,16,1,12], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae5ad65d779b7eab32ab67ceff91a3bac":[11,0,0,0,22,23], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae8d1de0bb56e03aa58cb4d44b18edd2e":[11,0,0,0,22,12], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae9734e1d7af2abf291665ce9e4a728d3":[9,16,1,19], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae8d1de0bb56e03aa58cb4d44b18edd2e":[9,16,1,12], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae9734e1d7af2abf291665ce9e4a728d3":[11,0,0,0,22,19], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aeb0cec65ec82a713cd01e9ca9aeeb5e6":[9,16,1,40], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae9734e1d7af2abf291665ce9e4a728d3":[9,16,1,19], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aeb0cec65ec82a713cd01e9ca9aeeb5e6":[11,0,0,0,22,57], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aeb0cec65ec82a713cd01e9ca9aeeb5e6":[9,16,1,40], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7af6cf80e57aae8ba0a57a5c456b1fe026":[11,0,0,0,22,55], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afc4b2f72cc9e424a750b506ce0cc4310":[11,0,0,0,22,51], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afd8fd77a1cc9405fcb4f26915d7f2d01":[11,0,0,0,22,29], @@ -196,8 +197,8 @@ var NAVTREEINDEX2 = "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a1e9f0842b0e85db50fe648ed4ba9a4b0":[9,4,0,2,0], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2":[9,4,0,2,2], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2":[11,0,0,0,32,2], -"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67":[9,4,0,2,5], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67":[11,0,0,0,32,5], +"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67":[9,4,0,2,5], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da":[9,4,0,2,6], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da":[11,0,0,0,32,6], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437aec137a2434851bd856ceebfb697b9970":[9,4,0,2,4], @@ -209,34 +210,34 @@ var NAVTREEINDEX2 = "group__wsclose.html#gaa1c863415d1783cd8de7938aa6efa262":[11,0,0,0,71], "group__wsclose.html#gae399c571df32ba532c0ca67da9284985":[11,0,0,0,25], "group__wsclose.html#gae399c571df32ba532c0ca67da9284985":[9,17,0], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a1bb501d212fa4d57053db681b1dfab98":[11,0,0,0,25,3], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a1bb501d212fa4d57053db681b1dfab98":[9,17,0,2], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a2e1f0113494a58e762eed3d22e7080d8":[9,17,0,9], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a1bb501d212fa4d57053db681b1dfab98":[11,0,0,0,25,3], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a2e1f0113494a58e762eed3d22e7080d8":[11,0,0,0,25,10], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a2e1f0113494a58e762eed3d22e7080d8":[9,17,0,9], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a32c38edab10d1379febac0c479ab2e9c":[11,0,0,0,25,14], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a3ffa38d5081b85fb739e02a747ccf2c4":[11,0,0,0,25,1], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a3ffa38d5081b85fb739e02a747ccf2c4":[9,17,0,0], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a462c99b05459df700919cfd3f53c8276":[11,0,0,0,25,4], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a462c99b05459df700919cfd3f53c8276":[9,17,0,3], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a462c99b05459df700919cfd3f53c8276":[11,0,0,0,25,4], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a4b8a3b7ce6f731e5248e4b0fb64a5044":[11,0,0,0,25,6], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a4b8a3b7ce6f731e5248e4b0fb64a5044":[9,17,0,5], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a68b3d34bebd88547dcfa5cadba0acd6c":[11,0,0,0,25,7], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a68b3d34bebd88547dcfa5cadba0acd6c":[9,17,0,6], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a7aef2da0062da606eeb35aaca5cf9050":[9,17,0,7], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a7aef2da0062da606eeb35aaca5cf9050":[11,0,0,0,25,8], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a7aef2da0062da606eeb35aaca5cf9050":[9,17,0,7], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a9737a68759e739856b150ff9dfa30218":[11,0,0,0,25,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,25,11], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985acc9a317c70363dd88e823e066b2c73b7":[11,0,0,0,25,0], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad0869604d79e13700ae5d196a431b350":[11,0,0,0,25,12], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad0869604d79e13700ae5d196a431b350":[9,17,0,11], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad0869604d79e13700ae5d196a431b350":[11,0,0,0,25,12], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad09e68295eabdddcba4e332fbea70ae5":[9,17,0,8], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad09e68295eabdddcba4e332fbea70ae5":[11,0,0,0,25,9], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad2b477a91c8445bf34ecd43977f9b390":[9,17,0,12], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad2b477a91c8445bf34ecd43977f9b390":[11,0,0,0,25,13], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985af90cb98d983ad3d4c79df9b6f3d4a4d2":[9,17,0,4], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad2b477a91c8445bf34ecd43977f9b390":[9,17,0,12], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985af90cb98d983ad3d4c79df9b6f3d4a4d2":[11,0,0,0,25,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,115], @@ -244,10 +245,9 @@ var NAVTREEINDEX2 = "group__wsstatus.html#ga26a140623d202dd2bf2004deb6994baa":[11,0,0,0,116], "group__wsstatus.html#ga2bb3655329b4651cd06f79ee3a764421":[9,18,6], "group__wsstatus.html#ga2bb3655329b4651cd06f79ee3a764421":[11,0,0,0,133], -"group__wsstatus.html#ga3df5045656dfb6b0e63a38de2dca79d2":[9,18,1], "group__wsstatus.html#ga3df5045656dfb6b0e63a38de2dca79d2":[11,0,0,0,100], +"group__wsstatus.html#ga3df5045656dfb6b0e63a38de2dca79d2":[9,18,1], "group__wsstatus.html#ga4ad226d5e01024b4046f4a5a37199aa1":[9,18,2], "group__wsstatus.html#ga4ad226d5e01024b4046f4a5a37199aa1":[11,0,0,0,114], -"group__wsstatus.html#gaccd9c59336efad8af0554f79cc5966fd":[9,18,0], "group__wsstatus.html#gaccd9c59336efad8af0554f79cc5966fd":[11,0,0,0,87] }; diff --git a/doc/html/navtreeindex3.js b/doc/html/navtreeindex3.js index a4dbebd..8700d77 100644 --- a/doc/html/navtreeindex3.js +++ b/doc/html/navtreeindex3.js @@ -1,5 +1,6 @@ var NAVTREEINDEX3 = { +"group__wsstatus.html#gaccd9c59336efad8af0554f79cc5966fd":[9,18,0], "group__wsstatus.html#gaeca4afc94b1f026034f99cbba37e2f85":[9,18,5], "group__wsstatus.html#gaeca4afc94b1f026034f99cbba37e2f85":[11,0,0,0,124], "hierarchy.html":[10,2], @@ -165,46 +166,47 @@ var NAVTREEINDEX3 = "structlws__client__connect__info.html#ad47f50d1633dc5df74548606c9a66d73":[9,2,0,0], "structlws__client__connect__info.html#afe999d133cc240a0bfd02aade0514cfd":[9,2,0,3], "structlws__context__creation__info.html":[9,4,1], -"structlws__context__creation__info.html#a0b154e79abc1167ba4ac3539f4af6720":[9,4,1,17], -"structlws__context__creation__info.html#a0cdfd3c484689ba6f0f2cc91b38ce948":[9,4,1,15], -"structlws__context__creation__info.html#a0e790dda6202604f73a03b6149bc12bb":[9,4,1,24], -"structlws__context__creation__info.html#a0e9d94cdfb893d777b4a4db81e7b5ac0":[9,4,1,39], -"structlws__context__creation__info.html#a137a9b9de4f6a7993fed8746d551e616":[9,4,1,28], -"structlws__context__creation__info.html#a13ffbb0d010309669611f8c4eda7d7f8":[9,4,1,18], -"structlws__context__creation__info.html#a1654d41bea6fb2f619b57e6a264b26a4":[9,4,1,23], -"structlws__context__creation__info.html#a33a1a25a7df3793f59047e20dd580078":[9,4,1,41], -"structlws__context__creation__info.html#a381342a398883d6204955ff3c1849ddd":[9,4,1,10], -"structlws__context__creation__info.html#a3baab4285c679fbe027c2504621d7410":[9,4,1,11], -"structlws__context__creation__info.html#a3e1516fd7fed26bfa77c0246ed26c2eb":[9,4,1,31], -"structlws__context__creation__info.html#a424a5ce268d6903e42243be94487ab85":[9,4,1,21], -"structlws__context__creation__info.html#a45e63e24c88289e0c8352377ef4d3646":[9,4,1,4], +"structlws__context__creation__info.html#a0b154e79abc1167ba4ac3539f4af6720":[9,4,1,18], +"structlws__context__creation__info.html#a0cdfd3c484689ba6f0f2cc91b38ce948":[9,4,1,16], +"structlws__context__creation__info.html#a0e790dda6202604f73a03b6149bc12bb":[9,4,1,25], +"structlws__context__creation__info.html#a0e9d94cdfb893d777b4a4db81e7b5ac0":[9,4,1,40], +"structlws__context__creation__info.html#a137a9b9de4f6a7993fed8746d551e616":[9,4,1,29], +"structlws__context__creation__info.html#a13ffbb0d010309669611f8c4eda7d7f8":[9,4,1,19], +"structlws__context__creation__info.html#a1654d41bea6fb2f619b57e6a264b26a4":[9,4,1,24], +"structlws__context__creation__info.html#a33a1a25a7df3793f59047e20dd580078":[9,4,1,42], +"structlws__context__creation__info.html#a381342a398883d6204955ff3c1849ddd":[9,4,1,11], +"structlws__context__creation__info.html#a3baab4285c679fbe027c2504621d7410":[9,4,1,12], +"structlws__context__creation__info.html#a3e1516fd7fed26bfa77c0246ed26c2eb":[9,4,1,32], +"structlws__context__creation__info.html#a424a5ce268d6903e42243be94487ab85":[9,4,1,22], +"structlws__context__creation__info.html#a45e63e24c88289e0c8352377ef4d3646":[9,4,1,5], "structlws__context__creation__info.html#a4a3d1155fc52f5048b481884f6fb947c":[9,4,1,3], -"structlws__context__creation__info.html#a4f8e65c3a059d3b586fafa9ef3282c29":[9,4,1,29], -"structlws__context__creation__info.html#a57f88c0745adbd1d6b9b619b8de30209":[9,4,1,25], -"structlws__context__creation__info.html#a6b059b7ee248cba72a3a4fd6141b0b34":[9,4,1,27], -"structlws__context__creation__info.html#a6cfa3d51df2def3349a5cbf0d712822d":[9,4,1,36], -"structlws__context__creation__info.html#a704940261951ced6b5d8191bd8b9bb2d":[9,4,1,33], -"structlws__context__creation__info.html#a75434932bb5df54665ea678eb8ac104a":[9,4,1,9], -"structlws__context__creation__info.html#a7b59f2bdc869871e7bde232db94f5ca6":[9,4,1,8], -"structlws__context__creation__info.html#a8122cfc0810bafe51edb3ba6bf9a1251":[9,4,1,20], -"structlws__context__creation__info.html#a81697c6b763b5ef3ee52862bc70b07d6":[9,4,1,13], -"structlws__context__creation__info.html#a8ca0ec6b8675c13849bbdcdc0d50c9a3":[9,4,1,6], -"structlws__context__creation__info.html#a999866fcd15dbd621773436f97190458":[9,4,1,26], -"structlws__context__creation__info.html#a9c9d22437de92c197f3cee52912b2c03":[9,4,1,5], -"structlws__context__creation__info.html#a9d3b17a25e1fbc772f21eb4959a82724":[9,4,1,19], -"structlws__context__creation__info.html#aa8d9e85e137f35fb006f2e4a53f0887a":[9,4,1,16], -"structlws__context__creation__info.html#ab9ec8893e0f7843cf5d783d2f350ef14":[9,4,1,34], -"structlws__context__creation__info.html#abb90ffb3e6d6db2db20f529d61bd9122":[9,4,1,22], -"structlws__context__creation__info.html#ac105b4180008cb3e672d57beead8382e":[9,4,1,38], -"structlws__context__creation__info.html#ac583ce92b8e1c949cb6fef6bfe713d56":[9,4,1,12], -"structlws__context__creation__info.html#ac62b0f0e8e402412ba5011d15c244103":[9,4,1,30], -"structlws__context__creation__info.html#ac8a75b7b259a3c3a5fbb4219a3f06c29":[9,4,1,37], -"structlws__context__creation__info.html#ad0e95ba721f7bd2b676719f8093c23a2":[9,4,1,14], -"structlws__context__creation__info.html#ad50db098a208f045f7811207d2bee4b9":[9,4,1,40], -"structlws__context__creation__info.html#adb0bc0b28cd7d90ab306723d8ffa96fa":[9,4,1,32], +"structlws__context__creation__info.html#a4f8e65c3a059d3b586fafa9ef3282c29":[9,4,1,30], +"structlws__context__creation__info.html#a57f88c0745adbd1d6b9b619b8de30209":[9,4,1,26], +"structlws__context__creation__info.html#a6b059b7ee248cba72a3a4fd6141b0b34":[9,4,1,28], +"structlws__context__creation__info.html#a6cfa3d51df2def3349a5cbf0d712822d":[9,4,1,37], +"structlws__context__creation__info.html#a704940261951ced6b5d8191bd8b9bb2d":[9,4,1,34], +"structlws__context__creation__info.html#a75434932bb5df54665ea678eb8ac104a":[9,4,1,10], +"structlws__context__creation__info.html#a7b59f2bdc869871e7bde232db94f5ca6":[9,4,1,9], +"structlws__context__creation__info.html#a8122cfc0810bafe51edb3ba6bf9a1251":[9,4,1,21], +"structlws__context__creation__info.html#a81697c6b763b5ef3ee52862bc70b07d6":[9,4,1,14], +"structlws__context__creation__info.html#a8ca0ec6b8675c13849bbdcdc0d50c9a3":[9,4,1,7], +"structlws__context__creation__info.html#a999866fcd15dbd621773436f97190458":[9,4,1,27], +"structlws__context__creation__info.html#a9c9d22437de92c197f3cee52912b2c03":[9,4,1,6], +"structlws__context__creation__info.html#a9d3b17a25e1fbc772f21eb4959a82724":[9,4,1,20], +"structlws__context__creation__info.html#aa8d9e85e137f35fb006f2e4a53f0887a":[9,4,1,17], +"structlws__context__creation__info.html#aadbc1b141d16c1084ec4c543e7768a72":[9,4,1,4], +"structlws__context__creation__info.html#ab9ec8893e0f7843cf5d783d2f350ef14":[9,4,1,35], +"structlws__context__creation__info.html#abb90ffb3e6d6db2db20f529d61bd9122":[9,4,1,23], +"structlws__context__creation__info.html#ac105b4180008cb3e672d57beead8382e":[9,4,1,39], +"structlws__context__creation__info.html#ac583ce92b8e1c949cb6fef6bfe713d56":[9,4,1,13], +"structlws__context__creation__info.html#ac62b0f0e8e402412ba5011d15c244103":[9,4,1,31], +"structlws__context__creation__info.html#ac8a75b7b259a3c3a5fbb4219a3f06c29":[9,4,1,38], +"structlws__context__creation__info.html#ad0e95ba721f7bd2b676719f8093c23a2":[9,4,1,15], +"structlws__context__creation__info.html#ad50db098a208f045f7811207d2bee4b9":[9,4,1,41], +"structlws__context__creation__info.html#adb0bc0b28cd7d90ab306723d8ffa96fa":[9,4,1,33], "structlws__context__creation__info.html#ae52f3237e144e9ddcab5e2cf91d1e419":[9,4,1,1], -"structlws__context__creation__info.html#aef917c0b23976a264d2474901b4f5aa3":[9,4,1,7], -"structlws__context__creation__info.html#af3fb447be15c4fcb01d3285a6678ab54":[9,4,1,35], +"structlws__context__creation__info.html#aef917c0b23976a264d2474901b4f5aa3":[9,4,1,8], +"structlws__context__creation__info.html#af3fb447be15c4fcb01d3285a6678ab54":[9,4,1,36], "structlws__context__creation__info.html#afa5d4e7d9f86b58a1c6fac14f0a5f5f9":[9,4,1,2], "structlws__context__creation__info.html#afce3b59950eca3203faa07381bbed5d7":[9,4,1,0], "structlws__email.html":[9,14,0], @@ -242,12 +244,10 @@ var NAVTREEINDEX3 = "structlws__gs__event__args.html#a477274f8ca22ba7411b9285b9dc8dd06":[9,10,0,3,1], "structlws__gs__event__args.html#acd17e4f9f91f7f9a8f0fbf0744a3a463":[9,10,0,3,0], "structlws__http__mount.html":[9,4,0,1], -"structlws__http__mount.html#a0109baf93f23c07c824c997c3533ee44":[9,4,0,1,11], -"structlws__http__mount.html#a05347d92c3d379809564bd4f3eab259b":[9,4,0,1,16], -"structlws__http__mount.html#a11ea62b952710d59733dbcf9794a5773":[9,4,0,1,10], -"structlws__http__mount.html#a21d86fd6043ec00e121ababbc29af39a":[9,4,0,1,14], -"structlws__http__mount.html#a2f6c7dbc2d714b7259c67b7744d4ff98":[9,4,0,1,1], -"structlws__http__mount.html#a4283e30ea89d27ae7d061ad760d1d146":[9,4,0,1,3], -"structlws__http__mount.html#a4437423df85ee3dbcae0e15974c89ec7":[9,4,0,1,9], -"structlws__http__mount.html#a4a7239d6d4c03986e6e1a72abb6c83aa":[9,4,0,1,6] +"structlws__http__mount.html#a0109baf93f23c07c824c997c3533ee44":[9,4,0,1,12], +"structlws__http__mount.html#a05347d92c3d379809564bd4f3eab259b":[9,4,0,1,17], +"structlws__http__mount.html#a11ea62b952710d59733dbcf9794a5773":[9,4,0,1,11], +"structlws__http__mount.html#a21d86fd6043ec00e121ababbc29af39a":[9,4,0,1,15], +"structlws__http__mount.html#a2f6c7dbc2d714b7259c67b7744d4ff98":[9,4,0,1,2], +"structlws__http__mount.html#a4283e30ea89d27ae7d061ad760d1d146":[9,4,0,1,4] }; diff --git a/doc/html/navtreeindex4.js b/doc/html/navtreeindex4.js index d68ad8d..3f1669c 100644 --- a/doc/html/navtreeindex4.js +++ b/doc/html/navtreeindex4.js @@ -1,14 +1,17 @@ var NAVTREEINDEX4 = { -"structlws__http__mount.html#a614364c770b0bd4db464ad65cddab477":[9,4,0,1,0], -"structlws__http__mount.html#a6a9b1492a0b9749e39bd19932717a0b7":[9,4,0,1,15], -"structlws__http__mount.html#a8316dd183ffbef50419a5a4968d35d84":[9,4,0,1,4], -"structlws__http__mount.html#aa2391bfcada0b7a290b3c6651f64586c":[9,4,0,1,12], -"structlws__http__mount.html#aabec1a326780aafe11b977000983be0c":[9,4,0,1,2], -"structlws__http__mount.html#ac8489b60b8f969eb19c9abbdeac90743":[9,4,0,1,13], -"structlws__http__mount.html#ae137203040c6153694bd88a708da5395":[9,4,0,1,5], -"structlws__http__mount.html#ae7b5c0f4c5408061e6ea3a8d281f45af":[9,4,0,1,7], -"structlws__http__mount.html#ae90d1efe7178199fad39de2926902ee4":[9,4,0,1,8], +"structlws__http__mount.html#a4437423df85ee3dbcae0e15974c89ec7":[9,4,0,1,10], +"structlws__http__mount.html#a4a7239d6d4c03986e6e1a72abb6c83aa":[9,4,0,1,7], +"structlws__http__mount.html#a614364c770b0bd4db464ad65cddab477":[9,4,0,1,1], +"structlws__http__mount.html#a6a9b1492a0b9749e39bd19932717a0b7":[9,4,0,1,16], +"structlws__http__mount.html#a78d58848eed7b544ae83f719abdbe4b6":[9,4,0,1,0], +"structlws__http__mount.html#a8316dd183ffbef50419a5a4968d35d84":[9,4,0,1,5], +"structlws__http__mount.html#aa2391bfcada0b7a290b3c6651f64586c":[9,4,0,1,13], +"structlws__http__mount.html#aabec1a326780aafe11b977000983be0c":[9,4,0,1,3], +"structlws__http__mount.html#ac8489b60b8f969eb19c9abbdeac90743":[9,4,0,1,14], +"structlws__http__mount.html#ae137203040c6153694bd88a708da5395":[9,4,0,1,6], +"structlws__http__mount.html#ae7b5c0f4c5408061e6ea3a8d281f45af":[9,4,0,1,8], +"structlws__http__mount.html#ae90d1efe7178199fad39de2926902ee4":[9,4,0,1,9], "structlws__plat__file__ops.html":[9,20,0], "structlws__plat__file__ops.html#a01f483807a9862736b17ba9ed5110c40":[9,20,0,2], "structlws__plat__file__ops.html#a034ec96f2fbaf52b4aa3e82d20795f7b":[9,20,0,0], @@ -52,12 +55,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,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":[9,4,2], "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#a0640a92513c70ee6b9b295a9ad1658e7":[9,4,0,0,3], "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], @@ -77,8 +80,8 @@ 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], diff --git a/doc/html/structlws__context__creation__info.html b/doc/html/structlws__context__creation__info.html index fb40058..0e0b5fd 100644 --- a/doc/html/structlws__context__creation__info.html +++ b/doc/html/structlws__context__creation__info.html @@ -153,6 +153,8 @@ Data Fields   const struct lws_protocol_vhost_optionsreject_service_keywords   +void * external_baggage_free_on_destroy +  void * _unused [8]   @@ -221,6 +223,21 @@ Data Fields + +

    § external_baggage_free_on_destroy

    + +
    +
    + + + + +
    void* lws_context_creation_info::external_baggage_free_on_destroy
    +
    +

    CONTEXT: NULL, or pointer to something externally malloc'd, that should be freed when the context is destroyed. This allows you to automatically sync the freeing action to the context destruction action, so there is no need for an external free() if the context succeeded to create.

    + +
    +

    § fd_limit_per_thread

    diff --git a/doc/html/structlws__context__creation__info.js b/doc/html/structlws__context__creation__info.js index 5a05ebc..ac4fdbd 100644 --- a/doc/html/structlws__context__creation__info.js +++ b/doc/html/structlws__context__creation__info.js @@ -4,6 +4,7 @@ var structlws__context__creation__info = [ "count_threads", "structlws__context__creation__info.html#ae52f3237e144e9ddcab5e2cf91d1e419", null ], [ "ecdh_curve", "structlws__context__creation__info.html#afa5d4e7d9f86b58a1c6fac14f0a5f5f9", null ], [ "extensions", "structlws__context__creation__info.html#a4a3d1155fc52f5048b481884f6fb947c", null ], + [ "external_baggage_free_on_destroy", "structlws__context__creation__info.html#aadbc1b141d16c1084ec4c543e7768a72", null ], [ "fd_limit_per_thread", "structlws__context__creation__info.html#a45e63e24c88289e0c8352377ef4d3646", null ], [ "gid", "structlws__context__creation__info.html#a9c9d22437de92c197f3cee52912b2c03", null ], [ "headers", "structlws__context__creation__info.html#a8ca0ec6b8675c13849bbdcdc0d50c9a3", null ], diff --git a/doc/html/structlws__http__mount.html b/doc/html/structlws__http__mount.html index fac9467..10f0054 100644 --- a/doc/html/structlws__http__mount.html +++ b/doc/html/structlws__http__mount.html @@ -81,8 +81,6 @@ Data Fields   const char * protocol   -const char * basic_auth_login_file -  const struct lws_protocol_vhost_optionscgienv   const struct lws_protocol_vhost_optionsextra_mimetypes @@ -105,11 +103,30 @@ Data Fields   unsigned char mountpoint_len   +const char * basic_auth_login_file +  +void * _unused [2] + 

    Detailed Description

    struct lws_http_mount

    arguments for mounting something in a vhost's url namespace

    Field Documentation

    + +

    § _unused

    + +
    +
    + + + + +
    void* lws_http_mount::_unused[2]
    +
    +

    dummy

    + +
    +

    § auth_mask

    diff --git a/doc/html/structlws__http__mount.js b/doc/html/structlws__http__mount.js index 1433c65..0ae0c61 100644 --- a/doc/html/structlws__http__mount.js +++ b/doc/html/structlws__http__mount.js @@ -1,5 +1,6 @@ var structlws__http__mount = [ + [ "_unused", "structlws__http__mount.html#a78d58848eed7b544ae83f719abdbe4b6", null ], [ "auth_mask", "structlws__http__mount.html#a614364c770b0bd4db464ad65cddab477", null ], [ "basic_auth_login_file", "structlws__http__mount.html#a2f6c7dbc2d714b7259c67b7744d4ff98", null ], [ "cache_intermediaries", "structlws__http__mount.html#aabec1a326780aafe11b977000983be0c", null ], diff --git a/lib/lextable-strings.h b/lib/lextable-strings.h index 9d8d59f..898e6f3 100644 --- a/lib/lextable-strings.h +++ b/lib/lextable-strings.h @@ -94,6 +94,8 @@ STORE_IN_ROM static const char * const set[] = { "x-real-ip:", "http/1.0 ", + "x-forwarded-for", + "", /* not matchable */ }; diff --git a/lib/lextable.h b/lib/lextable.h index 520cfa3..7998fb7 100644 --- a/lib/lextable.h +++ b/lib/lextable.h @@ -170,7 +170,7 @@ /* pos 0128: 113 */ 0xB1 /* '1' -> */, /* pos 0129: 114 */ 0xAE /* '.' -> */, /* pos 012a: 115 */ 0x31 /* '1' */, 0x07, 0x00 /* (to 0x0131 state 116) */, - 0x30 /* '0' */, 0x0F, 0x03 /* (to 0x043C state 660) */, + 0x30 /* '0' */, 0x15, 0x03 /* (to 0x0442 state 660) */, 0x08, /* fail */ /* pos 0131: 116 */ 0xA0 /* ' ' -> */, /* pos 0132: 117 */ 0x00, 0x0F /* - terminal marker 15 - */, @@ -764,15 +764,30 @@ /* pos 042d: 648 */ 0x00, 0x4C /* - terminal marker 76 - */, /* pos 042f: 649 */ 0x00, 0x4D /* - terminal marker 77 - */, /* pos 0431: 650 */ 0xAD /* '-' -> */, -/* pos 0432: 651 */ 0xF2 /* 'r' -> */, -/* pos 0433: 652 */ 0xE5 /* 'e' -> */, -/* pos 0434: 653 */ 0xE1 /* 'a' -> */, -/* pos 0435: 654 */ 0xEC /* 'l' -> */, -/* pos 0436: 655 */ 0xAD /* '-' -> */, -/* pos 0437: 656 */ 0xE9 /* 'i' -> */, -/* pos 0438: 657 */ 0xF0 /* 'p' -> */, -/* pos 0439: 658 */ 0xBA /* ':' -> */, -/* pos 043a: 659 */ 0x00, 0x4E /* - terminal marker 78 - */, -/* pos 043c: 660 */ 0xA0 /* ' ' -> */, -/* pos 043d: 661 */ 0x00, 0x4F /* - terminal marker 79 - */, -/* total size 1087 bytes */ +/* pos 0432: 651 */ 0x72 /* 'r' */, 0x07, 0x00 /* (to 0x0439 state 652) */, + 0x66 /* 'f' */, 0x10, 0x00 /* (to 0x0445 state 662) */, + 0x08, /* fail */ +/* pos 0439: 652 */ 0xE5 /* 'e' -> */, +/* pos 043a: 653 */ 0xE1 /* 'a' -> */, +/* pos 043b: 654 */ 0xEC /* 'l' -> */, +/* pos 043c: 655 */ 0xAD /* '-' -> */, +/* pos 043d: 656 */ 0xE9 /* 'i' -> */, +/* pos 043e: 657 */ 0xF0 /* 'p' -> */, +/* pos 043f: 658 */ 0xBA /* ':' -> */, +/* pos 0440: 659 */ 0x00, 0x4E /* - terminal marker 78 - */, +/* pos 0442: 660 */ 0xA0 /* ' ' -> */, +/* pos 0443: 661 */ 0x00, 0x4F /* - terminal marker 79 - */, +/* pos 0445: 662 */ 0xEF /* 'o' -> */, +/* pos 0446: 663 */ 0xF2 /* 'r' -> */, +/* pos 0447: 664 */ 0xF7 /* 'w' -> */, +/* pos 0448: 665 */ 0xE1 /* 'a' -> */, +/* pos 0449: 666 */ 0xF2 /* 'r' -> */, +/* pos 044a: 667 */ 0xE4 /* 'd' -> */, +/* pos 044b: 668 */ 0xE5 /* 'e' -> */, +/* pos 044c: 669 */ 0xE4 /* 'd' -> */, +/* pos 044d: 670 */ 0xAD /* '-' -> */, +/* pos 044e: 671 */ 0xE6 /* 'f' -> */, +/* pos 044f: 672 */ 0xEF /* 'o' -> */, +/* pos 0450: 673 */ 0xF2 /* 'r' -> */, +/* pos 0451: 674 */ 0x00, 0x50 /* - terminal marker 80 - */, +/* total size 1107 bytes */ diff --git a/lib/libwebsockets.h b/lib/libwebsockets.h index 489db6f..614f125 100644 --- a/lib/libwebsockets.h +++ b/lib/libwebsockets.h @@ -2620,6 +2620,7 @@ enum lws_token_indexes { WSI_TOKEN_PROXY = 77, WSI_TOKEN_HTTP_X_REAL_IP = 78, WSI_TOKEN_HTTP1_0 = 79, + WSI_TOKEN_X_FORWARDED_FOR = 80, /****** add new things just above ---^ ******/ -- 2.7.4