From c2208640dd33965a5cab7fe8b061ac584da2b5cf Mon Sep 17 00:00:00 2001 From: Andy Green Date: Tue, 31 Jan 2017 10:50:15 +0800 Subject: [PATCH] logging: cleanup and introduce LLL_USER --- doc/html/globals_eval.html | 3 + doc/html/globals_l.html | 3 + doc/html/group__client.html | 2 +- doc/html/group__context-and-vhost.html | 8 +- doc/html/group__context-and-vhost.js | 3 +- 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/libwebsockets_8h.html | 3 +- doc/html/libwebsockets_8h.js | 3 +- doc/html/libwebsockets_8h_source.html | 303 +++++++++++++------------ doc/html/navtreedata.js | 6 +- doc/html/navtreeindex0.js | 6 +- doc/html/navtreeindex1.js | 10 +- doc/html/navtreeindex2.js | 60 ++--- doc/html/navtreeindex3.js | 18 +- doc/html/navtreeindex4.js | 8 +- lib/libwebsockets.h | 12 +- 19 files changed, 259 insertions(+), 241 deletions(-) diff --git a/doc/html/globals_eval.html b/doc/html/globals_eval.html index d8a68975..33d71c66 100644 --- a/doc/html/globals_eval.html +++ b/doc/html/globals_eval.html @@ -292,6 +292,9 @@ $(document).ready(function(){initNavTree('globals_eval.html','');});
  • LWS_SERVER_OPTION_IPV6_V6ONLY_VALUE : libwebsockets.h
  • +
  • LWS_SERVER_OPTION_JUST_USE_RAW_ORIGIN +: libwebsockets.h +
  • LWS_SERVER_OPTION_LIBEV : libwebsockets.h
  • diff --git a/doc/html/globals_l.html b/doc/html/globals_l.html index 2301275c..2f149b84 100644 --- a/doc/html/globals_l.html +++ b/doc/html/globals_l.html @@ -561,6 +561,9 @@ $(document).ready(function(){initNavTree('globals_l.html','');});
  • LWS_SERVER_OPTION_IPV6_V6ONLY_VALUE : libwebsockets.h
  • +
  • LWS_SERVER_OPTION_JUST_USE_RAW_ORIGIN +: libwebsockets.h +
  • LWS_SERVER_OPTION_LIBEV : libwebsockets.h
  • diff --git a/doc/html/group__client.html b/doc/html/group__client.html index 1dfb661b..acd71750 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

    -
    2072  {
    2073  LCCSCF_USE_SSL = (1 << 0),
    2074  LCCSCF_ALLOW_SELFSIGNED = (1 << 1),
    2075  LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK = (1 << 2),
    2076  LCCSCF_ALLOW_EXPIRED = (1 << 3)
    2077 };
    +
    2079  {
    2080  LCCSCF_USE_SSL = (1 << 0),
    2081  LCCSCF_ALLOW_SELFSIGNED = (1 << 1),
    2082  LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK = (1 << 2),
    2083  LCCSCF_ALLOW_EXPIRED = (1 << 3)
    2084 };

    Function Documentation

    diff --git a/doc/html/group__context-and-vhost.html b/doc/html/group__context-and-vhost.html index beecfb07..cd757169 100644 --- a/doc/html/group__context-and-vhost.html +++ b/doc/html/group__context-and-vhost.html @@ -113,7 +113,8 @@ Enumerations LWS_SERVER_OPTION_IPV6_V6ONLY_MODIFY = (1 << 16),
      LWS_SERVER_OPTION_IPV6_V6ONLY_VALUE = (1 << 17), -LWS_SERVER_OPTION_UV_NO_SIGSEGV_SIGFPE_SPIN = (1 << 18) +LWS_SERVER_OPTION_UV_NO_SIGSEGV_SIGFPE_SPIN = (1 << 18), +LWS_SERVER_OPTION_JUST_USE_RAW_ORIGIN = (1 << 19)
    }   @@ -207,8 +208,10 @@ LWS_VISIBLE LWS_EXTERN int  LWS_SERVER_OPTION_UV_NO_SIGSEGV_SIGFPE_SPIN 

    (CTX) Libuv only: Do not spin on SIGSEGV / SIGFPE. A segfault normally makes the lib spin so you can attach a debugger to it even if it happened without a debugger in place. You can disable that by giving this option.

    +LWS_SERVER_OPTION_JUST_USE_RAW_ORIGIN 

    For backwards-compatibility reasons, by default lws prepends "http://" to the origin you give in the client connection info struct. If you give this flag when you create the context, only the string you give in the client connect info for .origin (if any) will be used directly.

    + -
    1526  {
    1528  (1 << 12),
    1535  (1 << 12),
    1539  LWS_SERVER_OPTION_LIBEV = (1 << 4),
    1541  LWS_SERVER_OPTION_DISABLE_IPV6 = (1 << 5),
    1550  LWS_SERVER_OPTION_SSL_ECDH = (1 << 9) |
    1551  (1 << 12),
    1553  LWS_SERVER_OPTION_LIBUV = (1 << 10),
    1556  (1 << 12),
    1564  LWS_SERVER_OPTION_UNIX_SOCK = (1 << 14),
    1566  LWS_SERVER_OPTION_STS = (1 << 15),
    1580  /****** add new things just above ---^ ******/
    1581 };
    +
    1526  {
    1528  (1 << 12),
    1535  (1 << 12),
    1539  LWS_SERVER_OPTION_LIBEV = (1 << 4),
    1541  LWS_SERVER_OPTION_DISABLE_IPV6 = (1 << 5),
    1550  LWS_SERVER_OPTION_SSL_ECDH = (1 << 9) |
    1551  (1 << 12),
    1553  LWS_SERVER_OPTION_LIBUV = (1 << 10),
    1556  (1 << 12),
    1564  LWS_SERVER_OPTION_UNIX_SOCK = (1 << 14),
    1566  LWS_SERVER_OPTION_STS = (1 << 15),
    1587  /****** add new things just above ---^ ******/
    1588 };
    Definition: libwebsockets.h:1543
    Definition: libwebsockets.h:1573
    Definition: libwebsockets.h:1555
    @@ -224,6 +227,7 @@ LWS_VISIBLE LWS_EXTERN int 
    Definition: libwebsockets.h:1564
    Definition: libwebsockets.h:1548
    Definition: libwebsockets.h:1546
    +
    Definition: libwebsockets.h:1579
    Definition: libwebsockets.h:1566
    Definition: libwebsockets.h:1569
    diff --git a/doc/html/group__context-and-vhost.js b/doc/html/group__context-and-vhost.js index 8e167d56..398e6a2a 100644 --- a/doc/html/group__context-and-vhost.js +++ b/doc/html/group__context-and-vhost.js @@ -70,7 +70,8 @@ var group__context_and_vhost = [ "LWS_SERVER_OPTION_STS", "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5ac962efd35abf6c402f9fb14aa14f5016", null ], [ "LWS_SERVER_OPTION_IPV6_V6ONLY_MODIFY", "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5af62887536e25e053e68741006dba46d8", null ], [ "LWS_SERVER_OPTION_IPV6_V6ONLY_VALUE", "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aca5d42820b65eac5618ec3f0bd8a1160", null ], - [ "LWS_SERVER_OPTION_UV_NO_SIGSEGV_SIGFPE_SPIN", "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a87a824b2e812f4c3e7f2c4a1ea4f8abd", null ] + [ "LWS_SERVER_OPTION_UV_NO_SIGSEGV_SIGFPE_SPIN", "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a87a824b2e812f4c3e7f2c4a1ea4f8abd", null ], + [ "LWS_SERVER_OPTION_JUST_USE_RAW_ORIGIN", "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aa8d288cee6d03935ea6993546f2f2bcf", null ] ] ], [ "lws_context_deprecate", "group__context-and-vhost.html#ga1863f0a15ab9da0f07be7bd66230d232", null ], [ "lws_context_destroy", "group__context-and-vhost.html#ga8ee0314028755f1ddfa9428e09b4fddb", null ], diff --git a/doc/html/group__form-parsing.html b/doc/html/group__form-parsing.html index 21c23440..e2b295de 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

    -
    2916  {
    2921  LWS_UFS_OPEN
    2923 };
    Definition: libwebsockets.h:2919
    -
    Definition: libwebsockets.h:2921
    -
    Definition: libwebsockets.h:2917
    +
    2923  {
    2928  LWS_UFS_OPEN
    2930 };
    Definition: libwebsockets.h:2926
    +
    Definition: libwebsockets.h:2928
    +
    Definition: libwebsockets.h:2924
    diff --git a/doc/html/group__sending-data.html b/doc/html/group__sending-data.html index bfa8734e..247b5202 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

    -
    3263  {
    3264  LWS_WRITE_TEXT = 0,
    3268  LWS_WRITE_BINARY = 1,
    3274  LWS_WRITE_HTTP = 3,
    3277  /* LWS_WRITE_CLOSE is handled by lws_close_reason() */
    3278  LWS_WRITE_PING = 5,
    3279  LWS_WRITE_PONG = 6,
    3280 
    3281  /* Same as write_http but we know this write ends the transaction */
    3282  LWS_WRITE_HTTP_FINAL = 7,
    3283 
    3284  /* HTTP2 */
    3285 
    3293  /****** add new things just above ---^ ******/
    3294 
    3295  /* flags */
    3296 
    3297  LWS_WRITE_NO_FIN = 0x40,
    3304 };
    Definition: libwebsockets.h:3274
    -
    Definition: libwebsockets.h:3297
    -
    Definition: libwebsockets.h:3264
    -
    Definition: libwebsockets.h:3268
    -
    Definition: libwebsockets.h:3300
    -
    Definition: libwebsockets.h:3271
    -
    Definition: libwebsockets.h:3286
    +
    3270  {
    3271  LWS_WRITE_TEXT = 0,
    3275  LWS_WRITE_BINARY = 1,
    3281  LWS_WRITE_HTTP = 3,
    3284  /* LWS_WRITE_CLOSE is handled by lws_close_reason() */
    3285  LWS_WRITE_PING = 5,
    3286  LWS_WRITE_PONG = 6,
    3287 
    3288  /* Same as write_http but we know this write ends the transaction */
    3289  LWS_WRITE_HTTP_FINAL = 7,
    3290 
    3291  /* HTTP2 */
    3292 
    3300  /****** add new things just above ---^ ******/
    3301 
    3302  /* flags */
    3303 
    3304  LWS_WRITE_NO_FIN = 0x40,
    3311 };
    Definition: libwebsockets.h:3281
    +
    Definition: libwebsockets.h:3304
    +
    Definition: libwebsockets.h:3271
    +
    Definition: libwebsockets.h:3275
    +
    Definition: libwebsockets.h:3307
    +
    Definition: libwebsockets.h:3278
    +
    Definition: libwebsockets.h:3293
    diff --git a/doc/html/group__smtp.html b/doc/html/group__smtp.html index a0ffc892..4b34e151 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

    -
    4271  {
    4272  LGSSMTP_IDLE,
    4277  LGSSMTP_SENT_TO,
    4281 };
    Definition: libwebsockets.h:4274
    -
    Definition: libwebsockets.h:4279
    -
    Definition: libwebsockets.h:4272
    -
    Definition: libwebsockets.h:4273
    -
    Definition: libwebsockets.h:4277
    -
    Definition: libwebsockets.h:4276
    -
    Definition: libwebsockets.h:4280
    -
    Definition: libwebsockets.h:4275
    -
    Definition: libwebsockets.h:4278
    +
    4278  {
    4279  LGSSMTP_IDLE,
    4284  LGSSMTP_SENT_TO,
    4288 };
    Definition: libwebsockets.h:4281
    +
    Definition: libwebsockets.h:4286
    +
    Definition: libwebsockets.h:4279
    +
    Definition: libwebsockets.h:4280
    +
    Definition: libwebsockets.h:4284
    +
    Definition: libwebsockets.h:4283
    +
    Definition: libwebsockets.h:4287
    +
    Definition: libwebsockets.h:4282
    +
    Definition: libwebsockets.h:4285
    diff --git a/doc/html/group__vhost-mounts.html b/doc/html/group__vhost-mounts.html index c98e43c2..62c82d8d 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

    -
    1995  {
    1996  LWSMPRO_HTTP = 0,
    1997  LWSMPRO_HTTPS = 1,
    1998  LWSMPRO_FILE = 2,
    1999  LWSMPRO_CGI = 3,
    2000  LWSMPRO_REDIR_HTTP = 4,
    2001  LWSMPRO_REDIR_HTTPS = 5,
    2002  LWSMPRO_CALLBACK = 6,
    2003 };
    Definition: libwebsockets.h:1999
    -
    Definition: libwebsockets.h:1997
    -
    Definition: libwebsockets.h:1998
    -
    Definition: libwebsockets.h:2000
    -
    Definition: libwebsockets.h:2001
    -
    Definition: libwebsockets.h:1996
    -
    Definition: libwebsockets.h:2002
    +
    2002  {
    2003  LWSMPRO_HTTP = 0,
    2004  LWSMPRO_HTTPS = 1,
    2005  LWSMPRO_FILE = 2,
    2006  LWSMPRO_CGI = 3,
    2007  LWSMPRO_REDIR_HTTP = 4,
    2008  LWSMPRO_REDIR_HTTPS = 5,
    2009  LWSMPRO_CALLBACK = 6,
    2010 };
    Definition: libwebsockets.h:2006
    +
    Definition: libwebsockets.h:2004
    +
    Definition: libwebsockets.h:2005
    +
    Definition: libwebsockets.h:2007
    +
    Definition: libwebsockets.h:2008
    +
    Definition: libwebsockets.h:2003
    +
    Definition: libwebsockets.h:2009
    diff --git a/doc/html/libwebsockets_8h.html b/doc/html/libwebsockets_8h.html index 1570d928..63c95c29 100644 --- a/doc/html/libwebsockets_8h.html +++ b/doc/html/libwebsockets_8h.html @@ -366,7 +366,8 @@ Enumerations LWS_SERVER_OPTION_IPV6_V6ONLY_MODIFY = (1 << 16),
      LWS_SERVER_OPTION_IPV6_V6ONLY_VALUE = (1 << 17), -LWS_SERVER_OPTION_UV_NO_SIGSEGV_SIGFPE_SPIN = (1 << 18) +LWS_SERVER_OPTION_UV_NO_SIGSEGV_SIGFPE_SPIN = (1 << 18), +LWS_SERVER_OPTION_JUST_USE_RAW_ORIGIN = (1 << 19)
    }   diff --git a/doc/html/libwebsockets_8h.js b/doc/html/libwebsockets_8h.js index b5ac42e1..6c8cfc87 100644 --- a/doc/html/libwebsockets_8h.js +++ b/doc/html/libwebsockets_8h.js @@ -166,7 +166,8 @@ var libwebsockets_8h = [ "LWS_SERVER_OPTION_STS", "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5ac962efd35abf6c402f9fb14aa14f5016", null ], [ "LWS_SERVER_OPTION_IPV6_V6ONLY_MODIFY", "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5af62887536e25e053e68741006dba46d8", null ], [ "LWS_SERVER_OPTION_IPV6_V6ONLY_VALUE", "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aca5d42820b65eac5618ec3f0bd8a1160", null ], - [ "LWS_SERVER_OPTION_UV_NO_SIGSEGV_SIGFPE_SPIN", "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a87a824b2e812f4c3e7f2c4a1ea4f8abd", null ] + [ "LWS_SERVER_OPTION_UV_NO_SIGSEGV_SIGFPE_SPIN", "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a87a824b2e812f4c3e7f2c4a1ea4f8abd", null ], + [ "LWS_SERVER_OPTION_JUST_USE_RAW_ORIGIN", "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aa8d288cee6d03935ea6993546f2f2bcf", null ] ] ], [ "lws_enum_stdinouterr", "libwebsockets_8h.html#a2271141d8be8d72b47ba327130b4905f", [ [ "LWS_STDIN", "libwebsockets_8h.html#a2271141d8be8d72b47ba327130b4905fafdb6cf2797a3ea957c690ad6edff25d6", null ], diff --git a/doc/html/libwebsockets_8h_source.html b/doc/html/libwebsockets_8h_source.html index 43cec6e3..e4fe9879 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) && !defined(OPTEE_TA)
    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 #if !defined(OPTEE_TA)
    220 #include <sys/time.h>
    221 #include <unistd.h>
    222 #endif
    223 #endif
    224 
    225 #ifdef LWS_OPENSSL_SUPPORT
    226 
    227 #ifdef USE_WOLFSSL
    228 #ifdef USE_OLD_CYASSL
    229 #include <cyassl/openssl/ssl.h>
    230 #include <cyassl/error-ssl.h>
    231 #else
    232 #include <wolfssl/openssl/ssl.h>
    233 #include <wolfssl/error-ssl.h>
    234 #endif /* not USE_OLD_CYASSL */
    235 #else
    236 #if defined(LWS_USE_POLARSSL)
    237 #include <polarssl/ssl.h>
    239  x509_crt ca;
    240  x509_crt certificate;
    241  rsa_context key;
    242 };
    243 typedef struct lws_polarssl_context SSL_CTX;
    244 typedef ssl_context SSL;
    245 #else
    246 #if defined(LWS_USE_MBEDTLS)
    247 #include <mbedtls/ssl.h>
    248 #else
    249 #include <openssl/ssl.h>
    250 #include <openssl/err.h>
    251 #endif /* not USE_MBEDTLS */
    252 #endif /* not USE_POLARSSL */
    253 #endif /* not USE_WOLFSSL */
    254 #endif
    255 
    256 
    257 #define CONTEXT_PORT_NO_LISTEN -1
    258 #define CONTEXT_PORT_NO_LISTEN_SERVER -2
    259 
    270 
    272 enum lws_log_levels {
    273  LLL_ERR = 1 << 0,
    274  LLL_WARN = 1 << 1,
    275  LLL_NOTICE = 1 << 2,
    276  LLL_INFO = 1 << 3,
    277  LLL_DEBUG = 1 << 4,
    278  LLL_PARSER = 1 << 5,
    279  LLL_HEADER = 1 << 6,
    280  LLL_EXT = 1 << 7,
    281  LLL_CLIENT = 1 << 8,
    282  LLL_LATENCY = 1 << 9,
    283 
    284  LLL_COUNT = 10 /* set to count of valid flags */
    285 };
    286 
    287 LWS_VISIBLE LWS_EXTERN void _lws_log(int filter, const char *format, ...);
    288 LWS_VISIBLE LWS_EXTERN void _lws_logv(int filter, const char *format, va_list vl);
    298 LWS_VISIBLE LWS_EXTERN int
    299 lwsl_timestamp(int level, char *p, int len);
    300 
    301 #define lwsl_err(...) _lws_log(LLL_ERR, __VA_ARGS__)
    302 
    303 #if !defined(LWS_WITH_NO_LOGS)
    304 /* notice, warn and log are always compiled in */
    305 #define lwsl_warn(...) _lws_log(LLL_WARN, __VA_ARGS__)
    306 #define lwsl_notice(...) _lws_log(LLL_NOTICE, __VA_ARGS__)
    307 #endif
    308 /*
    309  * weaker logging can be deselected at configure time using --disable-debug
    310  * that gets rid of the overhead of checking while keeping _warn and _err
    311  * active
    312  */
    313 
    314 #if defined(LWS_WITH_ESP8266)
    315 #undef _DEBUG
    316 #endif
    317 
    318 #ifdef _DEBUG
    319 #if defined(LWS_WITH_NO_LOGS)
    320 /* notice, warn and log are always compiled in */
    321 //#define lwsl_err(...) _lws_log(LLL_ERR, __VA_ARGS__)
    322 #define lwsl_warn(...) _lws_log(LLL_WARN, __VA_ARGS__)
    323 #define lwsl_notice(...) _lws_log(LLL_NOTICE, __VA_ARGS__)
    324 #endif
    325 #define lwsl_info(...) _lws_log(LLL_INFO, __VA_ARGS__)
    326 #define lwsl_debug(...) _lws_log(LLL_DEBUG, __VA_ARGS__)
    327 #define lwsl_parser(...) _lws_log(LLL_PARSER, __VA_ARGS__)
    328 #define lwsl_header(...) _lws_log(LLL_HEADER, __VA_ARGS__)
    329 #define lwsl_ext(...) _lws_log(LLL_EXT, __VA_ARGS__)
    330 #define lwsl_client(...) _lws_log(LLL_CLIENT, __VA_ARGS__)
    331 #define lwsl_latency(...) _lws_log(LLL_LATENCY, __VA_ARGS__)
    332 
    338 LWS_VISIBLE LWS_EXTERN void lwsl_hexdump(void *buf, size_t len);
    339 
    340 #else /* no debug */
    341 #if defined(LWS_WITH_NO_LOGS)
    342 //#define lwsl_err(...) do {} while(0)
    343 #define lwsl_warn(...) do {} while(0)
    344 #define lwsl_notice(...) do {} while(0)
    345 #endif
    346 #define lwsl_info(...) do {} while(0)
    347 #define lwsl_debug(...) do {} while(0)
    348 #define lwsl_parser(...) do {} while(0)
    349 #define lwsl_header(...) do {} while(0)
    350 #define lwsl_ext(...) do {} while(0)
    351 #define lwsl_client(...) do {} while(0)
    352 #define lwsl_latency(...) do {} while(0)
    353 #define lwsl_hexdump(a, b)
    354 
    355 #endif
    356 
    367 LWS_VISIBLE LWS_EXTERN void
    368 lws_set_log_level(int level,
    369  void (*log_emit_function)(int level, const char *line));
    370 
    380 LWS_VISIBLE LWS_EXTERN void
    381 lwsl_emit_syslog(int level, const char *line);
    382 
    384 
    385 
    386 #include <stddef.h>
    387 
    388 #ifndef lws_container_of
    389 #define lws_container_of(P,T,M) ((T *)((char *)(P) - offsetof(T, M)))
    390 #endif
    391 
    392 
    393 struct lws;
    394 #ifndef ARRAY_SIZE
    395 #define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
    396 #endif
    397 
    398 /* api change list for user code to test against */
    399 
    400 #define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_ARG
    401 
    402 /* the struct lws_protocols has the id field present */
    403 #define LWS_FEATURE_PROTOCOLS_HAS_ID_FIELD
    404 
    405 /* you can call lws_get_peer_write_allowance */
    406 #define LWS_FEATURE_PROTOCOLS_HAS_PEER_WRITE_ALLOWANCE
    407 
    408 /* extra parameter introduced in 917f43ab821 */
    409 #define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_LEN
    410 
    411 /* File operations stuff exists */
    412 #define LWS_FEATURE_FOPS
    413 
    414 
    415 #if defined(_WIN32)
    416 typedef SOCKET lws_sockfd_type;
    417 typedef HANDLE lws_filefd_type;
    418 #define lws_sockfd_valid(sfd) (!!sfd)
    419 struct lws_pollfd {
    420  lws_sockfd_type fd;
    421  SHORT events;
    422  SHORT revents;
    423 };
    424 #define LWS_POLLHUP (FD_CLOSE)
    425 #define LWS_POLLIN (FD_READ | FD_ACCEPT)
    426 #define LWS_POLLOUT (FD_WRITE)
    427 #else
    428 
    429 #if defined(MBED_OPERATORS)
    430 /* it's a class lws_conn * */
    431 typedef void * lws_sockfd_type;
    432 typedef void * lws_filefd_type;
    433 #define lws_sockfd_valid(sfd) (!!sfd)
    434 struct pollfd {
    435  lws_sockfd_type fd;
    436  short events;
    437  short revents;
    438 };
    439 #define POLLIN 0x0001
    440 #define POLLPRI 0x0002
    441 #define POLLOUT 0x0004
    442 #define POLLERR 0x0008
    443 #define POLLHUP 0x0010
    444 #define POLLNVAL 0x0020
    445 
    446 struct lws;
    447 
    448 void * mbed3_create_tcp_stream_socket(void);
    449 void mbed3_delete_tcp_stream_socket(void *sockfd);
    450 void mbed3_tcp_stream_bind(void *sock, int port, struct lws *);
    451 void mbed3_tcp_stream_accept(void *sock, struct lws *);
    452 #else
    453 #if defined(LWS_WITH_ESP8266)
    454 
    455 #include <user_interface.h>
    456 #include <espconn.h>
    457 
    458 typedef struct espconn * lws_sockfd_type;
    459 typedef void * lws_filefd_type;
    460 #define lws_sockfd_valid(sfd) (!!sfd)
    461 struct pollfd {
    462  lws_sockfd_type fd;
    463  short events;
    464  short revents;
    465 };
    466 #define POLLIN 0x0001
    467 #define POLLPRI 0x0002
    468 #define POLLOUT 0x0004
    469 #define POLLERR 0x0008
    470 #define POLLHUP 0x0010
    471 #define POLLNVAL 0x0020
    472 
    473 struct lws_vhost;
    474 
    475 lws_sockfd_type esp8266_create_tcp_listen_socket(struct lws_vhost *vh);
    476 void esp8266_tcp_stream_accept(lws_sockfd_type fd, struct lws *wsi);
    477 
    478 #include <os_type.h>
    479 #include <osapi.h>
    480 #include "ets_sys.h"
    481 
    482 int ets_snprintf(char *str, size_t size, const char *format, ...);
    483 #define snprintf ets_snprintf
    484 
    485 typedef os_timer_t uv_timer_t;
    486 typedef void uv_cb_t(uv_timer_t *);
    487 
    488 void os_timer_disarm(void *);
    489 void os_timer_setfn(os_timer_t *, os_timer_func_t *, void *);
    490 
    491 void ets_timer_arm_new(os_timer_t *, int, int, int);
    492 
    493 //void os_timer_arm(os_timer_t *, int, int);
    494 
    495 #define UV_VERSION_MAJOR 1
    496 
    497 #define lws_uv_getloop(a, b) (NULL)
    498 
    499 static inline void uv_timer_init(void *l, uv_timer_t *t)
    500 {
    501  (void)l;
    502  memset(t, 0, sizeof(*t));
    503  os_timer_disarm(t);
    504 }
    505 
    506 static inline void uv_timer_start(uv_timer_t *t, uv_cb_t *cb, int first, int rep)
    507 {
    508  os_timer_setfn(t, (os_timer_func_t *)cb, t);
    509  /* ms, repeat */
    510  os_timer_arm(t, first, !!rep);
    511 }
    512 
    513 static inline void uv_timer_stop(uv_timer_t *t)
    514 {
    515  os_timer_disarm(t);
    516 }
    517 
    518 #else
    519 typedef int lws_sockfd_type;
    520 typedef int lws_filefd_type;
    521 #define lws_sockfd_valid(sfd) (sfd >= 0)
    522 #endif
    523 #endif
    524 
    525 #define lws_pollfd pollfd
    526 #define LWS_POLLHUP (POLLHUP|POLLERR)
    527 #define LWS_POLLIN (POLLIN)
    528 #define LWS_POLLOUT (POLLOUT)
    529 #endif
    530 
    533 struct lws_pollargs {
    534  lws_sockfd_type fd;
    535  int events;
    537 };
    538 
    539 struct lws_tokens;
    540 struct lws_token_limits;
    541 
    549 
    551 /*
    552  * NOTE: These public enums are part of the abi. If you want to add one,
    553  * add it at where specified so existing users are unaffected.
    554  */
    557  LWS_CLOSE_STATUS_NOSTATUS = 0,
    619  /****** add new things just above ---^ ******/
    620 
    621  LWS_CLOSE_STATUS_NOSTATUS_CONTEXT_DESTROY = 9999,
    622 };
    623 
    636 LWS_VISIBLE LWS_EXTERN void
    637 lws_close_reason(struct lws *wsi, enum lws_close_status status,
    638  unsigned char *buf, size_t len);
    639 
    641 
    642 struct lws;
    643 struct lws_context;
    644 /* needed even with extensions disabled for create context */
    645 struct lws_extension;
    646 
    658 
    660 
    661 /*
    662  * NOTE: These public enums are part of the abi. If you want to add one,
    663  * add it at where specified so existing users are unaffected.
    664  */
    908  /* external poll() management support */
    971  LWS_CALLBACK_WS_EXT_DEFAULTS = 39,
    974  LWS_CALLBACK_CGI = 40,
    976  LWS_CALLBACK_CGI_TERMINATED = 41,
    978  LWS_CALLBACK_CGI_STDIN_DATA = 42,
    980  LWS_CALLBACK_CGI_STDIN_COMPLETED = 43,
    982  LWS_CALLBACK_ESTABLISHED_CLIENT_HTTP = 44,
    984  LWS_CALLBACK_CLOSED_CLIENT_HTTP = 45,
    986  LWS_CALLBACK_RECEIVE_CLIENT_HTTP = 46,
    988  LWS_CALLBACK_COMPLETED_CLIENT_HTTP = 47,
    990  LWS_CALLBACK_RECEIVE_CLIENT_HTTP_READ = 48,
    992  LWS_CALLBACK_HTTP_BIND_PROTOCOL = 49,
    994  LWS_CALLBACK_HTTP_DROP_PROTOCOL = 50,
    996  LWS_CALLBACK_CHECK_ACCESS_RIGHTS = 51,
    998  LWS_CALLBACK_PROCESS_HTML = 52,
    1000  LWS_CALLBACK_ADD_HEADERS = 53,
    1002  LWS_CALLBACK_SESSION_INFO = 54,
    1005  LWS_CALLBACK_GS_EVENT = 55,
    1052  /****** add new things just above ---^ ******/
    1053 
    1056 };
    1057 
    1058 
    1059 
    1075 typedef int
    1076 lws_callback_function(struct lws *wsi, enum lws_callback_reasons reason,
    1077  void *user, void *in, size_t len);
    1079 
    1089 
    1091 /*
    1092  * NOTE: These public enums are part of the abi. If you want to add one,
    1093  * add it at where specified so existing users are unaffected.
    1094  */
    1095 enum lws_extension_callback_reasons {
    1096  LWS_EXT_CB_SERVER_CONTEXT_CONSTRUCT = 0,
    1097  LWS_EXT_CB_CLIENT_CONTEXT_CONSTRUCT = 1,
    1098  LWS_EXT_CB_SERVER_CONTEXT_DESTRUCT = 2,
    1099  LWS_EXT_CB_CLIENT_CONTEXT_DESTRUCT = 3,
    1100  LWS_EXT_CB_CONSTRUCT = 4,
    1101  LWS_EXT_CB_CLIENT_CONSTRUCT = 5,
    1102  LWS_EXT_CB_CHECK_OK_TO_REALLY_CLOSE = 6,
    1103  LWS_EXT_CB_CHECK_OK_TO_PROPOSE_EXTENSION = 7,
    1104  LWS_EXT_CB_DESTROY = 8,
    1105  LWS_EXT_CB_DESTROY_ANY_WSI_CLOSING = 9,
    1106  LWS_EXT_CB_ANY_WSI_ESTABLISHED = 10,
    1107  LWS_EXT_CB_PACKET_RX_PREPARSE = 11,
    1108  LWS_EXT_CB_PACKET_TX_PRESEND = 12,
    1109  LWS_EXT_CB_PACKET_TX_DO_SEND = 13,
    1110  LWS_EXT_CB_HANDSHAKE_REPLY_TX = 14,
    1111  LWS_EXT_CB_FLUSH_PENDING_TX = 15,
    1112  LWS_EXT_CB_EXTENDED_PAYLOAD_RX = 16,
    1113  LWS_EXT_CB_CAN_PROXY_CLIENT_CONNECTION = 17,
    1114  LWS_EXT_CB_1HZ = 18,
    1115  LWS_EXT_CB_REQUEST_ON_WRITEABLE = 19,
    1116  LWS_EXT_CB_IS_WRITEABLE = 20,
    1117  LWS_EXT_CB_PAYLOAD_TX = 21,
    1118  LWS_EXT_CB_PAYLOAD_RX = 22,
    1119  LWS_EXT_CB_OPTION_DEFAULT = 23,
    1120  LWS_EXT_CB_OPTION_SET = 24,
    1121  LWS_EXT_CB_OPTION_CONFIRM = 25,
    1122  LWS_EXT_CB_NAMED_OPTION_SET = 26,
    1123 
    1124  /****** add new things just above ---^ ******/
    1125 };
    1126 
    1133  /* Add new things just above here ---^
    1134  * This is part of the ABI, don't needlessly break compatibility */
    1135 };
    1136 
    1142  const char *name;
    1145  /* Add new things just above here ---^
    1146  * This is part of the ABI, don't needlessly break compatibility */
    1147 };
    1148 
    1151  const char *option_name;
    1153  const char *start;
    1154  int len;
    1155 };
    1156 
    1217 typedef int
    1218 lws_extension_callback_function(struct lws_context *context,
    1219  const struct lws_extension *ext, struct lws *wsi,
    1220  enum lws_extension_callback_reasons reason,
    1221  void *user, void *in, size_t len);
    1222 
    1225  const char *name;
    1227  const char *client_offer;
    1229  /* Add new things just above here ---^
    1230  * This is part of the ABI, don't needlessly break compatibility */
    1231 };
    1232 
    1241 LWS_VISIBLE LWS_EXTERN int
    1242 lws_set_extension_option(struct lws *wsi, const char *ext_name,
    1243  const char *opt_name, const char *opt_val);
    1244 
    1245 #ifndef LWS_NO_EXTENSIONS
    1246 /* lws_get_internal_extensions() - DEPRECATED
    1247  *
    1248  * \Deprecated There is no longer a set internal extensions table. The table is provided
    1249  * by user code along with application-specific settings. See the test
    1250  * client and server for how to do.
    1251  */
    1252 static LWS_INLINE LWS_WARN_DEPRECATED const struct lws_extension *
    1253 lws_get_internal_extensions(void) { return NULL; }
    1254 
    1265 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    1266 lws_ext_parse_options(const struct lws_extension *ext, struct lws *wsi,
    1267  void *ext_user, const struct lws_ext_options *opts,
    1268  const char *o, int len);
    1269 #endif
    1270 
    1283 LWS_EXTERN
    1285  struct lws_context *context, const struct lws_extension *ext,
    1286  struct lws *wsi, enum lws_extension_callback_reasons reason,
    1287  void *user, void *in, size_t len);
    1288 
    1289 /*
    1290  * The internal exts are part of the public abi
    1291  * If we add more extensions, publish the callback here ------v
    1292  */
    1294 
    1310 
    1315  const char *name;
    1336  unsigned int id;
    1343  void *user;
    1346  /* Add new things just above here ---^
    1347  * This is part of the ABI, don't needlessly break compatibility */
    1348 };
    1349 
    1350 struct lws_vhost;
    1351 
    1360 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
    1361 lws_vhost_name_to_protocol(struct lws_vhost *vh, const char *name);
    1362 
    1372 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
    1373 lws_get_protocol(struct lws *wsi);
    1374 
    1376 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
    1377 lws_protocol_get(struct lws *wsi) LWS_WARN_DEPRECATED;
    1378 
    1389 LWS_VISIBLE LWS_EXTERN void *
    1390 lws_protocol_vh_priv_zalloc(struct lws_vhost *vhost, const struct lws_protocols *prot,
    1391  int size);
    1392 
    1402 LWS_VISIBLE LWS_EXTERN void *
    1403 lws_protocol_vh_priv_get(struct lws_vhost *vhost, const struct lws_protocols *prot);
    1404 
    1413 LWS_VISIBLE LWS_EXTERN int
    1414 lws_finalize_startup(struct lws_context *context);
    1415 
    1416 #ifdef LWS_WITH_PLUGINS
    1417 
    1418 /* PLUGINS implies LIBUV */
    1419 
    1420 #define LWS_PLUGIN_API_MAGIC 180
    1421 
    1424  unsigned int api_magic;
    1425  const struct lws_protocols *protocols;
    1427  const struct lws_extension *extensions;
    1429 };
    1430 
    1431 typedef int (*lws_plugin_init_func)(struct lws_context *,
    1432  struct lws_plugin_capability *);
    1433 typedef int (*lws_plugin_destroy_func)(struct lws_context *);
    1434 
    1436 struct lws_plugin {
    1437  struct lws_plugin *list;
    1438 #if (UV_VERSION_MAJOR > 0)
    1439  uv_lib_t lib;
    1440 #else
    1441  void *l;
    1442 #endif
    1443  char name[64];
    1445 };
    1446 
    1447 #endif
    1448 
    1450 
    1451 
    1460 
    1462 #define LWSGS_EMAIL_CONTENT_SIZE 16384
    1463 
    1465 /* SHA-1 binary and hexified versions */
    1467 typedef struct { unsigned char bin[20]; } lwsgw_hash_bin;
    1469 typedef struct { char id[41]; } lwsgw_hash;
    1470 
    1477 };
    1478 
    1481  char username[32];
    1482  char email[100];
    1483  char ip[72];
    1484  unsigned int mask;
    1486  char session[42];
    1487 };
    1488 
    1493 };
    1494 
    1497  enum lws_gs_event event;
    1498  const char *username;
    1499  const char *email;
    1500 };
    1501 
    1503 
    1504 
    1518 
    1520 /*
    1521  * NOTE: These public enums are part of the abi. If you want to add one,
    1522  * add it at where specified so existing users are unaffected.
    1523  */
    1524 
    1528  (1 << 12),
    1535  (1 << 12),
    1551  (1 << 12),
    1556  (1 << 12),
    1580  /****** add new things just above ---^ ******/
    1581 };
    1582 
    1583 #define lws_check_opt(c, f) (((c) & (f)) == (f))
    1584 
    1595  int port;
    1600  const char *iface;
    1607  const struct lws_protocols *protocols;
    1611  const struct lws_extension *extensions;
    1619  const char *ssl_cert_filepath;
    1629  const char *ssl_ca_filepath;
    1631  const char *ssl_cipher_list;
    1635  const char *http_proxy_address;
    1638  unsigned int http_proxy_port;
    1640  int gid;
    1642  int uid;
    1644  unsigned int options;
    1646  void *user;
    1649  int ka_time;
    1659 #ifdef LWS_OPENSSL_SUPPORT
    1665 #else /* maintain structure layout either way */
    1667 #endif
    1668 
    1679  unsigned int count_threads;
    1681  unsigned int fd_limit_per_thread;
    1685  unsigned int timeout_secs;
    1690  const char *ecdh_curve;
    1692  const char *vhost_name;
    1696  const char * const *plugin_dirs;
    1705  const char *log_filepath;
    1708  const struct lws_http_mount *mounts;
    1710  const char *server_string;
    1713  unsigned int pt_serv_buf_size;
    1728  unsigned short ws_ping_pong_interval;
    1759  /* Add new things just above here ---^
    1760  * This is part of the ABI, don't needlessly break compatibility
    1761  *
    1762  * The below is to ensure later library versions with new
    1763  * members added above will see 0 (default) even if the app
    1764  * was not built against the newer headers.
    1765  */
    1766 
    1767  void *_unused[8];
    1768 };
    1769 
    1804 LWS_VISIBLE LWS_EXTERN struct lws_context *
    1806 
    1815 LWS_VISIBLE LWS_EXTERN void
    1816 lws_context_destroy(struct lws_context *context);
    1817 
    1818 LWS_VISIBLE LWS_EXTERN void
    1819 lws_context_destroy2(struct lws_context *context);
    1820 
    1821 typedef int (*lws_reload_func)(void);
    1822 
    1847 LWS_VISIBLE LWS_EXTERN void
    1848 lws_context_deprecate(struct lws_context *context, lws_reload_func cb);
    1849 
    1850 LWS_VISIBLE LWS_EXTERN int
    1851 lws_context_is_deprecated(struct lws_context *context);
    1852 
    1870 LWS_VISIBLE LWS_EXTERN int
    1871 lws_set_proxy(struct lws_vhost *vhost, const char *proxy);
    1872 
    1873 
    1874 struct lws_vhost;
    1875 
    1885 LWS_EXTERN LWS_VISIBLE struct lws_vhost *
    1886 lws_create_vhost(struct lws_context *context,
    1887  struct lws_context_creation_info *info);
    1888 
    1903 LWS_VISIBLE LWS_EXTERN int
    1904 lwsws_get_config_globals(struct lws_context_creation_info *info, const char *d,
    1905  char **config_strings, int *len);
    1906 
    1922 LWS_VISIBLE LWS_EXTERN int
    1923 lwsws_get_config_vhosts(struct lws_context *context,
    1924  struct lws_context_creation_info *info, const char *d,
    1925  char **config_strings, int *len);
    1926 
    1928 LWS_VISIBLE LWS_EXTERN struct lws_vhost *
    1929 lws_vhost_get(struct lws *wsi) LWS_WARN_DEPRECATED;
    1930 
    1936 LWS_VISIBLE LWS_EXTERN struct lws_vhost *
    1937 lws_get_vhost(struct lws *wsi);
    1938 
    1946 LWS_VISIBLE LWS_EXTERN int
    1947 lws_json_dump_vhost(const struct lws_vhost *vh, char *buf, int len);
    1948 
    1956 LWS_VISIBLE LWS_EXTERN int
    1957 lws_json_dump_context(const struct lws_context *context, char *buf, int len,
    1958  int hide_vhosts);
    1959 
    1969 LWS_VISIBLE LWS_EXTERN void *
    1970 lws_context_user(struct lws_context *context);
    1971 
    1977 
    1987  const char *name;
    1988  const char *value;
    1989 };
    1990 
    2003 };
    2004 
    2012  const char *mountpoint;
    2014  const char *origin;
    2016  const char *def;
    2018  const char *protocol;
    2034  unsigned int auth_mask;
    2037  unsigned int cache_reusable:1;
    2038  unsigned int cache_revalidate:1;
    2039  unsigned int cache_intermediaries:1;
    2041  unsigned char origin_protocol;
    2042  unsigned char mountpoint_len;
    2047  /* Add new things just above here ---^
    2048  * This is part of the ABI, don't needlessly break compatibility
    2049  *
    2050  * The below is to ensure later library versions with new
    2051  * members added above will see 0 (default) even if the app
    2052  * was not built against the newer headers.
    2053  */
    2054 
    2055  void *_unused[2];
    2056 };
    2059 
    2065 
    2073  LCCSCF_USE_SSL = (1 << 0),
    2074  LCCSCF_ALLOW_SELFSIGNED = (1 << 1),
    2075  LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK = (1 << 2),
    2076  LCCSCF_ALLOW_EXPIRED = (1 << 3)
    2077 };
    2078 
    2083  struct lws_context *context;
    2085  const char *address;
    2087  int port;
    2091  const char *path;
    2093  const char *host;
    2095  const char *origin;
    2097  const char *protocol;
    2101  void *userdata;
    2105  const char *method;
    2108  struct lws *parent_wsi;
    2112  const char *uri_replace_from;
    2115  const char *uri_replace_to;
    2117  struct lws_vhost *vhost;
    2119  struct lws **pwsi;
    2131  /* Add new things just above here ---^
    2132  * This is part of the ABI, don't needlessly break compatibility
    2133  *
    2134  * The below is to ensure later library versions with new
    2135  * members added above will see 0 (default) even if the app
    2136  * was not built against the newer headers.
    2137  */
    2138 
    2139  void *_unused[4];
    2140 };
    2141 
    2149 LWS_VISIBLE LWS_EXTERN struct lws *
    2151 
    2172 /* deprecated, use lws_client_connect_via_info() */
    2173 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    2174 lws_client_connect(struct lws_context *clients, const char *address,
    2175  int port, int ssl_connection, const char *path,
    2176  const char *host, const char *origin, const char *protocol,
    2177  int ietf_version_or_minus_one) LWS_WARN_DEPRECATED;
    2178 /* deprecated, use lws_client_connect_via_info() */
    2199 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    2200 lws_client_connect_extended(struct lws_context *clients, const char *address,
    2201  int port, int ssl_connection, const char *path,
    2202  const char *host, const char *origin,
    2203  const char *protocol, int ietf_version_or_minus_one,
    2204  void *userdata) LWS_WARN_DEPRECATED;
    2205 
    2231 LWS_VISIBLE LWS_EXTERN int
    2233  struct lws_vhost *vhost);
    2234 
    2235 LWS_VISIBLE LWS_EXTERN int
    2236 lws_http_client_read(struct lws *wsi, char **buf, int *len);
    2237 
    2245 LWS_VISIBLE LWS_EXTERN unsigned int
    2246 lws_http_client_http_response(struct lws *wsi);
    2247 
    2248 LWS_VISIBLE LWS_EXTERN void
    2249 lws_client_http_body_pending(struct lws *wsi, int something_left_to_send);
    2250 
    2271 
    2280 
    2313 LWS_VISIBLE LWS_EXTERN int
    2314 lws_service(struct lws_context *context, int timeout_ms);
    2315 
    2327 LWS_VISIBLE LWS_EXTERN int
    2328 lws_service_tsi(struct lws_context *context, int timeout_ms, int tsi);
    2329 
    2345 LWS_VISIBLE LWS_EXTERN void
    2346 lws_cancel_service_pt(struct lws *wsi);
    2347 
    2359 LWS_VISIBLE LWS_EXTERN void
    2360 lws_cancel_service(struct lws_context *context);
    2361 
    2388 LWS_VISIBLE LWS_EXTERN int
    2389 lws_service_fd(struct lws_context *context, struct lws_pollfd *pollfd);
    2390 
    2400 LWS_VISIBLE LWS_EXTERN int
    2401 lws_service_fd_tsi(struct lws_context *context, struct lws_pollfd *pollfd,
    2402  int tsi);
    2403 
    2421 LWS_VISIBLE LWS_EXTERN int
    2422 lws_service_adjust_timeout(struct lws_context *context, int timeout_ms, int tsi);
    2423 
    2424 /* Backwards compatibility */
    2425 #define lws_plat_service_tsi lws_service_tsi
    2426 
    2428 
    2434 
    2441 
    2453 LWS_VISIBLE LWS_EXTERN const char *
    2454 lws_get_mimetype(const char *file, const struct lws_http_mount *m);
    2455 
    2474 LWS_VISIBLE LWS_EXTERN int
    2475 lws_serve_http_file(struct lws *wsi, const char *file, const char *content_type,
    2476  const char *other_headers, int other_headers_len);
    2477 LWS_VISIBLE LWS_EXTERN int
    2478 lws_serve_http_file_fragment(struct lws *wsi);
    2480 
    2491 
    2492 enum http_status {
    2493  HTTP_STATUS_OK = 200,
    2494  HTTP_STATUS_NO_CONTENT = 204,
    2495  HTTP_STATUS_PARTIAL_CONTENT = 206,
    2496 
    2497  HTTP_STATUS_MOVED_PERMANENTLY = 301,
    2498  HTTP_STATUS_FOUND = 302,
    2499  HTTP_STATUS_SEE_OTHER = 303,
    2500 
    2501  HTTP_STATUS_BAD_REQUEST = 400,
    2502  HTTP_STATUS_UNAUTHORIZED,
    2503  HTTP_STATUS_PAYMENT_REQUIRED,
    2504  HTTP_STATUS_FORBIDDEN,
    2505  HTTP_STATUS_NOT_FOUND,
    2506  HTTP_STATUS_METHOD_NOT_ALLOWED,
    2507  HTTP_STATUS_NOT_ACCEPTABLE,
    2508  HTTP_STATUS_PROXY_AUTH_REQUIRED,
    2509  HTTP_STATUS_REQUEST_TIMEOUT,
    2510  HTTP_STATUS_CONFLICT,
    2511  HTTP_STATUS_GONE,
    2512  HTTP_STATUS_LENGTH_REQUIRED,
    2513  HTTP_STATUS_PRECONDITION_FAILED,
    2514  HTTP_STATUS_REQ_ENTITY_TOO_LARGE,
    2515  HTTP_STATUS_REQ_URI_TOO_LONG,
    2516  HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE,
    2517  HTTP_STATUS_REQ_RANGE_NOT_SATISFIABLE,
    2518  HTTP_STATUS_EXPECTATION_FAILED,
    2519 
    2520  HTTP_STATUS_INTERNAL_SERVER_ERROR = 500,
    2521  HTTP_STATUS_NOT_IMPLEMENTED,
    2522  HTTP_STATUS_BAD_GATEWAY,
    2523  HTTP_STATUS_SERVICE_UNAVAILABLE,
    2524  HTTP_STATUS_GATEWAY_TIMEOUT,
    2525  HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED,
    2526 };
    2527 
    2529  char *p;
    2530  int len;
    2531  int max_len;
    2532  int final;
    2533 };
    2534 
    2535 typedef const char *(*lws_process_html_state_cb)(void *data, int index);
    2536 
    2538  char *start;
    2539  char swallow[16];
    2540  int pos;
    2541  void *data;
    2542  const char * const *vars;
    2545  lws_process_html_state_cb replace;
    2546 };
    2547 
    2552 LWS_VISIBLE LWS_EXTERN int
    2554  struct lws_process_html_state *s);
    2556 
    2589 
    2597 struct lws_tokens {
    2598  char *token;
    2600 };
    2601 
    2602 /* enum lws_token_indexes
    2603  * these have to be kept in sync with lextable.h / minilex.c
    2604  *
    2605  * NOTE: These public enums are part of the abi. If you want to add one,
    2606  * add it at where specified so existing users are unaffected.
    2607  */
    2608 enum lws_token_indexes {
    2609  WSI_TOKEN_GET_URI = 0,
    2610  WSI_TOKEN_POST_URI = 1,
    2611  WSI_TOKEN_OPTIONS_URI = 2,
    2612  WSI_TOKEN_HOST = 3,
    2613  WSI_TOKEN_CONNECTION = 4,
    2614  WSI_TOKEN_UPGRADE = 5,
    2615  WSI_TOKEN_ORIGIN = 6,
    2616  WSI_TOKEN_DRAFT = 7,
    2617  WSI_TOKEN_CHALLENGE = 8,
    2618  WSI_TOKEN_EXTENSIONS = 9,
    2619  WSI_TOKEN_KEY1 = 10,
    2620  WSI_TOKEN_KEY2 = 11,
    2621  WSI_TOKEN_PROTOCOL = 12,
    2622  WSI_TOKEN_ACCEPT = 13,
    2623  WSI_TOKEN_NONCE = 14,
    2624  WSI_TOKEN_HTTP = 15,
    2625  WSI_TOKEN_HTTP2_SETTINGS = 16,
    2626  WSI_TOKEN_HTTP_ACCEPT = 17,
    2627  WSI_TOKEN_HTTP_AC_REQUEST_HEADERS = 18,
    2628  WSI_TOKEN_HTTP_IF_MODIFIED_SINCE = 19,
    2629  WSI_TOKEN_HTTP_IF_NONE_MATCH = 20,
    2630  WSI_TOKEN_HTTP_ACCEPT_ENCODING = 21,
    2631  WSI_TOKEN_HTTP_ACCEPT_LANGUAGE = 22,
    2632  WSI_TOKEN_HTTP_PRAGMA = 23,
    2633  WSI_TOKEN_HTTP_CACHE_CONTROL = 24,
    2634  WSI_TOKEN_HTTP_AUTHORIZATION = 25,
    2635  WSI_TOKEN_HTTP_COOKIE = 26,
    2636  WSI_TOKEN_HTTP_CONTENT_LENGTH = 27,
    2637  WSI_TOKEN_HTTP_CONTENT_TYPE = 28,
    2638  WSI_TOKEN_HTTP_DATE = 29,
    2639  WSI_TOKEN_HTTP_RANGE = 30,
    2640  WSI_TOKEN_HTTP_REFERER = 31,
    2641  WSI_TOKEN_KEY = 32,
    2642  WSI_TOKEN_VERSION = 33,
    2643  WSI_TOKEN_SWORIGIN = 34,
    2644 
    2645  WSI_TOKEN_HTTP_COLON_AUTHORITY = 35,
    2646  WSI_TOKEN_HTTP_COLON_METHOD = 36,
    2647  WSI_TOKEN_HTTP_COLON_PATH = 37,
    2648  WSI_TOKEN_HTTP_COLON_SCHEME = 38,
    2649  WSI_TOKEN_HTTP_COLON_STATUS = 39,
    2650 
    2651  WSI_TOKEN_HTTP_ACCEPT_CHARSET = 40,
    2652  WSI_TOKEN_HTTP_ACCEPT_RANGES = 41,
    2653  WSI_TOKEN_HTTP_ACCESS_CONTROL_ALLOW_ORIGIN = 42,
    2654  WSI_TOKEN_HTTP_AGE = 43,
    2655  WSI_TOKEN_HTTP_ALLOW = 44,
    2656  WSI_TOKEN_HTTP_CONTENT_DISPOSITION = 45,
    2657  WSI_TOKEN_HTTP_CONTENT_ENCODING = 46,
    2658  WSI_TOKEN_HTTP_CONTENT_LANGUAGE = 47,
    2659  WSI_TOKEN_HTTP_CONTENT_LOCATION = 48,
    2660  WSI_TOKEN_HTTP_CONTENT_RANGE = 49,
    2661  WSI_TOKEN_HTTP_ETAG = 50,
    2662  WSI_TOKEN_HTTP_EXPECT = 51,
    2663  WSI_TOKEN_HTTP_EXPIRES = 52,
    2664  WSI_TOKEN_HTTP_FROM = 53,
    2665  WSI_TOKEN_HTTP_IF_MATCH = 54,
    2666  WSI_TOKEN_HTTP_IF_RANGE = 55,
    2667  WSI_TOKEN_HTTP_IF_UNMODIFIED_SINCE = 56,
    2668  WSI_TOKEN_HTTP_LAST_MODIFIED = 57,
    2669  WSI_TOKEN_HTTP_LINK = 58,
    2670  WSI_TOKEN_HTTP_LOCATION = 59,
    2671  WSI_TOKEN_HTTP_MAX_FORWARDS = 60,
    2672  WSI_TOKEN_HTTP_PROXY_AUTHENTICATE = 61,
    2673  WSI_TOKEN_HTTP_PROXY_AUTHORIZATION = 62,
    2674  WSI_TOKEN_HTTP_REFRESH = 63,
    2675  WSI_TOKEN_HTTP_RETRY_AFTER = 64,
    2676  WSI_TOKEN_HTTP_SERVER = 65,
    2677  WSI_TOKEN_HTTP_SET_COOKIE = 66,
    2678  WSI_TOKEN_HTTP_STRICT_TRANSPORT_SECURITY = 67,
    2679  WSI_TOKEN_HTTP_TRANSFER_ENCODING = 68,
    2680  WSI_TOKEN_HTTP_USER_AGENT = 69,
    2681  WSI_TOKEN_HTTP_VARY = 70,
    2682  WSI_TOKEN_HTTP_VIA = 71,
    2683  WSI_TOKEN_HTTP_WWW_AUTHENTICATE = 72,
    2684 
    2685  WSI_TOKEN_PATCH_URI = 73,
    2686  WSI_TOKEN_PUT_URI = 74,
    2687  WSI_TOKEN_DELETE_URI = 75,
    2688 
    2689  WSI_TOKEN_HTTP_URI_ARGS = 76,
    2690  WSI_TOKEN_PROXY = 77,
    2691  WSI_TOKEN_HTTP_X_REAL_IP = 78,
    2692  WSI_TOKEN_HTTP1_0 = 79,
    2693  WSI_TOKEN_X_FORWARDED_FOR = 80,
    2694 
    2695  /****** add new things just above ---^ ******/
    2696 
    2697  /* use token storage to stash these internally, not for
    2698  * user use */
    2699 
    2700  _WSI_TOKEN_CLIENT_SENT_PROTOCOLS,
    2701  _WSI_TOKEN_CLIENT_PEER_ADDRESS,
    2702  _WSI_TOKEN_CLIENT_URI,
    2703  _WSI_TOKEN_CLIENT_HOST,
    2704  _WSI_TOKEN_CLIENT_ORIGIN,
    2705  _WSI_TOKEN_CLIENT_METHOD,
    2706 
    2707  /* always last real token index*/
    2708  WSI_TOKEN_COUNT,
    2709 
    2710  /* parser state additions, no storage associated */
    2711  WSI_TOKEN_NAME_PART,
    2712  WSI_TOKEN_SKIPPING,
    2713  WSI_TOKEN_SKIPPING_SAW_CR,
    2714  WSI_PARSING_COMPLETE,
    2715  WSI_INIT_TOKEN_MUXURL,
    2716 };
    2717 
    2719  unsigned short token_limit[WSI_TOKEN_COUNT];
    2720 };
    2721 
    2727 LWS_VISIBLE LWS_EXTERN const unsigned char *
    2728 lws_token_to_string(enum lws_token_indexes token);
    2729 
    2730 
    2739 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2740 lws_hdr_total_length(struct lws *wsi, enum lws_token_indexes h);
    2741 
    2751 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2752 lws_hdr_fragment_length(struct lws *wsi, enum lws_token_indexes h, int frag_idx);
    2753 
    2767 LWS_VISIBLE LWS_EXTERN int
    2768 lws_hdr_copy(struct lws *wsi, char *dest, int len, enum lws_token_indexes h);
    2769 
    2787 LWS_VISIBLE LWS_EXTERN int
    2788 lws_hdr_copy_fragment(struct lws *wsi, char *dest, int len,
    2789  enum lws_token_indexes h, int frag_idx);
    2790 
    2801 LWS_VISIBLE LWS_EXTERN const char *
    2802 lws_get_urlarg_by_name(struct lws *wsi, const char *name, char *buf, int len);
    2804 
    2819 
    2830 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2831 lws_add_http_header_status(struct lws *wsi,
    2832  unsigned int code, unsigned char **p,
    2833  unsigned char *end);
    2846 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2847 lws_add_http_header_by_name(struct lws *wsi, const unsigned char *name,
    2848  const unsigned char *value, int length,
    2849  unsigned char **p, unsigned char *end);
    2863 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2864 lws_add_http_header_by_token(struct lws *wsi, enum lws_token_indexes token,
    2865  const unsigned char *value, int length,
    2866  unsigned char **p, unsigned char *end);
    2877 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2878 lws_add_http_header_content_length(struct lws *wsi,
    2879  unsigned long content_length,
    2880  unsigned char **p, unsigned char *end);
    2890 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2891 lws_finalize_http_header(struct lws *wsi, unsigned char **p,
    2892  unsigned char *end);
    2894 
    2913 
    2923 };
    2924 
    2938 typedef int (*lws_spa_fileupload_cb)(void *data, const char *name,
    2939  const char *filename, char *buf, int len,
    2940  enum lws_spa_fileupload_states state);
    2941 
    2944 struct lws_spa;
    2945 
    2964 LWS_VISIBLE LWS_EXTERN struct lws_spa *
    2965 lws_spa_create(struct lws *wsi, const char * const *param_names,
    2966  int count_params, int max_storage, lws_spa_fileupload_cb opt_cb,
    2967  void *opt_data);
    2968 
    2976 LWS_VISIBLE LWS_EXTERN int
    2977 lws_spa_process(struct lws_spa *spa, const char *in, int len);
    2978 
    2984 LWS_VISIBLE LWS_EXTERN int
    2985 lws_spa_finalize(struct lws_spa *spa);
    2986 
    2993 LWS_VISIBLE LWS_EXTERN int
    2994 lws_spa_get_length(struct lws_spa *spa, int n);
    2995 
    3001 LWS_VISIBLE LWS_EXTERN const char *
    3002 lws_spa_get_string(struct lws_spa *spa, int n);
    3003 
    3009 LWS_VISIBLE LWS_EXTERN int
    3010 lws_spa_destroy(struct lws_spa *spa);
    3012 
    3023 
    3034 LWS_VISIBLE LWS_EXTERN const char *
    3035 lws_urlencode(char *escaped, const char *string, int len);
    3036 
    3037 /*
    3038  * URLDECODE 1 / 2
    3039  *
    3040  * This simple urldecode only operates until the first '\0' and requires the
    3041  * data to exist all at once
    3042  */
    3055 LWS_VISIBLE LWS_EXTERN int
    3056 lws_urldecode(char *string, const char *escaped, int len);
    3058 
    3067 LWS_VISIBLE LWS_EXTERN int
    3068 lws_return_http_status(struct lws *wsi, unsigned int code,
    3069  const char *html_body);
    3070 
    3081 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3082 lws_http_redirect(struct lws *wsi, int code, const unsigned char *loc, int len,
    3083  unsigned char **p, unsigned char *end);
    3084 
    3093 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3094 lws_http_transaction_completed(struct lws *wsi);
    3096 
    3104 
    3115 LWS_VISIBLE LWS_EXTERN const char *
    3116 lws_sql_purify(char *escaped, const char *string, int len);
    3117 
    3128 LWS_VISIBLE LWS_EXTERN const char *
    3129 lws_json_purify(char *escaped, const char *string, int len);
    3131 
    3138 
    3140 #ifdef LWS_USE_LIBEV
    3141 typedef void (lws_ev_signal_cb_t)(EV_P_ struct ev_signal *w, int revents);
    3142 
    3143 LWS_VISIBLE LWS_EXTERN int
    3144 lws_ev_sigint_cfg(struct lws_context *context, int use_ev_sigint,
    3145  lws_ev_signal_cb_t *cb);
    3146 
    3147 LWS_VISIBLE LWS_EXTERN int
    3148 lws_ev_initloop(struct lws_context *context, struct ev_loop *loop, int tsi);
    3149 
    3150 LWS_VISIBLE LWS_EXTERN void
    3151 lws_ev_sigint_cb(struct ev_loop *loop, struct ev_signal *watcher, int revents);
    3152 #endif /* LWS_USE_LIBEV */
    3153 
    3155 
    3162 #ifdef LWS_USE_LIBUV
    3164 LWS_VISIBLE LWS_EXTERN int
    3165 lws_uv_sigint_cfg(struct lws_context *context, int use_uv_sigint,
    3166  uv_signal_cb cb);
    3167 
    3168 LWS_VISIBLE LWS_EXTERN void
    3169 lws_libuv_run(const struct lws_context *context, int tsi);
    3170 
    3171 LWS_VISIBLE LWS_EXTERN void
    3172 lws_libuv_stop(struct lws_context *context);
    3173 
    3174 LWS_VISIBLE LWS_EXTERN void
    3175 lws_libuv_stop_without_kill(const struct lws_context *context, int tsi);
    3176 
    3177 LWS_VISIBLE LWS_EXTERN int
    3178 lws_uv_initloop(struct lws_context *context, uv_loop_t *loop, int tsi);
    3179 
    3180 LWS_VISIBLE LWS_EXTERN uv_loop_t *
    3181 lws_uv_getloop(struct lws_context *context, int tsi);
    3182 
    3183 LWS_VISIBLE LWS_EXTERN void
    3184 lws_uv_sigint_cb(uv_signal_t *watcher, int signum);
    3185 #endif /* LWS_USE_LIBUV */
    3186 
    3193 
    3194 /*
    3195  * NOTE: These public enums are part of the abi. If you want to add one,
    3196  * add it at where specified so existing users are unaffected.
    3197  */
    3198 enum pending_timeout {
    3199  NO_PENDING_TIMEOUT = 0,
    3200  PENDING_TIMEOUT_AWAITING_PROXY_RESPONSE = 1,
    3201  PENDING_TIMEOUT_AWAITING_CONNECT_RESPONSE = 2,
    3202  PENDING_TIMEOUT_ESTABLISH_WITH_SERVER = 3,
    3203  PENDING_TIMEOUT_AWAITING_SERVER_RESPONSE = 4,
    3204  PENDING_TIMEOUT_AWAITING_PING = 5,
    3205  PENDING_TIMEOUT_CLOSE_ACK = 6,
    3206  PENDING_TIMEOUT_AWAITING_EXTENSION_CONNECT_RESPONSE = 7,
    3207  PENDING_TIMEOUT_SENT_CLIENT_HANDSHAKE = 8,
    3208  PENDING_TIMEOUT_SSL_ACCEPT = 9,
    3209  PENDING_TIMEOUT_HTTP_CONTENT = 10,
    3210  PENDING_TIMEOUT_AWAITING_CLIENT_HS_SEND = 11,
    3211  PENDING_FLUSH_STORED_SEND_BEFORE_CLOSE = 12,
    3212  PENDING_TIMEOUT_SHUTDOWN_FLUSH = 13,
    3213  PENDING_TIMEOUT_CGI = 14,
    3214  PENDING_TIMEOUT_HTTP_KEEPALIVE_IDLE = 15,
    3215  PENDING_TIMEOUT_WS_PONG_CHECK_SEND_PING = 16,
    3216  PENDING_TIMEOUT_WS_PONG_CHECK_GET_PONG = 17,
    3217  PENDING_TIMEOUT_CLIENT_ISSUE_PAYLOAD = 18,
    3218 
    3219  /****** add new things just above ---^ ******/
    3220 };
    3221 
    3231 LWS_VISIBLE LWS_EXTERN void
    3232 lws_set_timeout(struct lws *wsi, enum pending_timeout reason, int secs);
    3234 
    3240 #if !defined(LWS_SIZEOFPTR)
    3241 #define LWS_SIZEOFPTR (sizeof (void *))
    3242 #endif
    3243 #if !defined(u_int64_t)
    3244 #define u_int64_t unsigned long long
    3245 #endif
    3246 
    3247 #if defined(__x86_64__)
    3248 #define _LWS_PAD_SIZE 16 /* Intel recommended for best performance */
    3249 #else
    3250 #define _LWS_PAD_SIZE LWS_SIZEOFPTR /* Size of a pointer on the target arch */
    3251 #endif
    3252 #define _LWS_PAD(n) (((n) % _LWS_PAD_SIZE) ? \
    3253  ((n) + (_LWS_PAD_SIZE - ((n) % _LWS_PAD_SIZE))) : (n))
    3254 #define LWS_PRE _LWS_PAD(4 + 10)
    3255 /* used prior to 1.7 and retained for backward compatibility */
    3256 #define LWS_SEND_BUFFER_PRE_PADDING LWS_PRE
    3257 #define LWS_SEND_BUFFER_POST_PADDING 0
    3258 
    3259 /*
    3260  * NOTE: These public enums are part of the abi. If you want to add one,
    3261  * add it at where specified so existing users are unaffected.
    3262  */
    3277  /* LWS_WRITE_CLOSE is handled by lws_close_reason() */
    3278  LWS_WRITE_PING = 5,
    3279  LWS_WRITE_PONG = 6,
    3280 
    3281  /* Same as write_http but we know this write ends the transaction */
    3282  LWS_WRITE_HTTP_FINAL = 7,
    3283 
    3284  /* HTTP2 */
    3285 
    3293  /****** add new things just above ---^ ******/
    3294 
    3295  /* flags */
    3296 
    3304 };
    3305 
    3306 
    3393 LWS_VISIBLE LWS_EXTERN int
    3394 lws_write(struct lws *wsi, unsigned char *buf, size_t len,
    3395  enum lws_write_protocol protocol);
    3396 
    3397 /* helper for case where buffer may be const */
    3398 #define lws_write_http(wsi, buf, len) \
    3399  lws_write(wsi, (unsigned char *)(buf), len, LWS_WRITE_HTTP)
    3400 
    3420 
    3433 LWS_VISIBLE LWS_EXTERN int
    3434 lws_callback_on_writable(struct lws *wsi);
    3435 
    3449 LWS_VISIBLE LWS_EXTERN int
    3450 lws_callback_on_writable_all_protocol(const struct lws_context *context,
    3451  const struct lws_protocols *protocol);
    3452 
    3466 LWS_VISIBLE LWS_EXTERN int
    3467 lws_callback_on_writable_all_protocol_vhost(const struct lws_vhost *vhost,
    3468  const struct lws_protocols *protocol);
    3469 
    3482 LWS_VISIBLE LWS_EXTERN int
    3483 lws_callback_all_protocol(struct lws_context *context,
    3484  const struct lws_protocols *protocol, int reason);
    3485 
    3498 LWS_VISIBLE LWS_EXTERN int
    3499 lws_callback_all_protocol_vhost(struct lws_vhost *vh,
    3500  const struct lws_protocols *protocol, int reason);
    3501 
    3515 LWS_VISIBLE LWS_EXTERN int
    3516 lws_callback_vhost_protocols(struct lws *wsi, int reason, void *in, int len);
    3517 
    3518 LWS_VISIBLE LWS_EXTERN int
    3519 lws_callback_http_dummy(struct lws *wsi, enum lws_callback_reasons reason,
    3520  void *user, void *in, size_t len);
    3521 
    3529 LWS_VISIBLE LWS_EXTERN int
    3530 lws_get_socket_fd(struct lws *wsi);
    3531 
    3553 LWS_VISIBLE LWS_EXTERN size_t
    3554 lws_get_peer_write_allowance(struct lws *wsi);
    3556 
    3567 LWS_VISIBLE LWS_EXTERN int
    3568 lws_rx_flow_control(struct lws *wsi, int enable);
    3569 
    3579 LWS_VISIBLE LWS_EXTERN void
    3580 lws_rx_flow_allow_all_protocol(const struct lws_context *context,
    3581  const struct lws_protocols *protocol);
    3582 
    3599 LWS_VISIBLE LWS_EXTERN size_t
    3600 lws_remaining_packet_payload(struct lws *wsi);
    3601 
    3602 
    3611 
    3625 LWS_VISIBLE LWS_EXTERN struct lws *
    3626 lws_adopt_socket(struct lws_context *context, lws_sockfd_type accept_fd);
    3639 LWS_VISIBLE LWS_EXTERN struct lws *
    3640 lws_adopt_socket_vhost(struct lws_vhost *vh, lws_sockfd_type accept_fd);
    3664 LWS_VISIBLE LWS_EXTERN struct lws *
    3665 lws_adopt_socket_readbuf(struct lws_context *context, lws_sockfd_type accept_fd,
    3666  const char *readbuf, size_t len);
    3690 LWS_VISIBLE LWS_EXTERN struct lws *
    3691 lws_adopt_socket_vhost_readbuf(struct lws_vhost *vhost, lws_sockfd_type accept_fd,
    3692  const char *readbuf, size_t len);
    3694 
    3700 
    3711 LWS_VISIBLE LWS_EXTERN const char * LWS_WARN_UNUSED_RESULT
    3712 lws_canonical_hostname(struct lws_context *context);
    3713 
    3728 LWS_VISIBLE LWS_EXTERN void
    3729 lws_get_peer_addresses(struct lws *wsi, lws_sockfd_type fd, char *name,
    3730  int name_len, char *rip, int rip_len);
    3731 
    3742 LWS_VISIBLE LWS_EXTERN const char *
    3743 lws_get_peer_simple(struct lws *wsi, char *name, int namelen);
    3744 #ifndef LWS_WITH_ESP8266
    3745 
    3756 LWS_VISIBLE LWS_EXTERN int
    3757 lws_interface_to_sa(int ipv6, const char *ifname, struct sockaddr_in *addr,
    3758  size_t addrlen);
    3760 #endif
    3761 
    3767 
    3780 LWS_VISIBLE LWS_EXTERN int
    3781 lws_snprintf(char *str, size_t size, const char *format, ...);
    3782 
    3794 LWS_VISIBLE LWS_EXTERN int
    3795 lws_get_random(struct lws_context *context, void *buf, int len);
    3803 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3804 lws_daemonize(const char *_lock_path);
    3810 LWS_VISIBLE LWS_EXTERN const char * LWS_WARN_UNUSED_RESULT
    3812 
    3819 LWS_VISIBLE LWS_EXTERN void *
    3820 lws_wsi_user(struct lws *wsi);
    3821 
    3833 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3834 lws_parse_uri(char *p, const char **prot, const char **ads, int *port,
    3835  const char **path);
    3836 
    3840 LWS_VISIBLE LWS_EXTERN unsigned long
    3841 lws_now_secs(void);
    3842 
    3852 LWS_VISIBLE LWS_EXTERN struct lws_context * LWS_WARN_UNUSED_RESULT
    3853 lws_get_context(const struct lws *wsi);
    3854 
    3864 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3865 lws_get_count_threads(struct lws_context *context);
    3866 
    3874 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    3875 lws_get_parent(const struct lws *wsi);
    3876 
    3883 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    3884 lws_get_child(const struct lws *wsi);
    3885 
    3886 
    3887 /*
    3888  * \deprecated DEPRECATED Note: this is not normally needed as a user api.
    3889  * It's provided in case it is
    3890  * useful when integrating with other app poll loop service code.
    3891  */
    3892 LWS_VISIBLE LWS_EXTERN int
    3893 lws_read(struct lws *wsi, unsigned char *buf, size_t len);
    3894 
    3902 LWS_VISIBLE LWS_EXTERN void
    3903 lws_set_allocator(void *(*realloc)(void *ptr, size_t size));
    3905 
    3911 
    3918 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3919 lws_send_pipe_choked(struct lws *wsi);
    3920 
    3925 LWS_VISIBLE LWS_EXTERN int
    3926 lws_is_final_fragment(struct lws *wsi);
    3927 
    3932 LWS_VISIBLE LWS_EXTERN unsigned char
    3933 lws_get_reserved_bits(struct lws *wsi);
    3934 
    3951 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3952 lws_partial_buffered(struct lws *wsi);
    3953 
    3963 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3964 lws_frame_is_binary(struct lws *wsi);
    3965 
    3974 LWS_VISIBLE LWS_EXTERN int
    3975 lws_is_ssl(struct lws *wsi);
    3980 LWS_VISIBLE LWS_EXTERN int
    3981 lws_is_cgi(struct lws *wsi);
    3982 
    3983 #ifdef LWS_OPENSSL_SUPPORT
    3984 
    3990 LWS_VISIBLE LWS_EXTERN SSL*
    3991 lws_get_ssl(struct lws *wsi);
    3992 #endif
    3993 
    3995 
    4001 #ifdef LWS_SHA1_USE_OPENSSL_NAME
    4003 #define lws_SHA1 SHA1
    4004 #else
    4005 
    4014 LWS_VISIBLE LWS_EXTERN unsigned char *
    4015 lws_SHA1(const unsigned char *d, size_t n, unsigned char *md);
    4016 #endif
    4017 
    4027 LWS_VISIBLE LWS_EXTERN int
    4028 lws_b64_encode_string(const char *in, int in_len, char *out, int out_size);
    4038 LWS_VISIBLE LWS_EXTERN int
    4039 lws_b64_decode_string(const char *in, char *out, int out_size);
    4041 
    4042 
    4052 #ifdef LWS_WITH_CGI
    4053 enum lws_enum_stdinouterr {
    4054  LWS_STDIN = 0,
    4055  LWS_STDOUT = 1,
    4056  LWS_STDERR = 2,
    4057 };
    4058 
    4059 enum lws_cgi_hdr_state {
    4060  LCHS_HEADER,
    4061  LCHS_CR1,
    4062  LCHS_LF1,
    4063  LCHS_CR2,
    4064  LCHS_LF2,
    4065  LHCS_PAYLOAD,
    4066  LCHS_SINGLE_0A,
    4067 };
    4068 
    4070  struct lws **stdwsi;
    4071  enum lws_enum_stdinouterr ch;
    4072  unsigned char *data;
    4073  enum lws_cgi_hdr_state hdr_state;
    4074  int len;
    4075 };
    4076 
    4077 
    4087 LWS_VISIBLE LWS_EXTERN int
    4088 lws_cgi(struct lws *wsi, const char * const *exec_array,
    4089  int script_uri_path_len, int timeout_secs,
    4090  const struct lws_protocol_vhost_options *mp_cgienv);
    4091 
    4097 LWS_VISIBLE LWS_EXTERN int
    4098 lws_cgi_write_split_stdout_headers(struct lws *wsi);
    4099 
    4105 LWS_VISIBLE LWS_EXTERN int
    4106 lws_cgi_kill(struct lws *wsi);
    4107 #endif
    4108 
    4110 
    4127 
    4134  lws_filefd_type (*open)(struct lws *wsi, const char *filename,
    4135  unsigned long *filelen, int flags);
    4139  int (*close)(struct lws *wsi, lws_filefd_type fd);
    4141  unsigned long (*seek_cur)(struct lws *wsi, lws_filefd_type fd,
    4142  long offset_from_cur_pos);
    4144  int (*read)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    4145  unsigned char *buf, unsigned long len);
    4147  int (*write)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    4148  unsigned char *buf, unsigned long len);
    4151  /* Add new things just above here ---^
    4152  * This is part of the ABI, don't needlessly break compatibility */
    4153 };
    4154 
    4160 LWS_VISIBLE LWS_EXTERN struct lws_plat_file_ops * LWS_WARN_UNUSED_RESULT
    4161 lws_get_fops(struct lws_context *context);
    4162 
    4171 static LWS_INLINE lws_filefd_type LWS_WARN_UNUSED_RESULT
    4172 lws_plat_file_open(struct lws *wsi, const char *filename,
    4173  unsigned long *filelen, int flags)
    4174 {
    4175  return lws_get_fops(lws_get_context(wsi))->open(wsi, filename,
    4176  filelen, flags);
    4177 }
    4178 
    4185 static LWS_INLINE int
    4186 lws_plat_file_close(struct lws *wsi, lws_filefd_type fd)
    4187 {
    4188  return lws_get_fops(lws_get_context(wsi))->close(wsi, fd);
    4189 }
    4190 
    4198 static LWS_INLINE unsigned long
    4199 lws_plat_file_seek_cur(struct lws *wsi, lws_filefd_type fd, long offset)
    4200 {
    4201  return lws_get_fops(lws_get_context(wsi))->seek_cur(wsi, fd, offset);
    4202 }
    4212 static LWS_INLINE int LWS_WARN_UNUSED_RESULT
    4213 lws_plat_file_read(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    4214  unsigned char *buf, unsigned long len)
    4215 {
    4216  return lws_get_fops(lws_get_context(wsi))->read(wsi, fd, amount, buf,
    4217  len);
    4218 }
    4228 static LWS_INLINE int LWS_WARN_UNUSED_RESULT
    4229 lws_plat_file_write(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    4230  unsigned char *buf, unsigned long len)
    4231 {
    4232  return lws_get_fops(lws_get_context(wsi))->write(wsi, fd, amount, buf,
    4233  len);
    4234 }
    4236 
    4268 #ifdef LWS_WITH_SMTP
    4269 
    4281 };
    4282 
    4284 struct lws_email {
    4285  void *data;
    4287  uv_loop_t *loop;
    4290  char email_smtp_ip[32];
    4291  char email_helo[32];
    4292  char email_from[100];
    4293  char email_to[100];
    4295  unsigned int max_content_size;
    4298  /* Fill all the callbacks before init */
    4299 
    4300  int (*on_next)(struct lws_email *email);
    4305  int (*on_sent)(struct lws_email *email);
    4310  int (*on_get_body)(struct lws_email *email, char *buf, int len);
    4316  /* private things */
    4317  uv_timer_t timeout_email;
    4319  uv_connect_t email_connect_req;
    4320  uv_tcp_t email_client;
    4322  char email_buf[256];
    4323  char *content;
    4324 };
    4325 
    4335 LWS_VISIBLE LWS_EXTERN int
    4336 lws_email_init(struct lws_email *email, uv_loop_t *loop, int max_content);
    4337 
    4346 LWS_VISIBLE LWS_EXTERN void
    4347 lws_email_check(struct lws_email *email);
    4355 LWS_VISIBLE LWS_EXTERN void
    4356 lws_email_destroy(struct lws_email *email);
    4357 
    4358 #endif
    4359 
    4360 
    4361 #ifdef __cplusplus
    4362 }
    4363 #endif
    4364 
    4365 #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) && !defined(OPTEE_TA)
    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 #if !defined(OPTEE_TA)
    220 #include <sys/time.h>
    221 #include <unistd.h>
    222 #endif
    223 #endif
    224 
    225 #ifdef LWS_OPENSSL_SUPPORT
    226 
    227 #ifdef USE_WOLFSSL
    228 #ifdef USE_OLD_CYASSL
    229 #include <cyassl/openssl/ssl.h>
    230 #include <cyassl/error-ssl.h>
    231 #else
    232 #include <wolfssl/openssl/ssl.h>
    233 #include <wolfssl/error-ssl.h>
    234 #endif /* not USE_OLD_CYASSL */
    235 #else
    236 #if defined(LWS_USE_POLARSSL)
    237 #include <polarssl/ssl.h>
    239  x509_crt ca;
    240  x509_crt certificate;
    241  rsa_context key;
    242 };
    243 typedef struct lws_polarssl_context SSL_CTX;
    244 typedef ssl_context SSL;
    245 #else
    246 #if defined(LWS_USE_MBEDTLS)
    247 #include <mbedtls/ssl.h>
    248 #else
    249 #include <openssl/ssl.h>
    250 #include <openssl/err.h>
    251 #endif /* not USE_MBEDTLS */
    252 #endif /* not USE_POLARSSL */
    253 #endif /* not USE_WOLFSSL */
    254 #endif
    255 
    256 
    257 #define CONTEXT_PORT_NO_LISTEN -1
    258 #define CONTEXT_PORT_NO_LISTEN_SERVER -2
    259 
    270 
    272 enum lws_log_levels {
    273  LLL_ERR = 1 << 0,
    274  LLL_WARN = 1 << 1,
    275  LLL_NOTICE = 1 << 2,
    276  LLL_INFO = 1 << 3,
    277  LLL_DEBUG = 1 << 4,
    278  LLL_PARSER = 1 << 5,
    279  LLL_HEADER = 1 << 6,
    280  LLL_EXT = 1 << 7,
    281  LLL_CLIENT = 1 << 8,
    282  LLL_LATENCY = 1 << 9,
    283 
    284  LLL_COUNT = 10 /* set to count of valid flags */
    285 };
    286 
    287 LWS_VISIBLE LWS_EXTERN void _lws_log(int filter, const char *format, ...);
    288 LWS_VISIBLE LWS_EXTERN void _lws_logv(int filter, const char *format, va_list vl);
    298 LWS_VISIBLE LWS_EXTERN int
    299 lwsl_timestamp(int level, char *p, int len);
    300 
    301 #define lwsl_err(...) _lws_log(LLL_ERR, __VA_ARGS__)
    302 
    303 #if !defined(LWS_WITH_NO_LOGS)
    304 /* notice, warn and log are always compiled in */
    305 #define lwsl_warn(...) _lws_log(LLL_WARN, __VA_ARGS__)
    306 #define lwsl_notice(...) _lws_log(LLL_NOTICE, __VA_ARGS__)
    307 #endif
    308 /*
    309  * weaker logging can be deselected at configure time using --disable-debug
    310  * that gets rid of the overhead of checking while keeping _warn and _err
    311  * active
    312  */
    313 
    314 #if defined(LWS_WITH_ESP8266)
    315 #undef _DEBUG
    316 #endif
    317 
    318 #ifdef _DEBUG
    319 #if defined(LWS_WITH_NO_LOGS)
    320 /* notice, warn and log are always compiled in */
    321 //#define lwsl_err(...) _lws_log(LLL_ERR, __VA_ARGS__)
    322 #define lwsl_warn(...) _lws_log(LLL_WARN, __VA_ARGS__)
    323 #define lwsl_notice(...) _lws_log(LLL_NOTICE, __VA_ARGS__)
    324 #endif
    325 #define lwsl_info(...) _lws_log(LLL_INFO, __VA_ARGS__)
    326 #define lwsl_debug(...) _lws_log(LLL_DEBUG, __VA_ARGS__)
    327 #define lwsl_parser(...) _lws_log(LLL_PARSER, __VA_ARGS__)
    328 #define lwsl_header(...) _lws_log(LLL_HEADER, __VA_ARGS__)
    329 #define lwsl_ext(...) _lws_log(LLL_EXT, __VA_ARGS__)
    330 #define lwsl_client(...) _lws_log(LLL_CLIENT, __VA_ARGS__)
    331 #define lwsl_latency(...) _lws_log(LLL_LATENCY, __VA_ARGS__)
    332 
    338 LWS_VISIBLE LWS_EXTERN void lwsl_hexdump(void *buf, size_t len);
    339 
    340 #else /* no debug */
    341 #if defined(LWS_WITH_NO_LOGS)
    342 //#define lwsl_err(...) do {} while(0)
    343 #define lwsl_warn(...) do {} while(0)
    344 #define lwsl_notice(...) do {} while(0)
    345 #endif
    346 #define lwsl_info(...) do {} while(0)
    347 #define lwsl_debug(...) do {} while(0)
    348 #define lwsl_parser(...) do {} while(0)
    349 #define lwsl_header(...) do {} while(0)
    350 #define lwsl_ext(...) do {} while(0)
    351 #define lwsl_client(...) do {} while(0)
    352 #define lwsl_latency(...) do {} while(0)
    353 #define lwsl_hexdump(a, b)
    354 
    355 #endif
    356 
    367 LWS_VISIBLE LWS_EXTERN void
    368 lws_set_log_level(int level,
    369  void (*log_emit_function)(int level, const char *line));
    370 
    380 LWS_VISIBLE LWS_EXTERN void
    381 lwsl_emit_syslog(int level, const char *line);
    382 
    384 
    385 
    386 #include <stddef.h>
    387 
    388 #ifndef lws_container_of
    389 #define lws_container_of(P,T,M) ((T *)((char *)(P) - offsetof(T, M)))
    390 #endif
    391 
    392 
    393 struct lws;
    394 #ifndef ARRAY_SIZE
    395 #define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
    396 #endif
    397 
    398 /* api change list for user code to test against */
    399 
    400 #define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_ARG
    401 
    402 /* the struct lws_protocols has the id field present */
    403 #define LWS_FEATURE_PROTOCOLS_HAS_ID_FIELD
    404 
    405 /* you can call lws_get_peer_write_allowance */
    406 #define LWS_FEATURE_PROTOCOLS_HAS_PEER_WRITE_ALLOWANCE
    407 
    408 /* extra parameter introduced in 917f43ab821 */
    409 #define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_LEN
    410 
    411 /* File operations stuff exists */
    412 #define LWS_FEATURE_FOPS
    413 
    414 
    415 #if defined(_WIN32)
    416 typedef SOCKET lws_sockfd_type;
    417 typedef HANDLE lws_filefd_type;
    418 #define lws_sockfd_valid(sfd) (!!sfd)
    419 struct lws_pollfd {
    420  lws_sockfd_type fd;
    421  SHORT events;
    422  SHORT revents;
    423 };
    424 #define LWS_POLLHUP (FD_CLOSE)
    425 #define LWS_POLLIN (FD_READ | FD_ACCEPT)
    426 #define LWS_POLLOUT (FD_WRITE)
    427 #else
    428 
    429 #if defined(MBED_OPERATORS)
    430 /* it's a class lws_conn * */
    431 typedef void * lws_sockfd_type;
    432 typedef void * lws_filefd_type;
    433 #define lws_sockfd_valid(sfd) (!!sfd)
    434 struct pollfd {
    435  lws_sockfd_type fd;
    436  short events;
    437  short revents;
    438 };
    439 #define POLLIN 0x0001
    440 #define POLLPRI 0x0002
    441 #define POLLOUT 0x0004
    442 #define POLLERR 0x0008
    443 #define POLLHUP 0x0010
    444 #define POLLNVAL 0x0020
    445 
    446 struct lws;
    447 
    448 void * mbed3_create_tcp_stream_socket(void);
    449 void mbed3_delete_tcp_stream_socket(void *sockfd);
    450 void mbed3_tcp_stream_bind(void *sock, int port, struct lws *);
    451 void mbed3_tcp_stream_accept(void *sock, struct lws *);
    452 #else
    453 #if defined(LWS_WITH_ESP8266)
    454 
    455 #include <user_interface.h>
    456 #include <espconn.h>
    457 
    458 typedef struct espconn * lws_sockfd_type;
    459 typedef void * lws_filefd_type;
    460 #define lws_sockfd_valid(sfd) (!!sfd)
    461 struct pollfd {
    462  lws_sockfd_type fd;
    463  short events;
    464  short revents;
    465 };
    466 #define POLLIN 0x0001
    467 #define POLLPRI 0x0002
    468 #define POLLOUT 0x0004
    469 #define POLLERR 0x0008
    470 #define POLLHUP 0x0010
    471 #define POLLNVAL 0x0020
    472 
    473 struct lws_vhost;
    474 
    475 lws_sockfd_type esp8266_create_tcp_listen_socket(struct lws_vhost *vh);
    476 void esp8266_tcp_stream_accept(lws_sockfd_type fd, struct lws *wsi);
    477 
    478 #include <os_type.h>
    479 #include <osapi.h>
    480 #include "ets_sys.h"
    481 
    482 int ets_snprintf(char *str, size_t size, const char *format, ...);
    483 #define snprintf ets_snprintf
    484 
    485 typedef os_timer_t uv_timer_t;
    486 typedef void uv_cb_t(uv_timer_t *);
    487 
    488 void os_timer_disarm(void *);
    489 void os_timer_setfn(os_timer_t *, os_timer_func_t *, void *);
    490 
    491 void ets_timer_arm_new(os_timer_t *, int, int, int);
    492 
    493 //void os_timer_arm(os_timer_t *, int, int);
    494 
    495 #define UV_VERSION_MAJOR 1
    496 
    497 #define lws_uv_getloop(a, b) (NULL)
    498 
    499 static inline void uv_timer_init(void *l, uv_timer_t *t)
    500 {
    501  (void)l;
    502  memset(t, 0, sizeof(*t));
    503  os_timer_disarm(t);
    504 }
    505 
    506 static inline void uv_timer_start(uv_timer_t *t, uv_cb_t *cb, int first, int rep)
    507 {
    508  os_timer_setfn(t, (os_timer_func_t *)cb, t);
    509  /* ms, repeat */
    510  os_timer_arm(t, first, !!rep);
    511 }
    512 
    513 static inline void uv_timer_stop(uv_timer_t *t)
    514 {
    515  os_timer_disarm(t);
    516 }
    517 
    518 #else
    519 typedef int lws_sockfd_type;
    520 typedef int lws_filefd_type;
    521 #define lws_sockfd_valid(sfd) (sfd >= 0)
    522 #endif
    523 #endif
    524 
    525 #define lws_pollfd pollfd
    526 #define LWS_POLLHUP (POLLHUP|POLLERR)
    527 #define LWS_POLLIN (POLLIN)
    528 #define LWS_POLLOUT (POLLOUT)
    529 #endif
    530 
    533 struct lws_pollargs {
    534  lws_sockfd_type fd;
    535  int events;
    537 };
    538 
    539 struct lws_tokens;
    540 struct lws_token_limits;
    541 
    549 
    551 /*
    552  * NOTE: These public enums are part of the abi. If you want to add one,
    553  * add it at where specified so existing users are unaffected.
    554  */
    557  LWS_CLOSE_STATUS_NOSTATUS = 0,
    619  /****** add new things just above ---^ ******/
    620 
    621  LWS_CLOSE_STATUS_NOSTATUS_CONTEXT_DESTROY = 9999,
    622 };
    623 
    636 LWS_VISIBLE LWS_EXTERN void
    637 lws_close_reason(struct lws *wsi, enum lws_close_status status,
    638  unsigned char *buf, size_t len);
    639 
    641 
    642 struct lws;
    643 struct lws_context;
    644 /* needed even with extensions disabled for create context */
    645 struct lws_extension;
    646 
    658 
    660 
    661 /*
    662  * NOTE: These public enums are part of the abi. If you want to add one,
    663  * add it at where specified so existing users are unaffected.
    664  */
    908  /* external poll() management support */
    971  LWS_CALLBACK_WS_EXT_DEFAULTS = 39,
    974  LWS_CALLBACK_CGI = 40,
    976  LWS_CALLBACK_CGI_TERMINATED = 41,
    978  LWS_CALLBACK_CGI_STDIN_DATA = 42,
    980  LWS_CALLBACK_CGI_STDIN_COMPLETED = 43,
    982  LWS_CALLBACK_ESTABLISHED_CLIENT_HTTP = 44,
    984  LWS_CALLBACK_CLOSED_CLIENT_HTTP = 45,
    986  LWS_CALLBACK_RECEIVE_CLIENT_HTTP = 46,
    988  LWS_CALLBACK_COMPLETED_CLIENT_HTTP = 47,
    990  LWS_CALLBACK_RECEIVE_CLIENT_HTTP_READ = 48,
    992  LWS_CALLBACK_HTTP_BIND_PROTOCOL = 49,
    994  LWS_CALLBACK_HTTP_DROP_PROTOCOL = 50,
    996  LWS_CALLBACK_CHECK_ACCESS_RIGHTS = 51,
    998  LWS_CALLBACK_PROCESS_HTML = 52,
    1000  LWS_CALLBACK_ADD_HEADERS = 53,
    1002  LWS_CALLBACK_SESSION_INFO = 54,
    1005  LWS_CALLBACK_GS_EVENT = 55,
    1052  /****** add new things just above ---^ ******/
    1053 
    1056 };
    1057 
    1058 
    1059 
    1075 typedef int
    1076 lws_callback_function(struct lws *wsi, enum lws_callback_reasons reason,
    1077  void *user, void *in, size_t len);
    1079 
    1089 
    1091 /*
    1092  * NOTE: These public enums are part of the abi. If you want to add one,
    1093  * add it at where specified so existing users are unaffected.
    1094  */
    1095 enum lws_extension_callback_reasons {
    1096  LWS_EXT_CB_SERVER_CONTEXT_CONSTRUCT = 0,
    1097  LWS_EXT_CB_CLIENT_CONTEXT_CONSTRUCT = 1,
    1098  LWS_EXT_CB_SERVER_CONTEXT_DESTRUCT = 2,
    1099  LWS_EXT_CB_CLIENT_CONTEXT_DESTRUCT = 3,
    1100  LWS_EXT_CB_CONSTRUCT = 4,
    1101  LWS_EXT_CB_CLIENT_CONSTRUCT = 5,
    1102  LWS_EXT_CB_CHECK_OK_TO_REALLY_CLOSE = 6,
    1103  LWS_EXT_CB_CHECK_OK_TO_PROPOSE_EXTENSION = 7,
    1104  LWS_EXT_CB_DESTROY = 8,
    1105  LWS_EXT_CB_DESTROY_ANY_WSI_CLOSING = 9,
    1106  LWS_EXT_CB_ANY_WSI_ESTABLISHED = 10,
    1107  LWS_EXT_CB_PACKET_RX_PREPARSE = 11,
    1108  LWS_EXT_CB_PACKET_TX_PRESEND = 12,
    1109  LWS_EXT_CB_PACKET_TX_DO_SEND = 13,
    1110  LWS_EXT_CB_HANDSHAKE_REPLY_TX = 14,
    1111  LWS_EXT_CB_FLUSH_PENDING_TX = 15,
    1112  LWS_EXT_CB_EXTENDED_PAYLOAD_RX = 16,
    1113  LWS_EXT_CB_CAN_PROXY_CLIENT_CONNECTION = 17,
    1114  LWS_EXT_CB_1HZ = 18,
    1115  LWS_EXT_CB_REQUEST_ON_WRITEABLE = 19,
    1116  LWS_EXT_CB_IS_WRITEABLE = 20,
    1117  LWS_EXT_CB_PAYLOAD_TX = 21,
    1118  LWS_EXT_CB_PAYLOAD_RX = 22,
    1119  LWS_EXT_CB_OPTION_DEFAULT = 23,
    1120  LWS_EXT_CB_OPTION_SET = 24,
    1121  LWS_EXT_CB_OPTION_CONFIRM = 25,
    1122  LWS_EXT_CB_NAMED_OPTION_SET = 26,
    1123 
    1124  /****** add new things just above ---^ ******/
    1125 };
    1126 
    1133  /* Add new things just above here ---^
    1134  * This is part of the ABI, don't needlessly break compatibility */
    1135 };
    1136 
    1142  const char *name;
    1145  /* Add new things just above here ---^
    1146  * This is part of the ABI, don't needlessly break compatibility */
    1147 };
    1148 
    1151  const char *option_name;
    1153  const char *start;
    1154  int len;
    1155 };
    1156 
    1217 typedef int
    1218 lws_extension_callback_function(struct lws_context *context,
    1219  const struct lws_extension *ext, struct lws *wsi,
    1220  enum lws_extension_callback_reasons reason,
    1221  void *user, void *in, size_t len);
    1222 
    1225  const char *name;
    1227  const char *client_offer;
    1229  /* Add new things just above here ---^
    1230  * This is part of the ABI, don't needlessly break compatibility */
    1231 };
    1232 
    1241 LWS_VISIBLE LWS_EXTERN int
    1242 lws_set_extension_option(struct lws *wsi, const char *ext_name,
    1243  const char *opt_name, const char *opt_val);
    1244 
    1245 #ifndef LWS_NO_EXTENSIONS
    1246 /* lws_get_internal_extensions() - DEPRECATED
    1247  *
    1248  * \Deprecated There is no longer a set internal extensions table. The table is provided
    1249  * by user code along with application-specific settings. See the test
    1250  * client and server for how to do.
    1251  */
    1252 static LWS_INLINE LWS_WARN_DEPRECATED const struct lws_extension *
    1253 lws_get_internal_extensions(void) { return NULL; }
    1254 
    1265 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    1266 lws_ext_parse_options(const struct lws_extension *ext, struct lws *wsi,
    1267  void *ext_user, const struct lws_ext_options *opts,
    1268  const char *o, int len);
    1269 #endif
    1270 
    1283 LWS_EXTERN
    1285  struct lws_context *context, const struct lws_extension *ext,
    1286  struct lws *wsi, enum lws_extension_callback_reasons reason,
    1287  void *user, void *in, size_t len);
    1288 
    1289 /*
    1290  * The internal exts are part of the public abi
    1291  * If we add more extensions, publish the callback here ------v
    1292  */
    1294 
    1310 
    1315  const char *name;
    1336  unsigned int id;
    1343  void *user;
    1346  /* Add new things just above here ---^
    1347  * This is part of the ABI, don't needlessly break compatibility */
    1348 };
    1349 
    1350 struct lws_vhost;
    1351 
    1360 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
    1361 lws_vhost_name_to_protocol(struct lws_vhost *vh, const char *name);
    1362 
    1372 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
    1373 lws_get_protocol(struct lws *wsi);
    1374 
    1376 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
    1377 lws_protocol_get(struct lws *wsi) LWS_WARN_DEPRECATED;
    1378 
    1389 LWS_VISIBLE LWS_EXTERN void *
    1390 lws_protocol_vh_priv_zalloc(struct lws_vhost *vhost, const struct lws_protocols *prot,
    1391  int size);
    1392 
    1402 LWS_VISIBLE LWS_EXTERN void *
    1403 lws_protocol_vh_priv_get(struct lws_vhost *vhost, const struct lws_protocols *prot);
    1404 
    1413 LWS_VISIBLE LWS_EXTERN int
    1414 lws_finalize_startup(struct lws_context *context);
    1415 
    1416 #ifdef LWS_WITH_PLUGINS
    1417 
    1418 /* PLUGINS implies LIBUV */
    1419 
    1420 #define LWS_PLUGIN_API_MAGIC 180
    1421 
    1424  unsigned int api_magic;
    1425  const struct lws_protocols *protocols;
    1427  const struct lws_extension *extensions;
    1429 };
    1430 
    1431 typedef int (*lws_plugin_init_func)(struct lws_context *,
    1432  struct lws_plugin_capability *);
    1433 typedef int (*lws_plugin_destroy_func)(struct lws_context *);
    1434 
    1436 struct lws_plugin {
    1437  struct lws_plugin *list;
    1438 #if (UV_VERSION_MAJOR > 0)
    1439  uv_lib_t lib;
    1440 #else
    1441  void *l;
    1442 #endif
    1443  char name[64];
    1445 };
    1446 
    1447 #endif
    1448 
    1450 
    1451 
    1460 
    1462 #define LWSGS_EMAIL_CONTENT_SIZE 16384
    1463 
    1465 /* SHA-1 binary and hexified versions */
    1467 typedef struct { unsigned char bin[20]; } lwsgw_hash_bin;
    1469 typedef struct { char id[41]; } lwsgw_hash;
    1470 
    1477 };
    1478 
    1481  char username[32];
    1482  char email[100];
    1483  char ip[72];
    1484  unsigned int mask;
    1486  char session[42];
    1487 };
    1488 
    1493 };
    1494 
    1497  enum lws_gs_event event;
    1498  const char *username;
    1499  const char *email;
    1500 };
    1501 
    1503 
    1504 
    1518 
    1520 /*
    1521  * NOTE: These public enums are part of the abi. If you want to add one,
    1522  * add it at where specified so existing users are unaffected.
    1523  */
    1524 
    1528  (1 << 12),
    1535  (1 << 12),
    1551  (1 << 12),
    1556  (1 << 12),
    1587  /****** add new things just above ---^ ******/
    1588 };
    1589 
    1590 #define lws_check_opt(c, f) (((c) & (f)) == (f))
    1591 
    1602  int port;
    1607  const char *iface;
    1614  const struct lws_protocols *protocols;
    1618  const struct lws_extension *extensions;
    1626  const char *ssl_cert_filepath;
    1636  const char *ssl_ca_filepath;
    1638  const char *ssl_cipher_list;
    1642  const char *http_proxy_address;
    1645  unsigned int http_proxy_port;
    1647  int gid;
    1649  int uid;
    1651  unsigned int options;
    1653  void *user;
    1656  int ka_time;
    1666 #ifdef LWS_OPENSSL_SUPPORT
    1672 #else /* maintain structure layout either way */
    1674 #endif
    1675 
    1686  unsigned int count_threads;
    1688  unsigned int fd_limit_per_thread;
    1692  unsigned int timeout_secs;
    1697  const char *ecdh_curve;
    1699  const char *vhost_name;
    1703  const char * const *plugin_dirs;
    1712  const char *log_filepath;
    1715  const struct lws_http_mount *mounts;
    1717  const char *server_string;
    1720  unsigned int pt_serv_buf_size;
    1735  unsigned short ws_ping_pong_interval;
    1766  /* Add new things just above here ---^
    1767  * This is part of the ABI, don't needlessly break compatibility
    1768  *
    1769  * The below is to ensure later library versions with new
    1770  * members added above will see 0 (default) even if the app
    1771  * was not built against the newer headers.
    1772  */
    1773 
    1774  void *_unused[8];
    1775 };
    1776 
    1811 LWS_VISIBLE LWS_EXTERN struct lws_context *
    1813 
    1822 LWS_VISIBLE LWS_EXTERN void
    1823 lws_context_destroy(struct lws_context *context);
    1824 
    1825 LWS_VISIBLE LWS_EXTERN void
    1826 lws_context_destroy2(struct lws_context *context);
    1827 
    1828 typedef int (*lws_reload_func)(void);
    1829 
    1854 LWS_VISIBLE LWS_EXTERN void
    1855 lws_context_deprecate(struct lws_context *context, lws_reload_func cb);
    1856 
    1857 LWS_VISIBLE LWS_EXTERN int
    1858 lws_context_is_deprecated(struct lws_context *context);
    1859 
    1877 LWS_VISIBLE LWS_EXTERN int
    1878 lws_set_proxy(struct lws_vhost *vhost, const char *proxy);
    1879 
    1880 
    1881 struct lws_vhost;
    1882 
    1892 LWS_EXTERN LWS_VISIBLE struct lws_vhost *
    1893 lws_create_vhost(struct lws_context *context,
    1894  struct lws_context_creation_info *info);
    1895 
    1910 LWS_VISIBLE LWS_EXTERN int
    1911 lwsws_get_config_globals(struct lws_context_creation_info *info, const char *d,
    1912  char **config_strings, int *len);
    1913 
    1929 LWS_VISIBLE LWS_EXTERN int
    1930 lwsws_get_config_vhosts(struct lws_context *context,
    1931  struct lws_context_creation_info *info, const char *d,
    1932  char **config_strings, int *len);
    1933 
    1935 LWS_VISIBLE LWS_EXTERN struct lws_vhost *
    1936 lws_vhost_get(struct lws *wsi) LWS_WARN_DEPRECATED;
    1937 
    1943 LWS_VISIBLE LWS_EXTERN struct lws_vhost *
    1944 lws_get_vhost(struct lws *wsi);
    1945 
    1953 LWS_VISIBLE LWS_EXTERN int
    1954 lws_json_dump_vhost(const struct lws_vhost *vh, char *buf, int len);
    1955 
    1963 LWS_VISIBLE LWS_EXTERN int
    1964 lws_json_dump_context(const struct lws_context *context, char *buf, int len,
    1965  int hide_vhosts);
    1966 
    1976 LWS_VISIBLE LWS_EXTERN void *
    1977 lws_context_user(struct lws_context *context);
    1978 
    1984 
    1994  const char *name;
    1995  const char *value;
    1996 };
    1997 
    2010 };
    2011 
    2019  const char *mountpoint;
    2021  const char *origin;
    2023  const char *def;
    2025  const char *protocol;
    2041  unsigned int auth_mask;
    2044  unsigned int cache_reusable:1;
    2045  unsigned int cache_revalidate:1;
    2046  unsigned int cache_intermediaries:1;
    2048  unsigned char origin_protocol;
    2049  unsigned char mountpoint_len;
    2054  /* Add new things just above here ---^
    2055  * This is part of the ABI, don't needlessly break compatibility
    2056  *
    2057  * The below is to ensure later library versions with new
    2058  * members added above will see 0 (default) even if the app
    2059  * was not built against the newer headers.
    2060  */
    2061 
    2062  void *_unused[2];
    2063 };
    2066 
    2072 
    2080  LCCSCF_USE_SSL = (1 << 0),
    2081  LCCSCF_ALLOW_SELFSIGNED = (1 << 1),
    2082  LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK = (1 << 2),
    2083  LCCSCF_ALLOW_EXPIRED = (1 << 3)
    2084 };
    2085 
    2090  struct lws_context *context;
    2092  const char *address;
    2094  int port;
    2098  const char *path;
    2100  const char *host;
    2102  const char *origin;
    2104  const char *protocol;
    2108  void *userdata;
    2112  const char *method;
    2115  struct lws *parent_wsi;
    2119  const char *uri_replace_from;
    2122  const char *uri_replace_to;
    2124  struct lws_vhost *vhost;
    2126  struct lws **pwsi;
    2138  /* Add new things just above here ---^
    2139  * This is part of the ABI, don't needlessly break compatibility
    2140  *
    2141  * The below is to ensure later library versions with new
    2142  * members added above will see 0 (default) even if the app
    2143  * was not built against the newer headers.
    2144  */
    2145 
    2146  void *_unused[4];
    2147 };
    2148 
    2156 LWS_VISIBLE LWS_EXTERN struct lws *
    2158 
    2179 /* deprecated, use lws_client_connect_via_info() */
    2180 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    2181 lws_client_connect(struct lws_context *clients, const char *address,
    2182  int port, int ssl_connection, const char *path,
    2183  const char *host, const char *origin, const char *protocol,
    2184  int ietf_version_or_minus_one) LWS_WARN_DEPRECATED;
    2185 /* deprecated, use lws_client_connect_via_info() */
    2206 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    2207 lws_client_connect_extended(struct lws_context *clients, const char *address,
    2208  int port, int ssl_connection, const char *path,
    2209  const char *host, const char *origin,
    2210  const char *protocol, int ietf_version_or_minus_one,
    2211  void *userdata) LWS_WARN_DEPRECATED;
    2212 
    2238 LWS_VISIBLE LWS_EXTERN int
    2240  struct lws_vhost *vhost);
    2241 
    2242 LWS_VISIBLE LWS_EXTERN int
    2243 lws_http_client_read(struct lws *wsi, char **buf, int *len);
    2244 
    2252 LWS_VISIBLE LWS_EXTERN unsigned int
    2253 lws_http_client_http_response(struct lws *wsi);
    2254 
    2255 LWS_VISIBLE LWS_EXTERN void
    2256 lws_client_http_body_pending(struct lws *wsi, int something_left_to_send);
    2257 
    2278 
    2287 
    2320 LWS_VISIBLE LWS_EXTERN int
    2321 lws_service(struct lws_context *context, int timeout_ms);
    2322 
    2334 LWS_VISIBLE LWS_EXTERN int
    2335 lws_service_tsi(struct lws_context *context, int timeout_ms, int tsi);
    2336 
    2352 LWS_VISIBLE LWS_EXTERN void
    2353 lws_cancel_service_pt(struct lws *wsi);
    2354 
    2366 LWS_VISIBLE LWS_EXTERN void
    2367 lws_cancel_service(struct lws_context *context);
    2368 
    2395 LWS_VISIBLE LWS_EXTERN int
    2396 lws_service_fd(struct lws_context *context, struct lws_pollfd *pollfd);
    2397 
    2407 LWS_VISIBLE LWS_EXTERN int
    2408 lws_service_fd_tsi(struct lws_context *context, struct lws_pollfd *pollfd,
    2409  int tsi);
    2410 
    2428 LWS_VISIBLE LWS_EXTERN int
    2429 lws_service_adjust_timeout(struct lws_context *context, int timeout_ms, int tsi);
    2430 
    2431 /* Backwards compatibility */
    2432 #define lws_plat_service_tsi lws_service_tsi
    2433 
    2435 
    2441 
    2448 
    2460 LWS_VISIBLE LWS_EXTERN const char *
    2461 lws_get_mimetype(const char *file, const struct lws_http_mount *m);
    2462 
    2481 LWS_VISIBLE LWS_EXTERN int
    2482 lws_serve_http_file(struct lws *wsi, const char *file, const char *content_type,
    2483  const char *other_headers, int other_headers_len);
    2484 LWS_VISIBLE LWS_EXTERN int
    2485 lws_serve_http_file_fragment(struct lws *wsi);
    2487 
    2498 
    2499 enum http_status {
    2500  HTTP_STATUS_OK = 200,
    2501  HTTP_STATUS_NO_CONTENT = 204,
    2502  HTTP_STATUS_PARTIAL_CONTENT = 206,
    2503 
    2504  HTTP_STATUS_MOVED_PERMANENTLY = 301,
    2505  HTTP_STATUS_FOUND = 302,
    2506  HTTP_STATUS_SEE_OTHER = 303,
    2507 
    2508  HTTP_STATUS_BAD_REQUEST = 400,
    2509  HTTP_STATUS_UNAUTHORIZED,
    2510  HTTP_STATUS_PAYMENT_REQUIRED,
    2511  HTTP_STATUS_FORBIDDEN,
    2512  HTTP_STATUS_NOT_FOUND,
    2513  HTTP_STATUS_METHOD_NOT_ALLOWED,
    2514  HTTP_STATUS_NOT_ACCEPTABLE,
    2515  HTTP_STATUS_PROXY_AUTH_REQUIRED,
    2516  HTTP_STATUS_REQUEST_TIMEOUT,
    2517  HTTP_STATUS_CONFLICT,
    2518  HTTP_STATUS_GONE,
    2519  HTTP_STATUS_LENGTH_REQUIRED,
    2520  HTTP_STATUS_PRECONDITION_FAILED,
    2521  HTTP_STATUS_REQ_ENTITY_TOO_LARGE,
    2522  HTTP_STATUS_REQ_URI_TOO_LONG,
    2523  HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE,
    2524  HTTP_STATUS_REQ_RANGE_NOT_SATISFIABLE,
    2525  HTTP_STATUS_EXPECTATION_FAILED,
    2526 
    2527  HTTP_STATUS_INTERNAL_SERVER_ERROR = 500,
    2528  HTTP_STATUS_NOT_IMPLEMENTED,
    2529  HTTP_STATUS_BAD_GATEWAY,
    2530  HTTP_STATUS_SERVICE_UNAVAILABLE,
    2531  HTTP_STATUS_GATEWAY_TIMEOUT,
    2532  HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED,
    2533 };
    2534 
    2536  char *p;
    2537  int len;
    2538  int max_len;
    2539  int final;
    2540 };
    2541 
    2542 typedef const char *(*lws_process_html_state_cb)(void *data, int index);
    2543 
    2545  char *start;
    2546  char swallow[16];
    2547  int pos;
    2548  void *data;
    2549  const char * const *vars;
    2552  lws_process_html_state_cb replace;
    2553 };
    2554 
    2559 LWS_VISIBLE LWS_EXTERN int
    2561  struct lws_process_html_state *s);
    2563 
    2596 
    2604 struct lws_tokens {
    2605  char *token;
    2607 };
    2608 
    2609 /* enum lws_token_indexes
    2610  * these have to be kept in sync with lextable.h / minilex.c
    2611  *
    2612  * NOTE: These public enums are part of the abi. If you want to add one,
    2613  * add it at where specified so existing users are unaffected.
    2614  */
    2615 enum lws_token_indexes {
    2616  WSI_TOKEN_GET_URI = 0,
    2617  WSI_TOKEN_POST_URI = 1,
    2618  WSI_TOKEN_OPTIONS_URI = 2,
    2619  WSI_TOKEN_HOST = 3,
    2620  WSI_TOKEN_CONNECTION = 4,
    2621  WSI_TOKEN_UPGRADE = 5,
    2622  WSI_TOKEN_ORIGIN = 6,
    2623  WSI_TOKEN_DRAFT = 7,
    2624  WSI_TOKEN_CHALLENGE = 8,
    2625  WSI_TOKEN_EXTENSIONS = 9,
    2626  WSI_TOKEN_KEY1 = 10,
    2627  WSI_TOKEN_KEY2 = 11,
    2628  WSI_TOKEN_PROTOCOL = 12,
    2629  WSI_TOKEN_ACCEPT = 13,
    2630  WSI_TOKEN_NONCE = 14,
    2631  WSI_TOKEN_HTTP = 15,
    2632  WSI_TOKEN_HTTP2_SETTINGS = 16,
    2633  WSI_TOKEN_HTTP_ACCEPT = 17,
    2634  WSI_TOKEN_HTTP_AC_REQUEST_HEADERS = 18,
    2635  WSI_TOKEN_HTTP_IF_MODIFIED_SINCE = 19,
    2636  WSI_TOKEN_HTTP_IF_NONE_MATCH = 20,
    2637  WSI_TOKEN_HTTP_ACCEPT_ENCODING = 21,
    2638  WSI_TOKEN_HTTP_ACCEPT_LANGUAGE = 22,
    2639  WSI_TOKEN_HTTP_PRAGMA = 23,
    2640  WSI_TOKEN_HTTP_CACHE_CONTROL = 24,
    2641  WSI_TOKEN_HTTP_AUTHORIZATION = 25,
    2642  WSI_TOKEN_HTTP_COOKIE = 26,
    2643  WSI_TOKEN_HTTP_CONTENT_LENGTH = 27,
    2644  WSI_TOKEN_HTTP_CONTENT_TYPE = 28,
    2645  WSI_TOKEN_HTTP_DATE = 29,
    2646  WSI_TOKEN_HTTP_RANGE = 30,
    2647  WSI_TOKEN_HTTP_REFERER = 31,
    2648  WSI_TOKEN_KEY = 32,
    2649  WSI_TOKEN_VERSION = 33,
    2650  WSI_TOKEN_SWORIGIN = 34,
    2651 
    2652  WSI_TOKEN_HTTP_COLON_AUTHORITY = 35,
    2653  WSI_TOKEN_HTTP_COLON_METHOD = 36,
    2654  WSI_TOKEN_HTTP_COLON_PATH = 37,
    2655  WSI_TOKEN_HTTP_COLON_SCHEME = 38,
    2656  WSI_TOKEN_HTTP_COLON_STATUS = 39,
    2657 
    2658  WSI_TOKEN_HTTP_ACCEPT_CHARSET = 40,
    2659  WSI_TOKEN_HTTP_ACCEPT_RANGES = 41,
    2660  WSI_TOKEN_HTTP_ACCESS_CONTROL_ALLOW_ORIGIN = 42,
    2661  WSI_TOKEN_HTTP_AGE = 43,
    2662  WSI_TOKEN_HTTP_ALLOW = 44,
    2663  WSI_TOKEN_HTTP_CONTENT_DISPOSITION = 45,
    2664  WSI_TOKEN_HTTP_CONTENT_ENCODING = 46,
    2665  WSI_TOKEN_HTTP_CONTENT_LANGUAGE = 47,
    2666  WSI_TOKEN_HTTP_CONTENT_LOCATION = 48,
    2667  WSI_TOKEN_HTTP_CONTENT_RANGE = 49,
    2668  WSI_TOKEN_HTTP_ETAG = 50,
    2669  WSI_TOKEN_HTTP_EXPECT = 51,
    2670  WSI_TOKEN_HTTP_EXPIRES = 52,
    2671  WSI_TOKEN_HTTP_FROM = 53,
    2672  WSI_TOKEN_HTTP_IF_MATCH = 54,
    2673  WSI_TOKEN_HTTP_IF_RANGE = 55,
    2674  WSI_TOKEN_HTTP_IF_UNMODIFIED_SINCE = 56,
    2675  WSI_TOKEN_HTTP_LAST_MODIFIED = 57,
    2676  WSI_TOKEN_HTTP_LINK = 58,
    2677  WSI_TOKEN_HTTP_LOCATION = 59,
    2678  WSI_TOKEN_HTTP_MAX_FORWARDS = 60,
    2679  WSI_TOKEN_HTTP_PROXY_AUTHENTICATE = 61,
    2680  WSI_TOKEN_HTTP_PROXY_AUTHORIZATION = 62,
    2681  WSI_TOKEN_HTTP_REFRESH = 63,
    2682  WSI_TOKEN_HTTP_RETRY_AFTER = 64,
    2683  WSI_TOKEN_HTTP_SERVER = 65,
    2684  WSI_TOKEN_HTTP_SET_COOKIE = 66,
    2685  WSI_TOKEN_HTTP_STRICT_TRANSPORT_SECURITY = 67,
    2686  WSI_TOKEN_HTTP_TRANSFER_ENCODING = 68,
    2687  WSI_TOKEN_HTTP_USER_AGENT = 69,
    2688  WSI_TOKEN_HTTP_VARY = 70,
    2689  WSI_TOKEN_HTTP_VIA = 71,
    2690  WSI_TOKEN_HTTP_WWW_AUTHENTICATE = 72,
    2691 
    2692  WSI_TOKEN_PATCH_URI = 73,
    2693  WSI_TOKEN_PUT_URI = 74,
    2694  WSI_TOKEN_DELETE_URI = 75,
    2695 
    2696  WSI_TOKEN_HTTP_URI_ARGS = 76,
    2697  WSI_TOKEN_PROXY = 77,
    2698  WSI_TOKEN_HTTP_X_REAL_IP = 78,
    2699  WSI_TOKEN_HTTP1_0 = 79,
    2700  WSI_TOKEN_X_FORWARDED_FOR = 80,
    2701 
    2702  /****** add new things just above ---^ ******/
    2703 
    2704  /* use token storage to stash these internally, not for
    2705  * user use */
    2706 
    2707  _WSI_TOKEN_CLIENT_SENT_PROTOCOLS,
    2708  _WSI_TOKEN_CLIENT_PEER_ADDRESS,
    2709  _WSI_TOKEN_CLIENT_URI,
    2710  _WSI_TOKEN_CLIENT_HOST,
    2711  _WSI_TOKEN_CLIENT_ORIGIN,
    2712  _WSI_TOKEN_CLIENT_METHOD,
    2713 
    2714  /* always last real token index*/
    2715  WSI_TOKEN_COUNT,
    2716 
    2717  /* parser state additions, no storage associated */
    2718  WSI_TOKEN_NAME_PART,
    2719  WSI_TOKEN_SKIPPING,
    2720  WSI_TOKEN_SKIPPING_SAW_CR,
    2721  WSI_PARSING_COMPLETE,
    2722  WSI_INIT_TOKEN_MUXURL,
    2723 };
    2724 
    2726  unsigned short token_limit[WSI_TOKEN_COUNT];
    2727 };
    2728 
    2734 LWS_VISIBLE LWS_EXTERN const unsigned char *
    2735 lws_token_to_string(enum lws_token_indexes token);
    2736 
    2737 
    2746 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2747 lws_hdr_total_length(struct lws *wsi, enum lws_token_indexes h);
    2748 
    2758 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2759 lws_hdr_fragment_length(struct lws *wsi, enum lws_token_indexes h, int frag_idx);
    2760 
    2774 LWS_VISIBLE LWS_EXTERN int
    2775 lws_hdr_copy(struct lws *wsi, char *dest, int len, enum lws_token_indexes h);
    2776 
    2794 LWS_VISIBLE LWS_EXTERN int
    2795 lws_hdr_copy_fragment(struct lws *wsi, char *dest, int len,
    2796  enum lws_token_indexes h, int frag_idx);
    2797 
    2808 LWS_VISIBLE LWS_EXTERN const char *
    2809 lws_get_urlarg_by_name(struct lws *wsi, const char *name, char *buf, int len);
    2811 
    2826 
    2837 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2838 lws_add_http_header_status(struct lws *wsi,
    2839  unsigned int code, unsigned char **p,
    2840  unsigned char *end);
    2853 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2854 lws_add_http_header_by_name(struct lws *wsi, const unsigned char *name,
    2855  const unsigned char *value, int length,
    2856  unsigned char **p, unsigned char *end);
    2870 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2871 lws_add_http_header_by_token(struct lws *wsi, enum lws_token_indexes token,
    2872  const unsigned char *value, int length,
    2873  unsigned char **p, unsigned char *end);
    2884 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2885 lws_add_http_header_content_length(struct lws *wsi,
    2886  unsigned long content_length,
    2887  unsigned char **p, unsigned char *end);
    2897 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2898 lws_finalize_http_header(struct lws *wsi, unsigned char **p,
    2899  unsigned char *end);
    2901 
    2920 
    2930 };
    2931 
    2945 typedef int (*lws_spa_fileupload_cb)(void *data, const char *name,
    2946  const char *filename, char *buf, int len,
    2947  enum lws_spa_fileupload_states state);
    2948 
    2951 struct lws_spa;
    2952 
    2971 LWS_VISIBLE LWS_EXTERN struct lws_spa *
    2972 lws_spa_create(struct lws *wsi, const char * const *param_names,
    2973  int count_params, int max_storage, lws_spa_fileupload_cb opt_cb,
    2974  void *opt_data);
    2975 
    2983 LWS_VISIBLE LWS_EXTERN int
    2984 lws_spa_process(struct lws_spa *spa, const char *in, int len);
    2985 
    2991 LWS_VISIBLE LWS_EXTERN int
    2992 lws_spa_finalize(struct lws_spa *spa);
    2993 
    3000 LWS_VISIBLE LWS_EXTERN int
    3001 lws_spa_get_length(struct lws_spa *spa, int n);
    3002 
    3008 LWS_VISIBLE LWS_EXTERN const char *
    3009 lws_spa_get_string(struct lws_spa *spa, int n);
    3010 
    3016 LWS_VISIBLE LWS_EXTERN int
    3017 lws_spa_destroy(struct lws_spa *spa);
    3019 
    3030 
    3041 LWS_VISIBLE LWS_EXTERN const char *
    3042 lws_urlencode(char *escaped, const char *string, int len);
    3043 
    3044 /*
    3045  * URLDECODE 1 / 2
    3046  *
    3047  * This simple urldecode only operates until the first '\0' and requires the
    3048  * data to exist all at once
    3049  */
    3062 LWS_VISIBLE LWS_EXTERN int
    3063 lws_urldecode(char *string, const char *escaped, int len);
    3065 
    3074 LWS_VISIBLE LWS_EXTERN int
    3075 lws_return_http_status(struct lws *wsi, unsigned int code,
    3076  const char *html_body);
    3077 
    3088 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3089 lws_http_redirect(struct lws *wsi, int code, const unsigned char *loc, int len,
    3090  unsigned char **p, unsigned char *end);
    3091 
    3100 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3101 lws_http_transaction_completed(struct lws *wsi);
    3103 
    3111 
    3122 LWS_VISIBLE LWS_EXTERN const char *
    3123 lws_sql_purify(char *escaped, const char *string, int len);
    3124 
    3135 LWS_VISIBLE LWS_EXTERN const char *
    3136 lws_json_purify(char *escaped, const char *string, int len);
    3138 
    3145 
    3147 #ifdef LWS_USE_LIBEV
    3148 typedef void (lws_ev_signal_cb_t)(EV_P_ struct ev_signal *w, int revents);
    3149 
    3150 LWS_VISIBLE LWS_EXTERN int
    3151 lws_ev_sigint_cfg(struct lws_context *context, int use_ev_sigint,
    3152  lws_ev_signal_cb_t *cb);
    3153 
    3154 LWS_VISIBLE LWS_EXTERN int
    3155 lws_ev_initloop(struct lws_context *context, struct ev_loop *loop, int tsi);
    3156 
    3157 LWS_VISIBLE LWS_EXTERN void
    3158 lws_ev_sigint_cb(struct ev_loop *loop, struct ev_signal *watcher, int revents);
    3159 #endif /* LWS_USE_LIBEV */
    3160 
    3162 
    3169 #ifdef LWS_USE_LIBUV
    3171 LWS_VISIBLE LWS_EXTERN int
    3172 lws_uv_sigint_cfg(struct lws_context *context, int use_uv_sigint,
    3173  uv_signal_cb cb);
    3174 
    3175 LWS_VISIBLE LWS_EXTERN void
    3176 lws_libuv_run(const struct lws_context *context, int tsi);
    3177 
    3178 LWS_VISIBLE LWS_EXTERN void
    3179 lws_libuv_stop(struct lws_context *context);
    3180 
    3181 LWS_VISIBLE LWS_EXTERN void
    3182 lws_libuv_stop_without_kill(const struct lws_context *context, int tsi);
    3183 
    3184 LWS_VISIBLE LWS_EXTERN int
    3185 lws_uv_initloop(struct lws_context *context, uv_loop_t *loop, int tsi);
    3186 
    3187 LWS_VISIBLE LWS_EXTERN uv_loop_t *
    3188 lws_uv_getloop(struct lws_context *context, int tsi);
    3189 
    3190 LWS_VISIBLE LWS_EXTERN void
    3191 lws_uv_sigint_cb(uv_signal_t *watcher, int signum);
    3192 #endif /* LWS_USE_LIBUV */
    3193 
    3200 
    3201 /*
    3202  * NOTE: These public enums are part of the abi. If you want to add one,
    3203  * add it at where specified so existing users are unaffected.
    3204  */
    3205 enum pending_timeout {
    3206  NO_PENDING_TIMEOUT = 0,
    3207  PENDING_TIMEOUT_AWAITING_PROXY_RESPONSE = 1,
    3208  PENDING_TIMEOUT_AWAITING_CONNECT_RESPONSE = 2,
    3209  PENDING_TIMEOUT_ESTABLISH_WITH_SERVER = 3,
    3210  PENDING_TIMEOUT_AWAITING_SERVER_RESPONSE = 4,
    3211  PENDING_TIMEOUT_AWAITING_PING = 5,
    3212  PENDING_TIMEOUT_CLOSE_ACK = 6,
    3213  PENDING_TIMEOUT_AWAITING_EXTENSION_CONNECT_RESPONSE = 7,
    3214  PENDING_TIMEOUT_SENT_CLIENT_HANDSHAKE = 8,
    3215  PENDING_TIMEOUT_SSL_ACCEPT = 9,
    3216  PENDING_TIMEOUT_HTTP_CONTENT = 10,
    3217  PENDING_TIMEOUT_AWAITING_CLIENT_HS_SEND = 11,
    3218  PENDING_FLUSH_STORED_SEND_BEFORE_CLOSE = 12,
    3219  PENDING_TIMEOUT_SHUTDOWN_FLUSH = 13,
    3220  PENDING_TIMEOUT_CGI = 14,
    3221  PENDING_TIMEOUT_HTTP_KEEPALIVE_IDLE = 15,
    3222  PENDING_TIMEOUT_WS_PONG_CHECK_SEND_PING = 16,
    3223  PENDING_TIMEOUT_WS_PONG_CHECK_GET_PONG = 17,
    3224  PENDING_TIMEOUT_CLIENT_ISSUE_PAYLOAD = 18,
    3225 
    3226  /****** add new things just above ---^ ******/
    3227 };
    3228 
    3238 LWS_VISIBLE LWS_EXTERN void
    3239 lws_set_timeout(struct lws *wsi, enum pending_timeout reason, int secs);
    3241 
    3247 #if !defined(LWS_SIZEOFPTR)
    3248 #define LWS_SIZEOFPTR (sizeof (void *))
    3249 #endif
    3250 #if !defined(u_int64_t)
    3251 #define u_int64_t unsigned long long
    3252 #endif
    3253 
    3254 #if defined(__x86_64__)
    3255 #define _LWS_PAD_SIZE 16 /* Intel recommended for best performance */
    3256 #else
    3257 #define _LWS_PAD_SIZE LWS_SIZEOFPTR /* Size of a pointer on the target arch */
    3258 #endif
    3259 #define _LWS_PAD(n) (((n) % _LWS_PAD_SIZE) ? \
    3260  ((n) + (_LWS_PAD_SIZE - ((n) % _LWS_PAD_SIZE))) : (n))
    3261 #define LWS_PRE _LWS_PAD(4 + 10)
    3262 /* used prior to 1.7 and retained for backward compatibility */
    3263 #define LWS_SEND_BUFFER_PRE_PADDING LWS_PRE
    3264 #define LWS_SEND_BUFFER_POST_PADDING 0
    3265 
    3266 /*
    3267  * NOTE: These public enums are part of the abi. If you want to add one,
    3268  * add it at where specified so existing users are unaffected.
    3269  */
    3284  /* LWS_WRITE_CLOSE is handled by lws_close_reason() */
    3285  LWS_WRITE_PING = 5,
    3286  LWS_WRITE_PONG = 6,
    3287 
    3288  /* Same as write_http but we know this write ends the transaction */
    3289  LWS_WRITE_HTTP_FINAL = 7,
    3290 
    3291  /* HTTP2 */
    3292 
    3300  /****** add new things just above ---^ ******/
    3301 
    3302  /* flags */
    3303 
    3311 };
    3312 
    3313 
    3400 LWS_VISIBLE LWS_EXTERN int
    3401 lws_write(struct lws *wsi, unsigned char *buf, size_t len,
    3402  enum lws_write_protocol protocol);
    3403 
    3404 /* helper for case where buffer may be const */
    3405 #define lws_write_http(wsi, buf, len) \
    3406  lws_write(wsi, (unsigned char *)(buf), len, LWS_WRITE_HTTP)
    3407 
    3427 
    3440 LWS_VISIBLE LWS_EXTERN int
    3441 lws_callback_on_writable(struct lws *wsi);
    3442 
    3456 LWS_VISIBLE LWS_EXTERN int
    3457 lws_callback_on_writable_all_protocol(const struct lws_context *context,
    3458  const struct lws_protocols *protocol);
    3459 
    3473 LWS_VISIBLE LWS_EXTERN int
    3474 lws_callback_on_writable_all_protocol_vhost(const struct lws_vhost *vhost,
    3475  const struct lws_protocols *protocol);
    3476 
    3489 LWS_VISIBLE LWS_EXTERN int
    3490 lws_callback_all_protocol(struct lws_context *context,
    3491  const struct lws_protocols *protocol, int reason);
    3492 
    3505 LWS_VISIBLE LWS_EXTERN int
    3506 lws_callback_all_protocol_vhost(struct lws_vhost *vh,
    3507  const struct lws_protocols *protocol, int reason);
    3508 
    3522 LWS_VISIBLE LWS_EXTERN int
    3523 lws_callback_vhost_protocols(struct lws *wsi, int reason, void *in, int len);
    3524 
    3525 LWS_VISIBLE LWS_EXTERN int
    3526 lws_callback_http_dummy(struct lws *wsi, enum lws_callback_reasons reason,
    3527  void *user, void *in, size_t len);
    3528 
    3536 LWS_VISIBLE LWS_EXTERN int
    3537 lws_get_socket_fd(struct lws *wsi);
    3538 
    3560 LWS_VISIBLE LWS_EXTERN size_t
    3561 lws_get_peer_write_allowance(struct lws *wsi);
    3563 
    3574 LWS_VISIBLE LWS_EXTERN int
    3575 lws_rx_flow_control(struct lws *wsi, int enable);
    3576 
    3586 LWS_VISIBLE LWS_EXTERN void
    3587 lws_rx_flow_allow_all_protocol(const struct lws_context *context,
    3588  const struct lws_protocols *protocol);
    3589 
    3606 LWS_VISIBLE LWS_EXTERN size_t
    3607 lws_remaining_packet_payload(struct lws *wsi);
    3608 
    3609 
    3618 
    3632 LWS_VISIBLE LWS_EXTERN struct lws *
    3633 lws_adopt_socket(struct lws_context *context, lws_sockfd_type accept_fd);
    3646 LWS_VISIBLE LWS_EXTERN struct lws *
    3647 lws_adopt_socket_vhost(struct lws_vhost *vh, lws_sockfd_type accept_fd);
    3671 LWS_VISIBLE LWS_EXTERN struct lws *
    3672 lws_adopt_socket_readbuf(struct lws_context *context, lws_sockfd_type accept_fd,
    3673  const char *readbuf, size_t len);
    3697 LWS_VISIBLE LWS_EXTERN struct lws *
    3698 lws_adopt_socket_vhost_readbuf(struct lws_vhost *vhost, lws_sockfd_type accept_fd,
    3699  const char *readbuf, size_t len);
    3701 
    3707 
    3718 LWS_VISIBLE LWS_EXTERN const char * LWS_WARN_UNUSED_RESULT
    3719 lws_canonical_hostname(struct lws_context *context);
    3720 
    3735 LWS_VISIBLE LWS_EXTERN void
    3736 lws_get_peer_addresses(struct lws *wsi, lws_sockfd_type fd, char *name,
    3737  int name_len, char *rip, int rip_len);
    3738 
    3749 LWS_VISIBLE LWS_EXTERN const char *
    3750 lws_get_peer_simple(struct lws *wsi, char *name, int namelen);
    3751 #ifndef LWS_WITH_ESP8266
    3752 
    3763 LWS_VISIBLE LWS_EXTERN int
    3764 lws_interface_to_sa(int ipv6, const char *ifname, struct sockaddr_in *addr,
    3765  size_t addrlen);
    3767 #endif
    3768 
    3774 
    3787 LWS_VISIBLE LWS_EXTERN int
    3788 lws_snprintf(char *str, size_t size, const char *format, ...);
    3789 
    3801 LWS_VISIBLE LWS_EXTERN int
    3802 lws_get_random(struct lws_context *context, void *buf, int len);
    3810 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3811 lws_daemonize(const char *_lock_path);
    3817 LWS_VISIBLE LWS_EXTERN const char * LWS_WARN_UNUSED_RESULT
    3819 
    3826 LWS_VISIBLE LWS_EXTERN void *
    3827 lws_wsi_user(struct lws *wsi);
    3828 
    3840 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3841 lws_parse_uri(char *p, const char **prot, const char **ads, int *port,
    3842  const char **path);
    3843 
    3847 LWS_VISIBLE LWS_EXTERN unsigned long
    3848 lws_now_secs(void);
    3849 
    3859 LWS_VISIBLE LWS_EXTERN struct lws_context * LWS_WARN_UNUSED_RESULT
    3860 lws_get_context(const struct lws *wsi);
    3861 
    3871 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3872 lws_get_count_threads(struct lws_context *context);
    3873 
    3881 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    3882 lws_get_parent(const struct lws *wsi);
    3883 
    3890 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    3891 lws_get_child(const struct lws *wsi);
    3892 
    3893 
    3894 /*
    3895  * \deprecated DEPRECATED Note: this is not normally needed as a user api.
    3896  * It's provided in case it is
    3897  * useful when integrating with other app poll loop service code.
    3898  */
    3899 LWS_VISIBLE LWS_EXTERN int
    3900 lws_read(struct lws *wsi, unsigned char *buf, size_t len);
    3901 
    3909 LWS_VISIBLE LWS_EXTERN void
    3910 lws_set_allocator(void *(*realloc)(void *ptr, size_t size));
    3912 
    3918 
    3925 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3926 lws_send_pipe_choked(struct lws *wsi);
    3927 
    3932 LWS_VISIBLE LWS_EXTERN int
    3933 lws_is_final_fragment(struct lws *wsi);
    3934 
    3939 LWS_VISIBLE LWS_EXTERN unsigned char
    3940 lws_get_reserved_bits(struct lws *wsi);
    3941 
    3958 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3959 lws_partial_buffered(struct lws *wsi);
    3960 
    3970 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3971 lws_frame_is_binary(struct lws *wsi);
    3972 
    3981 LWS_VISIBLE LWS_EXTERN int
    3982 lws_is_ssl(struct lws *wsi);
    3987 LWS_VISIBLE LWS_EXTERN int
    3988 lws_is_cgi(struct lws *wsi);
    3989 
    3990 #ifdef LWS_OPENSSL_SUPPORT
    3991 
    3997 LWS_VISIBLE LWS_EXTERN SSL*
    3998 lws_get_ssl(struct lws *wsi);
    3999 #endif
    4000 
    4002 
    4008 #ifdef LWS_SHA1_USE_OPENSSL_NAME
    4010 #define lws_SHA1 SHA1
    4011 #else
    4012 
    4021 LWS_VISIBLE LWS_EXTERN unsigned char *
    4022 lws_SHA1(const unsigned char *d, size_t n, unsigned char *md);
    4023 #endif
    4024 
    4034 LWS_VISIBLE LWS_EXTERN int
    4035 lws_b64_encode_string(const char *in, int in_len, char *out, int out_size);
    4045 LWS_VISIBLE LWS_EXTERN int
    4046 lws_b64_decode_string(const char *in, char *out, int out_size);
    4048 
    4049 
    4059 #ifdef LWS_WITH_CGI
    4060 enum lws_enum_stdinouterr {
    4061  LWS_STDIN = 0,
    4062  LWS_STDOUT = 1,
    4063  LWS_STDERR = 2,
    4064 };
    4065 
    4066 enum lws_cgi_hdr_state {
    4067  LCHS_HEADER,
    4068  LCHS_CR1,
    4069  LCHS_LF1,
    4070  LCHS_CR2,
    4071  LCHS_LF2,
    4072  LHCS_PAYLOAD,
    4073  LCHS_SINGLE_0A,
    4074 };
    4075 
    4077  struct lws **stdwsi;
    4078  enum lws_enum_stdinouterr ch;
    4079  unsigned char *data;
    4080  enum lws_cgi_hdr_state hdr_state;
    4081  int len;
    4082 };
    4083 
    4084 
    4094 LWS_VISIBLE LWS_EXTERN int
    4095 lws_cgi(struct lws *wsi, const char * const *exec_array,
    4096  int script_uri_path_len, int timeout_secs,
    4097  const struct lws_protocol_vhost_options *mp_cgienv);
    4098 
    4104 LWS_VISIBLE LWS_EXTERN int
    4105 lws_cgi_write_split_stdout_headers(struct lws *wsi);
    4106 
    4112 LWS_VISIBLE LWS_EXTERN int
    4113 lws_cgi_kill(struct lws *wsi);
    4114 #endif
    4115 
    4117 
    4134 
    4141  lws_filefd_type (*open)(struct lws *wsi, const char *filename,
    4142  unsigned long *filelen, int flags);
    4146  int (*close)(struct lws *wsi, lws_filefd_type fd);
    4148  unsigned long (*seek_cur)(struct lws *wsi, lws_filefd_type fd,
    4149  long offset_from_cur_pos);
    4151  int (*read)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    4152  unsigned char *buf, unsigned long len);
    4154  int (*write)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    4155  unsigned char *buf, unsigned long len);
    4158  /* Add new things just above here ---^
    4159  * This is part of the ABI, don't needlessly break compatibility */
    4160 };
    4161 
    4167 LWS_VISIBLE LWS_EXTERN struct lws_plat_file_ops * LWS_WARN_UNUSED_RESULT
    4168 lws_get_fops(struct lws_context *context);
    4169 
    4178 static LWS_INLINE lws_filefd_type LWS_WARN_UNUSED_RESULT
    4179 lws_plat_file_open(struct lws *wsi, const char *filename,
    4180  unsigned long *filelen, int flags)
    4181 {
    4182  return lws_get_fops(lws_get_context(wsi))->open(wsi, filename,
    4183  filelen, flags);
    4184 }
    4185 
    4192 static LWS_INLINE int
    4193 lws_plat_file_close(struct lws *wsi, lws_filefd_type fd)
    4194 {
    4195  return lws_get_fops(lws_get_context(wsi))->close(wsi, fd);
    4196 }
    4197 
    4205 static LWS_INLINE unsigned long
    4206 lws_plat_file_seek_cur(struct lws *wsi, lws_filefd_type fd, long offset)
    4207 {
    4208  return lws_get_fops(lws_get_context(wsi))->seek_cur(wsi, fd, offset);
    4209 }
    4219 static LWS_INLINE int LWS_WARN_UNUSED_RESULT
    4220 lws_plat_file_read(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    4221  unsigned char *buf, unsigned long len)
    4222 {
    4223  return lws_get_fops(lws_get_context(wsi))->read(wsi, fd, amount, buf,
    4224  len);
    4225 }
    4235 static LWS_INLINE int LWS_WARN_UNUSED_RESULT
    4236 lws_plat_file_write(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    4237  unsigned char *buf, unsigned long len)
    4238 {
    4239  return lws_get_fops(lws_get_context(wsi))->write(wsi, fd, amount, buf,
    4240  len);
    4241 }
    4243 
    4275 #ifdef LWS_WITH_SMTP
    4276 
    4288 };
    4289 
    4291 struct lws_email {
    4292  void *data;
    4294  uv_loop_t *loop;
    4297  char email_smtp_ip[32];
    4298  char email_helo[32];
    4299  char email_from[100];
    4300  char email_to[100];
    4302  unsigned int max_content_size;
    4305  /* Fill all the callbacks before init */
    4306 
    4307  int (*on_next)(struct lws_email *email);
    4312  int (*on_sent)(struct lws_email *email);
    4317  int (*on_get_body)(struct lws_email *email, char *buf, int len);
    4323  /* private things */
    4324  uv_timer_t timeout_email;
    4326  uv_connect_t email_connect_req;
    4327  uv_tcp_t email_client;
    4329  char email_buf[256];
    4330  char *content;
    4331 };
    4332 
    4342 LWS_VISIBLE LWS_EXTERN int
    4343 lws_email_init(struct lws_email *email, uv_loop_t *loop, int max_content);
    4344 
    4353 LWS_VISIBLE LWS_EXTERN void
    4354 lws_email_check(struct lws_email *email);
    4362 LWS_VISIBLE LWS_EXTERN void
    4363 lws_email_destroy(struct lws_email *email);
    4364 
    4365 #endif
    4366 
    4367 
    4368 #ifdef __cplusplus
    4369 }
    4370 #endif
    4371 
    4372 #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:4069
    +
    Definition: libwebsockets.h:4076
    size_t rx_buffer_size
    Definition: libwebsockets.h:1327
    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:773
    Definition: libwebsockets.h:901
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_daemonize(const char *_lock_path)
    -
    Definition: libwebsockets.h:1999
    -
    Definition: libwebsockets.h:3274
    -
    Definition: libwebsockets.h:4274
    +
    Definition: libwebsockets.h:2006
    +
    Definition: libwebsockets.h:3281
    +
    Definition: libwebsockets.h:4281
    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:238
    -
    unsigned int auth_mask
    Definition: libwebsockets.h:2034
    -
    Definition: libwebsockets.h:3297
    -
    void * data
    Definition: libwebsockets.h:4285
    -
    const char * uri_replace_from
    Definition: libwebsockets.h:2112
    -
    int(* write)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount, unsigned char *buf, unsigned long len)
    Definition: libwebsockets.h:4147
    +
    unsigned int auth_mask
    Definition: libwebsockets.h:2041
    +
    Definition: libwebsockets.h:3304
    +
    void * data
    Definition: libwebsockets.h:4292
    +
    const char * uri_replace_from
    Definition: libwebsockets.h:2119
    +
    int(* write)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount, unsigned char *buf, unsigned long len)
    Definition: libwebsockets.h:4154
    lws_callback_reasons
    Definition: libwebsockets.h:666
    LWS_VISIBLE LWS_EXTERN int lws_hdr_copy_fragment(struct lws *wsi, char *dest, int len, enum lws_token_indexes h, int frag_idx)
    @@ -104,79 +104,79 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
    LWS_VISIBLE LWS_EXTERN struct lws * lws_adopt_socket_vhost(struct lws_vhost *vh, lws_sockfd_type accept_fd)
    Definition: libwebsockets.h:750
    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:4305
    +
    int(* on_sent)(struct lws_email *email)
    Definition: libwebsockets.h:4312
    Definition: libwebsockets.h:1467
    -
    struct lws ** pwsi
    Definition: libwebsockets.h:2119
    +
    struct lws ** pwsi
    Definition: libwebsockets.h:2126
    Definition: libwebsockets.h:784
    -
    const char * path
    Definition: libwebsockets.h:2091
    +
    const char * path
    Definition: libwebsockets.h:2098
    LWS_VISIBLE LWS_EXTERN size_t lws_remaining_packet_payload(struct lws *wsi)
    Definition: libwebsockets.h:585
    Definition: libwebsockets.h:1423
    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:4321
    +
    time_t email_connect_started
    Definition: libwebsockets.h:4328
    lws_close_status
    Definition: libwebsockets.h:556
    LWS_VISIBLE LWS_EXTERN int lws_callback_all_protocol(struct lws_context *context, const struct lws_protocols *protocol, int reason)
    Definition: libwebsockets.h:596
    -
    int token_len
    Definition: libwebsockets.h:2599
    -
    const struct lws_http_mount * mounts
    Definition: libwebsockets.h:1708
    +
    int token_len
    Definition: libwebsockets.h:2606
    +
    const struct lws_http_mount * mounts
    Definition: libwebsockets.h:1715
    Definition: libwebsockets.h:925
    LWS_VISIBLE LWS_EXTERN struct lws_context *LWS_WARN_UNUSED_RESULT lws_get_context(const struct lws *wsi)
    -
    const char * value
    Definition: libwebsockets.h:1988
    -
    Definition: libwebsockets.h:2919
    -
    Definition: libwebsockets.h:4279
    +
    const char * value
    Definition: libwebsockets.h:1995
    +
    Definition: libwebsockets.h:2926
    +
    Definition: libwebsockets.h:4286
    const char * username
    Definition: libwebsockets.h:1498
    LWS_VISIBLE LWS_EXTERN struct lws * lws_client_connect_via_info(struct lws_client_connect_info *ccinfo)
    -
    const char * protocol
    Definition: libwebsockets.h:2018
    -
    struct lws ** stdwsi
    Definition: libwebsockets.h:4070
    +
    const char * protocol
    Definition: libwebsockets.h:2025
    +
    struct lws ** stdwsi
    Definition: libwebsockets.h:4077
    LWS_VISIBLE LWS_EXTERN int lws_json_dump_vhost(const struct lws_vhost *vh, char *buf, int len)
    Definition: libwebsockets.h:871
    LWS_VISIBLE LWS_EXTERN const char * lws_get_mimetype(const char *file, const struct lws_http_mount *m)
    Definition: libwebsockets.h:1469
    -
    int cache_max_age
    Definition: libwebsockets.h:2032
    -
    long ssl_options_clear
    Definition: libwebsockets.h:1726
    +
    int cache_max_age
    Definition: libwebsockets.h:2039
    +
    long ssl_options_clear
    Definition: libwebsockets.h:1733
    Definition: libwebsockets.h:764
    -
    Definition: libwebsockets.h:1594
    +
    Definition: libwebsockets.h:1601
    LWS_VISIBLE LWS_EXTERN void lws_context_destroy(struct lws_context *context)
    Definition: libwebsockets.h:612
    -
    char * start
    Definition: libwebsockets.h:2538
    +
    char * start
    Definition: libwebsockets.h:2545
    LWS_VISIBLE LWS_EXTERN void lws_set_allocator(void *(*realloc)(void *ptr, size_t size))
    lws_callback_function * callback
    Definition: libwebsockets.h:1318
    -
    Definition: libwebsockets.h:3264
    +
    Definition: libwebsockets.h:3271
    LWS_VISIBLE LWS_EXTERN void lws_context_deprecate(struct lws_context *context, lws_reload_func cb)
    LWS_VISIBLE LWS_EXTERN int lws_get_socket_fd(struct lws *wsi)
    Definition: libwebsockets.h:962
    -
    const char * protocol
    Definition: libwebsockets.h:2097
    +
    const char * protocol
    Definition: libwebsockets.h:2104
    Definition: libwebsockets.h:951
    -
    unsigned int pt_serv_buf_size
    Definition: libwebsockets.h:1713
    +
    unsigned int pt_serv_buf_size
    Definition: libwebsockets.h:1720
    LWS_VISIBLE LWS_EXTERN struct lws * lws_adopt_socket(struct lws_context *context, lws_sockfd_type accept_fd)
    -
    int len
    Definition: libwebsockets.h:2530
    -
    int ka_time
    Definition: libwebsockets.h:1649
    +
    int len
    Definition: libwebsockets.h:2537
    +
    int ka_time
    Definition: libwebsockets.h:1656
    Definition: libwebsockets.h:1543
    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:1728
    +
    unsigned short ws_ping_pong_interval
    Definition: libwebsockets.h:1735
    int count_extensions
    Definition: libwebsockets.h:1428
    -
    Definition: libwebsockets.h:3268
    -
    int port
    Definition: libwebsockets.h:2087
    -
    struct lws_context * context
    Definition: libwebsockets.h:2083
    +
    Definition: libwebsockets.h:3275
    +
    int port
    Definition: libwebsockets.h:2094
    +
    struct lws_context * context
    Definition: libwebsockets.h:2090
    Definition: libwebsockets.h:1475
    -
    int ietf_version_or_minus_one
    Definition: libwebsockets.h:2099
    +
    int ietf_version_or_minus_one
    Definition: libwebsockets.h:2106
    LWS_VISIBLE LWS_EXTERN int lws_callback_all_protocol_vhost(struct lws_vhost *vh, const struct lws_protocols *protocol, int reason)
    -
    Definition: libwebsockets.h:4272
    -
    Definition: libwebsockets.h:1984
    +
    Definition: libwebsockets.h:4279
    +
    Definition: libwebsockets.h:1991
    LWS_VISIBLE LWS_EXTERN int lws_callback_on_writable(struct lws *wsi)
    -
    const char *const * vars
    Definition: libwebsockets.h:2542
    +
    const char *const * vars
    Definition: libwebsockets.h:2549
    LWS_VISIBLE LWS_EXTERN SSL * lws_get_ssl(struct lws *wsi)
    Definition: libwebsockets.h:564
    -
    Definition: libwebsockets.h:2082
    +
    Definition: libwebsockets.h:2089
    Definition: libwebsockets.h:1573
    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:1218
    int len
    Definition: libwebsockets.h:1154
    -
    Definition: libwebsockets.h:2009
    -
    const char * def
    Definition: libwebsockets.h:2016
    +
    Definition: libwebsockets.h:2016
    +
    const char * def
    Definition: libwebsockets.h:2023
    Definition: libwebsockets.h:725
    Definition: libwebsockets.h:1555
    lws_context_options
    Definition: libwebsockets.h:1526
    @@ -185,114 +185,114 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
    Definition: libwebsockets.h:1561
    Definition: libwebsockets.h:891
    const char * option_name
    Definition: libwebsockets.h:1151
    -
    Definition: libwebsockets.h:1997
    +
    Definition: libwebsockets.h:2004
    lws_sockfd_type fd
    Definition: libwebsockets.h:534
    LWS_VISIBLE LWS_EXTERN int lws_json_dump_context(const struct lws_context *context, char *buf, int len, int hide_vhosts)
    -
    const char * ssl_private_key_password
    Definition: libwebsockets.h:1617
    +
    const char * ssl_private_key_password
    Definition: libwebsockets.h:1624
    short events
    Definition: libwebsockets.h:436
    Definition: libwebsockets.h:1436
    const struct lws_extension * extensions
    Definition: libwebsockets.h:1427
    -
    const struct lws_http_mount * mount_next
    Definition: libwebsockets.h:2010
    +
    const struct lws_http_mount * mount_next
    Definition: libwebsockets.h:2017
    LWS_VISIBLE LWS_EXTERN void lws_set_timeout(struct lws *wsi, enum pending_timeout reason, int secs)
    -
    void * userdata
    Definition: libwebsockets.h:2101
    +
    void * userdata
    Definition: libwebsockets.h:2108
    Definition: libwebsockets.h:722
    Definition: libwebsockets.h:909
    LWS_VISIBLE LWS_EXTERN int lws_service_tsi(struct lws_context *context, int timeout_ms, int tsi)
    -
    unsigned char * data
    Definition: libwebsockets.h:4072
    -
    const struct lws_protocol_vhost_options * extra_mimetypes
    Definition: libwebsockets.h:2025
    +
    unsigned char * data
    Definition: libwebsockets.h:4079
    +
    const struct lws_protocol_vhost_options * extra_mimetypes
    Definition: libwebsockets.h:2032
    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:715
    LWS_VISIBLE LWS_EXTERN const char * lws_urlencode(char *escaped, const char *string, int len)
    Definition: libwebsockets.h:796
    -
    uv_loop_t * loop
    Definition: libwebsockets.h:4287
    +
    uv_loop_t * loop
    Definition: libwebsockets.h:4294
    Definition: libwebsockets.h:894
    Definition: libwebsockets.h:72
    -
    Definition: libwebsockets.h:3300
    -
    int pos
    Definition: libwebsockets.h:2540
    +
    Definition: libwebsockets.h:3307
    +
    int pos
    Definition: libwebsockets.h:2547
    struct lws_plugin * list
    Definition: libwebsockets.h:1437
    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:1669
    +
    short max_http_header_data
    Definition: libwebsockets.h:1676
    LWS_VISIBLE LWS_EXTERN int lws_spa_process(struct lws_spa *spa, const char *in, int len)
    -
    void * provided_client_ssl_ctx
    Definition: libwebsockets.h:1666
    +
    void * provided_client_ssl_ctx
    Definition: libwebsockets.h:1673
    LWS_VISIBLE LWS_EXTERN struct lws_vhost * lws_get_vhost(struct lws *wsi)
    Definition: libwebsockets.h:44
    LWS_VISIBLE LWS_EXTERN void lwsl_emit_syslog(int level, const char *line)
    const struct lws_protocols * protocols
    Definition: libwebsockets.h:1425
    Definition: libwebsockets.h:1130
    -
    int ka_probes
    Definition: libwebsockets.h:1652
    +
    int ka_probes
    Definition: libwebsockets.h:1659
    void onError(Socket *s, socket_error_t err)
    -
    const char * origin
    Definition: libwebsockets.h:2095
    +
    const char * origin
    Definition: libwebsockets.h:2102
    SHORT revents
    Definition: libwebsockets.h:422
    -
    const char * method
    Definition: libwebsockets.h:2105
    +
    const char * method
    Definition: libwebsockets.h:2112
    LWS_VISIBLE LWS_EXTERN const char * lws_spa_get_string(struct lws_spa *spa, int n)
    Definition: libwebsockets.h:1224
    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:931
    -
    const struct lws_extension * client_exts
    Definition: libwebsockets.h:2103
    -
    unsigned char origin_protocol
    Definition: libwebsockets.h:2041
    -
    const char * log_filepath
    Definition: libwebsockets.h:1705
    +
    const struct lws_extension * client_exts
    Definition: libwebsockets.h:2110
    +
    unsigned char origin_protocol
    Definition: libwebsockets.h:2048
    +
    const char * log_filepath
    Definition: libwebsockets.h:1712
    Definition: libwebsockets.h:771
    -
    unsigned int max_content_size
    Definition: libwebsockets.h:4295
    +
    unsigned int max_content_size
    Definition: libwebsockets.h:4302
    int option_index
    Definition: libwebsockets.h:1152
    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:767
    -
    const char * uri_replace_to
    Definition: libwebsockets.h:2115
    -
    struct lws * parent_wsi
    Definition: libwebsockets.h:2108
    +
    const char * uri_replace_to
    Definition: libwebsockets.h:2122
    +
    struct lws * parent_wsi
    Definition: libwebsockets.h:2115
    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:4318
    +
    enum lwsgs_smtp_states estate
    Definition: libwebsockets.h:4325
    LWS_VISIBLE LWS_EXTERN int lws_spa_finalize(struct lws_spa *spa)
    Definition: libwebsockets.h:667
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_get_count_threads(struct lws_context *context)
    -
    const char *const * plugin_dirs
    Definition: libwebsockets.h:1696
    +
    const char *const * plugin_dirs
    Definition: libwebsockets.h:1703
    char name[64]
    Definition: libwebsockets.h:1443
    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:4322
    +
    char email_buf[256]
    Definition: libwebsockets.h:4329
    LWS_VISIBLE LWS_EXTERN int lws_is_ssl(struct lws *wsi)
    Definition: libwebsockets.h:1532
    -
    int(* close)(struct lws *wsi, lws_filefd_type fd)
    Definition: libwebsockets.h:4139
    +
    int(* close)(struct lws *wsi, lws_filefd_type fd)
    Definition: libwebsockets.h:4146
    uv_lib_t lib
    Definition: libwebsockets.h:1439
    x509_crt certificate
    Definition: libwebsockets.h:240
    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:4273
    +
    Definition: libwebsockets.h:4280
    LWS_VISIBLE LWS_EXTERN int lws_is_cgi(struct lws *wsi)
    -
    int ssl_connection
    Definition: libwebsockets.h:2089
    +
    int ssl_connection
    Definition: libwebsockets.h:2096
    Definition: libwebsockets.h:1491
    -
    SSL_CTX * provided_client_ssl_ctx
    Definition: libwebsockets.h:1660
    +
    SSL_CTX * provided_client_ssl_ctx
    Definition: libwebsockets.h:1667
    LWS_VISIBLE LWS_EXTERN int lws_rx_flow_control(struct lws *wsi, int enable)
    -
    Definition: libwebsockets.h:2528
    +
    Definition: libwebsockets.h:2535
    LWS_VISIBLE LWS_EXTERN struct lws_plat_file_ops *LWS_WARN_UNUSED_RESULT lws_get_fops(struct lws_context *context)
    Definition: libwebsockets.h:533
    -
    const struct lws_protocol_vhost_options * cgienv
    Definition: libwebsockets.h:2021
    -
    const char * name
    Definition: libwebsockets.h:1987
    -
    unsigned char mountpoint_len
    Definition: libwebsockets.h:2042
    -
    Definition: libwebsockets.h:3271
    +
    const struct lws_protocol_vhost_options * cgienv
    Definition: libwebsockets.h:2028
    +
    const char * name
    Definition: libwebsockets.h:1994
    +
    unsigned char mountpoint_len
    Definition: libwebsockets.h:2049
    +
    Definition: libwebsockets.h:3278
    Definition: libwebsockets.h:1550
    lws_sockfd_type fd
    Definition: libwebsockets.h:420
    -
    Definition: libwebsockets.h:1998
    +
    Definition: libwebsockets.h:2005
    LWS_VISIBLE LWS_EXTERN int lws_is_final_fragment(struct lws *wsi)
    -
    const struct lws_extension * extensions
    Definition: libwebsockets.h:1611
    +
    const struct lws_extension * extensions
    Definition: libwebsockets.h:1618
    Definition: libwebsockets.h:1534
    LWS_VISIBLE LWS_EXTERN void * lws_protocol_vh_priv_zalloc(struct lws_vhost *vhost, const struct lws_protocols *prot, int size)
    Definition: libwebsockets.h:1539
    lws_ext_options_types
    Definition: libwebsockets.h:1128
    -
    const struct lws_protocols * protocols
    Definition: libwebsockets.h:1607
    +
    const struct lws_protocols * protocols
    Definition: libwebsockets.h:1614
    LWS_VISIBLE LWS_EXTERN int lwsws_get_config_globals(struct lws_context_creation_info *info, const char *d, char **config_strings, int *len)
    LWS_VISIBLE LWS_EXTERN void * lws_wsi_user(struct lws *wsi)
    LWS_VISIBLE LWS_EXTERN unsigned long lws_now_secs(void)
    LWS_VISIBLE LWS_EXTERN const char * lws_get_peer_simple(struct lws *wsi, char *name, int namelen)
    const char * start
    Definition: libwebsockets.h:1153
    -
    const char * ssl_cipher_list
    Definition: libwebsockets.h:1631
    +
    const char * ssl_cipher_list
    Definition: libwebsockets.h:1638
    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:2012
    -
    const char * http_proxy_address
    Definition: libwebsockets.h:1635
    +
    const char * mountpoint
    Definition: libwebsockets.h:2019
    +
    const char * http_proxy_address
    Definition: libwebsockets.h:1642
    rsa_context key
    Definition: libwebsockets.h:241
    -
    const char * ssl_cert_filepath
    Definition: libwebsockets.h:1619
    -
    const char * ecdh_curve
    Definition: libwebsockets.h:1690
    -
    int cgi_timeout
    Definition: libwebsockets.h:2030
    -
    Definition: libwebsockets.h:2000
    +
    const char * ssl_cert_filepath
    Definition: libwebsockets.h:1626
    +
    const char * ecdh_curve
    Definition: libwebsockets.h:1697
    +
    int cgi_timeout
    Definition: libwebsockets.h:2037
    +
    Definition: libwebsockets.h:2007
    Definition: libwebsockets.h:1476
    Definition: libwebsockets.h:434
    Definition: libwebsockets.h:590
    @@ -309,16 +309,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:1007
    Definition: libwebsockets.h:1571
    -
    uv_timer_t timeout_email
    Definition: libwebsockets.h:4317
    +
    uv_timer_t timeout_email
    Definition: libwebsockets.h:4324
    Definition: libwebsockets.h:1541
    -
    short max_http_header_pool
    Definition: libwebsockets.h:1672
    +
    short max_http_header_pool
    Definition: libwebsockets.h:1679
    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:2529
    +
    char * p
    Definition: libwebsockets.h:2536
    x509_crt ca
    Definition: libwebsockets.h:239
    size_t per_session_data_size
    Definition: libwebsockets.h:1322
    Definition: libwebsockets.h:574
    -
    const struct lws_protocol_vhost_options * reject_service_keywords
    Definition: libwebsockets.h:1744
    -
    lwsgs_smtp_states
    Definition: libwebsockets.h:4271
    +
    const struct lws_protocol_vhost_options * reject_service_keywords
    Definition: libwebsockets.h:1751
    +
    lwsgs_smtp_states
    Definition: libwebsockets.h:4278
    Definition: libwebsockets.h:1553
    Definition: libwebsockets.h:847
    LWS_VISIBLE LWS_EXTERN int lws_snprintf(char *str, size_t size, const char *format,...)
    @@ -327,79 +327,79 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
    Definition: libwebsockets.h:1314
    Definition: libwebsockets.h:579
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_http_redirect(struct lws *wsi, int code, const unsigned char *loc, int len, unsigned char **p, unsigned char *end)
    -
    unsigned int count_threads
    Definition: libwebsockets.h:1679
    +
    unsigned int count_threads
    Definition: libwebsockets.h:1686
    const char * email
    Definition: libwebsockets.h:1499
    LWS_VISIBLE LWS_EXTERN int lws_get_random(struct lws_context *context, void *buf, int len)
    Definition: libwebsockets.h:561
    -
    uv_connect_t email_connect_req
    Definition: libwebsockets.h:4319
    -
    const char * server_string
    Definition: libwebsockets.h:1710
    +
    uv_connect_t email_connect_req
    Definition: libwebsockets.h:4326
    +
    const char * server_string
    Definition: libwebsockets.h:1717
    Definition: libwebsockets.h:1564
    SHORT events
    Definition: libwebsockets.h:421
    Definition: libwebsockets.h:738
    Definition: libwebsockets.h:1548
    -
    const char * vhost_name
    Definition: libwebsockets.h:1692
    -
    Definition: libwebsockets.h:2001
    +
    const char * vhost_name
    Definition: libwebsockets.h:1699
    +
    Definition: libwebsockets.h:2008
    LWS_VISIBLE LWS_EXTERN const struct lws_protocols * lws_get_protocol(struct lws *wsi)
    Definition: libwebsockets.h:1474
    Definition: libwebsockets.h:1496
    -
    unsigned int fd_limit_per_thread
    Definition: libwebsockets.h:1681
    +
    unsigned int fd_limit_per_thread
    Definition: libwebsockets.h:1688
    LWS_VISIBLE LWS_EXTERN int lws_cgi_write_split_stdout_headers(struct lws *wsi)
    lws_gs_event
    Definition: libwebsockets.h:1490
    LWS_VISIBLE LWS_EXTERN int lws_finalize_startup(struct lws_context *context)
    -
    int ka_interval
    Definition: libwebsockets.h:1656
    +
    int ka_interval
    Definition: libwebsockets.h:1663
    Definition: libwebsockets.h:1473
    -
    int uid
    Definition: libwebsockets.h:1642
    -
    Definition: libwebsockets.h:2921
    +
    int uid
    Definition: libwebsockets.h:1649
    +
    Definition: libwebsockets.h:2928
    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:1315
    LWS_VISIBLE LWS_EXTERN int lws_init_vhost_client_ssl(const struct lws_context_creation_info *info, struct lws_vhost *vhost)
    -
    Definition: libwebsockets.h:4277
    -
    unsigned int http_proxy_port
    Definition: libwebsockets.h:1638
    +
    Definition: libwebsockets.h:4284
    +
    unsigned int http_proxy_port
    Definition: libwebsockets.h:1645
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_partial_buffered(struct lws *wsi)
    -
    unsigned int timeout_secs
    Definition: libwebsockets.h:1685
    -
    int port
    Definition: libwebsockets.h:1595
    +
    unsigned int timeout_secs
    Definition: libwebsockets.h:1692
    +
    int port
    Definition: libwebsockets.h:1602
    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:1644
    +
    unsigned int options
    Definition: libwebsockets.h:1651
    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:1986
    +
    const struct lws_protocol_vhost_options * options
    Definition: libwebsockets.h:1993
    int prev_events
    Definition: libwebsockets.h:536
    -
    int keepalive_timeout
    Definition: libwebsockets.h:1702
    +
    int keepalive_timeout
    Definition: libwebsockets.h:1709
    Definition: libwebsockets.h:1480
    Definition: libwebsockets.h:1141
    -
    const struct lws_protocol_vhost_options * headers
    Definition: libwebsockets.h:1740
    -
    Definition: libwebsockets.h:2718
    +
    const struct lws_protocol_vhost_options * headers
    Definition: libwebsockets.h:1747
    +
    Definition: libwebsockets.h:2725
    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:1699
    -
    const char * basic_auth_login_file
    Definition: libwebsockets.h:2044
    -
    const char * host
    Definition: libwebsockets.h:2093
    +
    const struct lws_protocol_vhost_options * pvo
    Definition: libwebsockets.h:1706
    +
    const char * basic_auth_login_file
    Definition: libwebsockets.h:2051
    +
    const char * host
    Definition: libwebsockets.h:2100
    Definition: libwebsockets.h:1150
    Definition: libwebsockets.h:600
    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:4074
    +
    int len
    Definition: libwebsockets.h:4081
    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:1600
    -
    Definition: libwebsockets.h:4133
    +
    const char * iface
    Definition: libwebsockets.h:1607
    +
    Definition: libwebsockets.h:4140
    LWS_VISIBLE LWS_EXTERN void lwsl_hexdump(void *buf, size_t len)
    Definition: libwebsockets.h:1012
    -
    lws_spa_fileupload_states
    Definition: libwebsockets.h:2916
    +
    lws_spa_fileupload_states
    Definition: libwebsockets.h:2923
    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:558
    Definition: libwebsockets.h:567
    LWS_VISIBLE LWS_EXTERN const char * lws_sql_purify(char *escaped, const char *string, int len)
    -
    uv_tcp_t email_client
    Definition: libwebsockets.h:4320
    +
    uv_tcp_t email_client
    Definition: libwebsockets.h:4327
    Definition: libwebsockets.h:419
    Definition: libwebsockets.h:671
    -
    lws_filefd_type(* open)(struct lws *wsi, const char *filename, unsigned long *filelen, int flags)
    Definition: libwebsockets.h:4134
    -
    lws_write_protocol
    Definition: libwebsockets.h:3263
    +
    lws_filefd_type(* open)(struct lws *wsi, const char *filename, unsigned long *filelen, int flags)
    Definition: libwebsockets.h:4141
    +
    lws_write_protocol
    Definition: libwebsockets.h:3270
    const char * client_offer
    Definition: libwebsockets.h:1227
    -
    int(* read)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount, unsigned char *buf, unsigned long len)
    Definition: libwebsockets.h:4144
    +
    int(* read)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount, unsigned char *buf, unsigned long len)
    Definition: libwebsockets.h:4151
    LWS_VISIBLE LWS_EXTERN void lws_cancel_service(struct lws_context *context)
    -
    Definition: libwebsockets.h:2917
    +
    Definition: libwebsockets.h:2924
    Definition: libwebsockets.h:572
    -
    const char * origin
    Definition: libwebsockets.h:2014
    +
    const char * origin
    Definition: libwebsockets.h:2021
    const char * name
    Definition: libwebsockets.h:1142
    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)
    @@ -408,75 +408,76 @@ $(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:748
    const char * name
    Definition: libwebsockets.h:1225
    -
    Definition: libwebsockets.h:4276
    +
    Definition: libwebsockets.h:4283
    short revents
    Definition: libwebsockets.h:437
    lws_extension_callback_function * callback
    Definition: libwebsockets.h:1226
    -
    long ssl_options_set
    Definition: libwebsockets.h:1724
    +
    long ssl_options_set
    Definition: libwebsockets.h:1731
    Definition: libwebsockets.h:1054
    LWS_VISIBLE LWS_EXTERN const struct lws_protocols * lws_protocol_get(struct lws *wsi) LWS_WARN_DEPRECATED
    unsigned int mask
    Definition: libwebsockets.h:1484
    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:1995
    +
    lws_mount_protocols
    Definition: libwebsockets.h:2002
    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:435
    -
    unsigned int max_http_header_data2
    Definition: libwebsockets.h:1719
    -
    Definition: libwebsockets.h:1996
    +
    unsigned int max_http_header_data2
    Definition: libwebsockets.h:1726
    +
    Definition: libwebsockets.h:2003
    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:2027
    -
    void * external_baggage_free_on_destroy
    Definition: libwebsockets.h:1751
    +
    const struct lws_protocol_vhost_options * interpret
    Definition: libwebsockets.h:2034
    +
    void * external_baggage_free_on_destroy
    Definition: libwebsockets.h:1758
    LWS_VISIBLE LWS_EXTERN int lws_service(struct lws_context *context, int timeout_ms)
    Definition: libwebsockets.h:1546
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_http_transaction_completed(struct lws *wsi)
    -
    int count_vars
    Definition: libwebsockets.h:2543
    +
    int count_vars
    Definition: libwebsockets.h:2550
    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:2597
    +
    Definition: libwebsockets.h:2604
    LWS_VISIBLE LWS_EXTERN struct lws_context * lws_create_context(struct lws_context_creation_info *info)
    Definition: libwebsockets.h:727
    -
    void * data
    Definition: libwebsockets.h:2541
    -
    char * content
    Definition: libwebsockets.h:4323
    +
    void * data
    Definition: libwebsockets.h:2548
    +
    char * content
    Definition: libwebsockets.h:4330
    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:1614
    -
    Definition: libwebsockets.h:4284
    -
    const char * address
    Definition: libwebsockets.h:2085
    -
    unsigned long(* seek_cur)(struct lws *wsi, lws_filefd_type fd, long offset_from_cur_pos)
    Definition: libwebsockets.h:4141
    +
    const struct lws_token_limits * token_limits
    Definition: libwebsockets.h:1621
    +
    Definition: libwebsockets.h:4291
    +
    const char * address
    Definition: libwebsockets.h:2092
    +
    unsigned long(* seek_cur)(struct lws *wsi, lws_filefd_type fd, long offset_from_cur_pos)
    Definition: libwebsockets.h:4148
    void * user
    Definition: libwebsockets.h:1343
    int events
    Definition: libwebsockets.h:535
    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:4310
    -
    Definition: libwebsockets.h:2002
    -
    void * user
    Definition: libwebsockets.h:1646
    -
    Definition: libwebsockets.h:4280
    -
    Definition: libwebsockets.h:3286
    -
    char * token
    Definition: libwebsockets.h:2598
    +
    int(* on_get_body)(struct lws_email *email, char *buf, int len)
    Definition: libwebsockets.h:4317
    +
    Definition: libwebsockets.h:2009
    +
    void * user
    Definition: libwebsockets.h:1653
    +
    Definition: libwebsockets.h:4287
    +
    Definition: libwebsockets.h:3293
    +
    char * token
    Definition: libwebsockets.h:2605
    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:1426
    void * l
    Definition: libwebsockets.h:1441
    -
    const char * ssl_private_key_filepath
    Definition: libwebsockets.h:1623
    -
    int max_len
    Definition: libwebsockets.h:2531
    +
    const char * ssl_private_key_filepath
    Definition: libwebsockets.h:1630
    +
    Definition: libwebsockets.h:1579
    +
    int max_len
    Definition: libwebsockets.h:2538
    Definition: libwebsockets.h:729
    -
    const struct lws_protocol_vhost_options * next
    Definition: libwebsockets.h:1985
    +
    const struct lws_protocol_vhost_options * next
    Definition: libwebsockets.h:1992
    Definition: libwebsockets.h:740
    LWS_VISIBLE LWS_EXTERN void lws_rx_flow_allow_all_protocol(const struct lws_context *context, const struct lws_protocols *protocol)
    -
    Definition: libwebsockets.h:2537
    +
    Definition: libwebsockets.h:2544
    LWS_VISIBLE LWS_EXTERN const char *LWS_WARN_UNUSED_RESULT lws_canonical_hostname(struct lws_context *context)
    Definition: libwebsockets.h:939
    -
    const char * ssl_ca_filepath
    Definition: libwebsockets.h:1629
    -
    lws_client_connect_ssl_connection_flags
    Definition: libwebsockets.h:2072
    -
    int gid
    Definition: libwebsockets.h:1640
    -
    struct lws_vhost * vhost
    Definition: libwebsockets.h:2117
    +
    const char * ssl_ca_filepath
    Definition: libwebsockets.h:1636
    +
    lws_client_connect_ssl_connection_flags
    Definition: libwebsockets.h:2079
    +
    int gid
    Definition: libwebsockets.h:1647
    +
    struct lws_vhost * vhost
    Definition: libwebsockets.h:2124
    int lws_callback_function(struct lws *wsi, enum lws_callback_reasons reason, void *user, void *in, size_t len)
    Definition: libwebsockets.h:1076
    LWS_VISIBLE LWS_EXTERN void lws_cancel_service_pt(struct lws *wsi)
    Definition: libwebsockets.h:1566
    Definition: libwebsockets.h:608
    -
    Definition: libwebsockets.h:4275
    +
    Definition: libwebsockets.h:4282
    unsigned int api_magic
    Definition: libwebsockets.h:1424
    Definition: libwebsockets.h:1569
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_send_pipe_choked(struct lws *wsi)
    -
    Definition: libwebsockets.h:4278
    -
    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:2938
    +
    Definition: libwebsockets.h:4285
    +
    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:2945
    diff --git a/doc/html/navtreedata.js b/doc/html/navtreedata.js index c6c1a2c1..bc3a3c51 100644 --- a/doc/html/navtreedata.js +++ b/doc/html/navtreedata.js @@ -136,9 +136,9 @@ var NAVTREEINDEX = [ "annotated.html", "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a4933347a821e73c3f1e13fb6bfc7ad93", -"group__service.html#ga29c246707997ab7a466aa709aecd2d7b", -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985af90cb98d983ad3d4c79df9b6f3d4a4d2", -"structlws__ext__options.html#a1769e4a9805bbdda227821e9578ddc7e" +"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917", +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad2b477a91c8445bf34ecd43977f9b390", +"structlws__ext__option__arg.html#af57fffcfa253dfa8d98681ac1fb1785f" ]; var SYNCONMSG = 'click to disable panel synchronisation'; diff --git a/doc/html/navtreeindex0.js b/doc/html/navtreeindex0.js index 663be16e..5451e398 100644 --- a/doc/html/navtreeindex0.js +++ b/doc/html/navtreeindex0.js @@ -181,10 +181,10 @@ var NAVTREEINDEX0 = "group__callback-when-writeable.html#gaa709e02a10558753c851e58f1e2c16ba":[11,0,0,0,107], "group__callback-when-writeable.html#gaa709e02a10558753c851e58f1e2c16ba":[9,1,7], "group__callback-when-writeable.html#gaad3d524a84d2be08ac85153bc158504b":[11,0,0,0,58], -"group__callback-when-writeable.html#gabbe4655c7eeb3eb1671b2323ec6b3107":[9,1,3], "group__callback-when-writeable.html#gabbe4655c7eeb3eb1671b2323ec6b3107":[11,0,0,0,60], -"group__callback-when-writeable.html#gac4643fe16b0940ae5b68b4ee6195cbde":[9,1,6], +"group__callback-when-writeable.html#gabbe4655c7eeb3eb1671b2323ec6b3107":[9,1,3], "group__callback-when-writeable.html#gac4643fe16b0940ae5b68b4ee6195cbde":[11,0,0,0,103], +"group__callback-when-writeable.html#gac4643fe16b0940ae5b68b4ee6195cbde":[9,1,6], "group__callback-when-writeable.html#gacf04bbe089f47c971c6408c5efe2ac70":[9,1,0], "group__callback-when-writeable.html#gacf04bbe089f47c971c6408c5efe2ac70":[11,0,0,0,56], "group__cgi.html":[9,19], @@ -212,8 +212,8 @@ var NAVTREEINDEX0 = "group__context-and-vhost.html#ga06e77ce2916f8bc9826ef8d9d68e3932":[9,4,9], "group__context-and-vhost.html#ga0c54c667ccd9b8b3dddcd123ca72f87c":[9,4,8], "group__context-and-vhost.html#ga0c54c667ccd9b8b3dddcd123ca72f87c":[11,0,0,0,81], -"group__context-and-vhost.html#ga1863f0a15ab9da0f07be7bd66230d232":[11,0,0,0,75], "group__context-and-vhost.html#ga1863f0a15ab9da0f07be7bd66230d232":[9,4,4], +"group__context-and-vhost.html#ga1863f0a15ab9da0f07be7bd66230d232":[11,0,0,0,75], "group__context-and-vhost.html#ga1dce5453d72a2037051aba5410e18135":[9,4,10], "group__context-and-vhost.html#ga1dce5453d72a2037051aba5410e18135":[11,0,0,0,124], "group__context-and-vhost.html#ga256a49a07d2dd5062d6cf7bdc3668096":[11,0,0,0,15], diff --git a/doc/html/navtreeindex1.js b/doc/html/navtreeindex1.js index 2915a903..c2f6f4dc 100644 --- a/doc/html/navtreeindex1.js +++ b/doc/html/navtreeindex1.js @@ -11,6 +11,8 @@ var NAVTREEINDEX1 = "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a9637e9001d8c8b2521086bcafbd8a941":[9,4,3,13], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aa0158b4e85420811e6b0f1378c6ded0f":[11,0,0,0,27,7], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aa0158b4e85420811e6b0f1378c6ded0f":[9,4,3,7], +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aa8d288cee6d03935ea6993546f2f2bcf":[11,0,0,0,27,18], +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aa8d288cee6d03935ea6993546f2f2bcf":[9,4,3,18], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5ac56a8a6590e74a8016d0fae09fb404fc":[11,0,0,0,27,6], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5ac56a8a6590e74a8016d0fae09fb404fc":[9,4,3,6], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5ac962efd35abf6c402f9fb14aa14f5016":[11,0,0,0,27,14], @@ -193,8 +195,8 @@ var NAVTREEINDEX1 = "group__misc.html#ga0e705d498e8c8500649a26ba30a1e106":[11,0,0,0,136], "group__misc.html#ga1ec0d9faac5d3a5824d765c287c043aa":[11,0,0,0,131], "group__misc.html#ga1ec0d9faac5d3a5824d765c287c043aa":[9,8,8], -"group__misc.html#ga33bf2635033710b25f931b57ed663e1e":[11,0,0,0,130], "group__misc.html#ga33bf2635033710b25f931b57ed663e1e":[9,8,7], +"group__misc.html#ga33bf2635033710b25f931b57ed663e1e":[11,0,0,0,130], "group__misc.html#ga58f906c6be0ca80efd813f694569dd4a":[11,0,0,0,105], "group__misc.html#ga58f906c6be0ca80efd813f694569dd4a":[9,8,6], "group__misc.html#ga629f48268fd1856b54b11172991b97d9":[9,8,3], @@ -242,12 +244,10 @@ var NAVTREEINDEX1 = "group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da80e8f169fda236c56bfb795ed62903db":[9,13,0,0], "group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da80e8f169fda236c56bfb795ed62903db":[11,0,0,0,36,0], "group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dab7e7a62cf6f456c09c21dff24dad9039":[11,0,0,0,36,5], -"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dabb6705e1d1327cdda5025be28f07712e":[11,0,0,0,36,3], "group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dabb6705e1d1327cdda5025be28f07712e":[9,13,0,3], +"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dabb6705e1d1327cdda5025be28f07712e":[11,0,0,0,36,3], "group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dae7d8a025a65524652fe9e24c2654c935":[11,0,0,0,36,6], "group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193daf6486c0dba50c44198100717721d9ab2":[9,13,0,1], "group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193daf6486c0dba50c44198100717721d9ab2":[11,0,0,0,36,1], -"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917":[11,0,0,0,36,7], -"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917":[9,13,0,4], -"group__service.html":[9,0] +"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917":[9,13,0,4] }; diff --git a/doc/html/navtreeindex2.js b/doc/html/navtreeindex2.js index 7bde0bcd..b3528152 100644 --- a/doc/html/navtreeindex2.js +++ b/doc/html/navtreeindex2.js @@ -1,5 +1,7 @@ var NAVTREEINDEX2 = { +"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917":[11,0,0,0,36,7], +"group__service.html":[9,0], "group__service.html#ga29c246707997ab7a466aa709aecd2d7b":[9,0,1], "group__service.html#ga29c246707997ab7a466aa709aecd2d7b":[11,0,0,0,64], "group__service.html#ga4fd9d714434ca499e2b3f7dbba86f241":[11,0,0,0,145], @@ -8,8 +10,8 @@ var NAVTREEINDEX2 = "group__service.html#ga53e3d0801dfda7960a7249dd559e68a2":[11,0,0,0,63], "group__service.html#ga9b3cc4473fd8848e5bbee7f310712939":[11,0,0,0,148], "group__service.html#ga9b3cc4473fd8848e5bbee7f310712939":[9,0,6], -"group__service.html#gad82efa5466d14a9f05aa06416375b28d":[11,0,0,0,146], "group__service.html#gad82efa5466d14a9f05aa06416375b28d":[9,0,4], +"group__service.html#gad82efa5466d14a9f05aa06416375b28d":[11,0,0,0,146], "group__service.html#gaebf426eda371ba23642fc11d8e0ace6b":[11,0,0,0,147], "group__service.html#gaebf426eda371ba23642fc11d8e0ace6b":[9,0,5], "group__service.html#gaf95bd0c663d6516a0c80047d9b1167a8":[11,0,0,0,144], @@ -26,20 +28,20 @@ var NAVTREEINDEX2 = "group__smtp.html#ga116be79bf44f9dc2a97f46e051fe4dc0":[11,0,0,0,38], "group__smtp.html#ga25298a5afc1074e13b2d5711a86432b2":[9,14,3], "group__smtp.html#ga25298a5afc1074e13b2d5711a86432b2":[11,0,0,0,84], -"group__smtp.html#ga5e535e346d92a9daf00be33abf79d4eb":[11,0,0,0,83], "group__smtp.html#ga5e535e346d92a9daf00be33abf79d4eb":[9,14,2], -"group__smtp.html#ga77fc9b56a1bb39484844981ec375fc29":[9,14,4], +"group__smtp.html#ga5e535e346d92a9daf00be33abf79d4eb":[11,0,0,0,83], "group__smtp.html#ga77fc9b56a1bb39484844981ec375fc29":[11,0,0,0,85], +"group__smtp.html#ga77fc9b56a1bb39484844981ec375fc29":[9,14,4], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad":[9,14,1,3], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad":[11,0,0,0,38,3], -"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c":[11,0,0,0,38,0], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c":[9,14,1,0], +"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c":[11,0,0,0,38,0], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5":[9,14,1,8], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5":[11,0,0,0,38,8], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69":[9,14,1,7], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69":[11,0,0,0,38,7], -"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14":[11,0,0,0,38,6], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14":[9,14,1,6], +"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14":[11,0,0,0,38,6], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab":[9,14,1,4], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab":[11,0,0,0,38,4], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83":[9,14,1,5], @@ -49,14 +51,14 @@ var NAVTREEINDEX2 = "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933":[9,14,1,1], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933":[11,0,0,0,38,1], "group__sock-adopt.html":[9,15], -"group__sock-adopt.html#ga18747e81ff49df2076e7cd4f131f967c":[11,0,0,0,52], "group__sock-adopt.html#ga18747e81ff49df2076e7cd4f131f967c":[9,15,2], -"group__sock-adopt.html#ga5ed5fd251ac0ed46798af341c33bf067":[9,15,3], +"group__sock-adopt.html#ga18747e81ff49df2076e7cd4f131f967c":[11,0,0,0,52], "group__sock-adopt.html#ga5ed5fd251ac0ed46798af341c33bf067":[11,0,0,0,53], +"group__sock-adopt.html#ga5ed5fd251ac0ed46798af341c33bf067":[9,15,3], "group__sock-adopt.html#gab2d045df0f81afe00891aaed312d552b":[9,15,1], "group__sock-adopt.html#gab2d045df0f81afe00891aaed312d552b":[11,0,0,0,51], -"group__sock-adopt.html#gabe71b7462afb21c767bdc67334f305af":[9,15,0], "group__sock-adopt.html#gabe71b7462afb21c767bdc67334f305af":[11,0,0,0,50], +"group__sock-adopt.html#gabe71b7462afb21c767bdc67334f305af":[9,15,0], "group__timeout.html":[9,3], "group__timeout.html#ga2c0aa4b9c3c55bae7b35cbfac3246c87":[11,0,0,0,39], "group__timeout.html#gaced9f9237f6172fed9f730a2af51345a":[9,3,0], @@ -97,8 +99,8 @@ var NAVTREEINDEX2 = "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a06006e98d27e1e884364d88317f83493":[9,16,1,22], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a0e9e3dd667c0c42cdbe1a3d921f4fd79":[11,0,0,0,23,36], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a0e9e3dd667c0c42cdbe1a3d921f4fd79":[9,16,1,36], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a136a7cec11c3afd13245623bd84e76c9":[9,16,1,9], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a136a7cec11c3afd13245623bd84e76c9":[11,0,0,0,23,9], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a136a7cec11c3afd13245623bd84e76c9":[9,16,1,9], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a17620dd6cb920b9b6daeae63575be08b":[9,16,1,41], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a17620dd6cb920b9b6daeae63575be08b":[11,0,0,0,23,58], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a182a4a14c3278784505cea6d516a8308":[11,0,0,0,23,47], @@ -113,8 +115,8 @@ var NAVTREEINDEX2 = "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a2db02fc6e1c17ab62b52109d1aa9d738":[9,16,1,7], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a2fce9a8608220f32abbf1422a5498804":[11,0,0,0,23,14], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a2fce9a8608220f32abbf1422a5498804":[9,16,1,14], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a390da3639296660a78cc1a5dcb19037e":[9,16,1,25], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a390da3639296660a78cc1a5dcb19037e":[11,0,0,0,23,25], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a390da3639296660a78cc1a5dcb19037e":[9,16,1,25], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a45d538082dec32dbecfe9d9a05ddfecd":[11,0,0,0,23,50], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a48a9590e5e18c7920282e094a0bfd9d8":[9,16,1,4], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a48a9590e5e18c7920282e094a0bfd9d8":[11,0,0,0,23,4], @@ -137,26 +139,26 @@ var NAVTREEINDEX2 = "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a89862929a72bff65257ca1d51a0fce4d":[11,0,0,0,23,52], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8e8b2e6dbeac76d8d126947d2166a514":[11,0,0,0,23,10], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8e8b2e6dbeac76d8d126947d2166a514":[9,16,1,10], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a909cc2a7018864b0b71abacc4058fd8f":[11,0,0,0,23,24], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a909cc2a7018864b0b71abacc4058fd8f":[9,16,1,24], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a982579753e70e59a9ea13ce628ac891a":[11,0,0,0,23,59], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a909cc2a7018864b0b71abacc4058fd8f":[11,0,0,0,23,24], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a982579753e70e59a9ea13ce628ac891a":[9,16,1,42], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a982579753e70e59a9ea13ce628ac891a":[11,0,0,0,23,59], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa46f705dcf97502e95627ffde614f98b":[11,0,0,0,23,37], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa46f705dcf97502e95627ffde614f98b":[9,16,1,37], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa536e574a642ff3ab9e12bff7ba2c6a2":[9,16,1,2], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa536e574a642ff3ab9e12bff7ba2c6a2":[11,0,0,0,23,2], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa536e574a642ff3ab9e12bff7ba2c6a2":[9,16,1,2], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa5cc921b7697743017a533822a3d556a":[11,0,0,0,23,56], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa5cc921b7697743017a533822a3d556a":[9,16,1,39], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa627548e1296e654fcfab463ec3c9587":[11,0,0,0,23,15], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa627548e1296e654fcfab463ec3c9587":[9,16,1,15], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa627548e1296e654fcfab463ec3c9587":[11,0,0,0,23,15], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa87d2e82fffa42c3680c7403ef94216e":[11,0,0,0,23,34], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa87d2e82fffa42c3680c7403ef94216e":[9,16,1,34], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aaffd08a5cae791c9f3c38ee242203900":[11,0,0,0,23,46], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ab69783a9fbf2ca71ad70706bda77b412":[11,0,0,0,23,32], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ab69783a9fbf2ca71ad70706bda77b412":[9,16,1,32], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ab884f3d5f8a6126a0d34c0172f5e3725":[11,0,0,0,23,53], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7abbbe7a0a67c5866ca9109d46823fc5b1":[9,16,1,8], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7abbbe7a0a67c5866ca9109d46823fc5b1":[11,0,0,0,23,8], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7abbbe7a0a67c5866ca9109d46823fc5b1":[9,16,1,8], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7abcf9c720cd3d361a83d1ac65bf052a25":[11,0,0,0,23,39], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac11c336f7052abf3618962902a71ebc8":[11,0,0,0,23,54], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac3fc5bbb55e69f90396526287ee84a51":[11,0,0,0,23,38], @@ -167,30 +169,30 @@ var NAVTREEINDEX2 = "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac8c0ae966ef1877e0020c0077ff2e4a4":[11,0,0,0,23,41], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aca834dc035b7f7486f9ce40fde54fe9e":[11,0,0,0,23,30], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aca834dc035b7f7486f9ce40fde54fe9e":[9,16,1,30], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7accd8753672d319a30b4b4c2fb775e84d":[9,16,1,20], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7accd8753672d319a30b4b4c2fb775e84d":[11,0,0,0,23,20], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7accd8753672d319a30b4b4c2fb775e84d":[9,16,1,20], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad5d34583e3556e153eda91620b48cc49":[11,0,0,0,23,27], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad5d34583e3556e153eda91620b48cc49":[9,16,1,27], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad724974204d51d688f569c5d387b967d":[11,0,0,0,23,43], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad87774f1c7784cf632e1e2f5b51036e1":[11,0,0,0,23,48], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad8c6207b0c4e732f3d507f0fb79370e8":[9,16,1,1], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad8c6207b0c4e732f3d507f0fb79370e8":[11,0,0,0,23,1], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7adfb41c92e2522712207ef7f2462b5e34":[11,0,0,0,23,31], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad8c6207b0c4e732f3d507f0fb79370e8":[9,16,1,1], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7adfb41c92e2522712207ef7f2462b5e34":[9,16,1,31], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae4986291b7a810fe290851d73bebeb1c":[11,0,0,0,23,21], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7adfb41c92e2522712207ef7f2462b5e34":[11,0,0,0,23,31], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae4986291b7a810fe290851d73bebeb1c":[9,16,1,21], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae4986291b7a810fe290851d73bebeb1c":[11,0,0,0,23,21], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae5ad65d779b7eab32ab67ceff91a3bac":[11,0,0,0,23,23], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae5ad65d779b7eab32ab67ceff91a3bac":[9,16,1,23], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae8d1de0bb56e03aa58cb4d44b18edd2e":[9,16,1,12], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae8d1de0bb56e03aa58cb4d44b18edd2e":[11,0,0,0,23,12], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae8d1de0bb56e03aa58cb4d44b18edd2e":[9,16,1,12], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae9734e1d7af2abf291665ce9e4a728d3":[11,0,0,0,23,19], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae9734e1d7af2abf291665ce9e4a728d3":[9,16,1,19], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aeb0cec65ec82a713cd01e9ca9aeeb5e6":[11,0,0,0,23,57], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aeb0cec65ec82a713cd01e9ca9aeeb5e6":[9,16,1,40], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7af6cf80e57aae8ba0a57a5c456b1fe026":[11,0,0,0,23,55], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afc4b2f72cc9e424a750b506ce0cc4310":[11,0,0,0,23,51], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afd8fd77a1cc9405fcb4f26915d7f2d01":[9,16,1,29], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afd8fd77a1cc9405fcb4f26915d7f2d01":[11,0,0,0,23,29], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afd8fd77a1cc9405fcb4f26915d7f2d01":[9,16,1,29], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afedadfb3cde37a8ea4c84ed535f26d09":[11,0,0,0,23,16], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afedadfb3cde37a8ea4c84ed535f26d09":[9,16,1,16], "group__uv.html":[9,22], @@ -210,8 +212,8 @@ var NAVTREEINDEX2 = "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a1e9f0842b0e85db50fe648ed4ba9a4b0":[11,0,0,0,33,0], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2":[9,4,0,2,2], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2":[11,0,0,0,33,2], -"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67":[9,4,0,2,5], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67":[11,0,0,0,33,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,33,6], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437aec137a2434851bd856ceebfb697b9970":[9,4,0,2,4], @@ -223,23 +225,23 @@ var NAVTREEINDEX2 = "group__wsclose.html#gaa1c863415d1783cd8de7938aa6efa262":[11,0,0,0,74], "group__wsclose.html#gae399c571df32ba532c0ca67da9284985":[11,0,0,0,26], "group__wsclose.html#gae399c571df32ba532c0ca67da9284985":[9,17,0], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a1bb501d212fa4d57053db681b1dfab98":[11,0,0,0,26,3], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a1bb501d212fa4d57053db681b1dfab98":[9,17,0,2], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a1bb501d212fa4d57053db681b1dfab98":[11,0,0,0,26,3], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a2e1f0113494a58e762eed3d22e7080d8":[11,0,0,0,26,10], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a2e1f0113494a58e762eed3d22e7080d8":[9,17,0,9], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a32c38edab10d1379febac0c479ab2e9c":[11,0,0,0,26,14], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a3ffa38d5081b85fb739e02a747ccf2c4":[11,0,0,0,26,1], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a3ffa38d5081b85fb739e02a747ccf2c4":[9,17,0,0], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a462c99b05459df700919cfd3f53c8276":[11,0,0,0,26,4], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a3ffa38d5081b85fb739e02a747ccf2c4":[11,0,0,0,26,1], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a462c99b05459df700919cfd3f53c8276":[9,17,0,3], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a4b8a3b7ce6f731e5248e4b0fb64a5044":[9,17,0,5], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a462c99b05459df700919cfd3f53c8276":[11,0,0,0,26,4], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a4b8a3b7ce6f731e5248e4b0fb64a5044":[11,0,0,0,26,6], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a4b8a3b7ce6f731e5248e4b0fb64a5044":[9,17,0,5], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a68b3d34bebd88547dcfa5cadba0acd6c":[11,0,0,0,26,7], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a68b3d34bebd88547dcfa5cadba0acd6c":[9,17,0,6], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a7aef2da0062da606eeb35aaca5cf9050":[11,0,0,0,26,8], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a7aef2da0062da606eeb35aaca5cf9050":[9,17,0,7], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a9737a68759e739856b150ff9dfa30218":[9,17,0,1], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a9737a68759e739856b150ff9dfa30218":[11,0,0,0,26,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,26,11], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985acc9a317c70363dd88e823e066b2c73b7":[11,0,0,0,26,0], @@ -247,7 +249,5 @@ var NAVTREEINDEX2 = "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad0869604d79e13700ae5d196a431b350":[11,0,0,0,26,12], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad09e68295eabdddcba4e332fbea70ae5":[11,0,0,0,26,9], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad09e68295eabdddcba4e332fbea70ae5":[9,17,0,8], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad2b477a91c8445bf34ecd43977f9b390":[9,17,0,12], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad2b477a91c8445bf34ecd43977f9b390":[11,0,0,0,26,13], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985af90cb98d983ad3d4c79df9b6f3d4a4d2":[9,17,0,4] +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad2b477a91c8445bf34ecd43977f9b390":[9,17,0,12] }; diff --git a/doc/html/navtreeindex3.js b/doc/html/navtreeindex3.js index aa650db7..a57bf5fb 100644 --- a/doc/html/navtreeindex3.js +++ b/doc/html/navtreeindex3.js @@ -1,23 +1,25 @@ var NAVTREEINDEX3 = { +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad2b477a91c8445bf34ecd43977f9b390":[11,0,0,0,26,13], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985af90cb98d983ad3d4c79df9b6f3d4a4d2":[11,0,0,0,26,5], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985af90cb98d983ad3d4c79df9b6f3d4a4d2":[9,17,0,4], "group__wsstatus.html":[9,18], -"group__wsstatus.html#ga08e9ee165fca503fd9427d55cfecac37":[9,18,4], "group__wsstatus.html#ga08e9ee165fca503fd9427d55cfecac37":[11,0,0,0,122], +"group__wsstatus.html#ga08e9ee165fca503fd9427d55cfecac37":[9,18,4], "group__wsstatus.html#ga26a140623d202dd2bf2004deb6994baa":[9,18,5], "group__wsstatus.html#ga26a140623d202dd2bf2004deb6994baa":[11,0,0,0,123], -"group__wsstatus.html#ga2bb3655329b4651cd06f79ee3a764421":[11,0,0,0,141], "group__wsstatus.html#ga2bb3655329b4651cd06f79ee3a764421":[9,18,7], -"group__wsstatus.html#ga3df5045656dfb6b0e63a38de2dca79d2":[11,0,0,0,106], +"group__wsstatus.html#ga2bb3655329b4651cd06f79ee3a764421":[11,0,0,0,141], "group__wsstatus.html#ga3df5045656dfb6b0e63a38de2dca79d2":[9,18,1], -"group__wsstatus.html#ga42152ffb385f9b19f4e7b04f998425de":[11,0,0,0,108], +"group__wsstatus.html#ga3df5045656dfb6b0e63a38de2dca79d2":[11,0,0,0,106], "group__wsstatus.html#ga42152ffb385f9b19f4e7b04f998425de":[9,18,2], -"group__wsstatus.html#ga4ad226d5e01024b4046f4a5a37199aa1":[11,0,0,0,121], +"group__wsstatus.html#ga42152ffb385f9b19f4e7b04f998425de":[11,0,0,0,108], "group__wsstatus.html#ga4ad226d5e01024b4046f4a5a37199aa1":[9,18,3], +"group__wsstatus.html#ga4ad226d5e01024b4046f4a5a37199aa1":[11,0,0,0,121], "group__wsstatus.html#gaccd9c59336efad8af0554f79cc5966fd":[9,18,0], "group__wsstatus.html#gaccd9c59336efad8af0554f79cc5966fd":[11,0,0,0,93], -"group__wsstatus.html#gaeca4afc94b1f026034f99cbba37e2f85":[9,18,6], "group__wsstatus.html#gaeca4afc94b1f026034f99cbba37e2f85":[11,0,0,0,132], +"group__wsstatus.html#gaeca4afc94b1f026034f99cbba37e2f85":[9,18,6], "hierarchy.html":[10,2], "index.html":[], "index.html":[0], @@ -247,7 +249,5 @@ var NAVTREEINDEX3 = "structlws__ext__option__arg.html":[9,5,1], "structlws__ext__option__arg.html#a0a320c56b79271b8f059eeaad9423ac9":[9,5,1,2], "structlws__ext__option__arg.html#a0b1f7b30c3ceaf5f1bf9d105c24568d1":[9,5,1,3], -"structlws__ext__option__arg.html#af37f0b6caa7735af51a1ac12b68d5bc5":[9,5,1,0], -"structlws__ext__option__arg.html#af57fffcfa253dfa8d98681ac1fb1785f":[9,5,1,1], -"structlws__ext__options.html":[9,5,0] +"structlws__ext__option__arg.html#af37f0b6caa7735af51a1ac12b68d5bc5":[9,5,1,0] }; diff --git a/doc/html/navtreeindex4.js b/doc/html/navtreeindex4.js index 8917f2cd..9118beb6 100644 --- a/doc/html/navtreeindex4.js +++ b/doc/html/navtreeindex4.js @@ -1,5 +1,7 @@ var NAVTREEINDEX4 = { +"structlws__ext__option__arg.html#af57fffcfa253dfa8d98681ac1fb1785f":[9,5,1,1], +"structlws__ext__options.html":[9,5,0], "structlws__ext__options.html#a1769e4a9805bbdda227821e9578ddc7e":[9,5,0,0], "structlws__ext__options.html#a7c4dbd62dbeba63a9d50d2306bd1cc61":[9,5,0,1], "structlws__extension.html":[9,5,2], @@ -74,10 +76,10 @@ var NAVTREEINDEX4 = "structlws__process__html__state.html#af21119890fdfebe28fb5c4dabfc1bdf5":[9,6,1,1,1], "structlws__protocol__vhost__options.html":[9,4,0,0], "structlws__protocol__vhost__options.html":[9,4,2], -"structlws__protocol__vhost__options.html#a0640a92513c70ee6b9b295a9ad1658e7":[9,4,2,3], "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#a0640a92513c70ee6b9b295a9ad1658e7":[9,4,2,3], "structlws__protocol__vhost__options.html#abc714ddb4171756fc8196e9823a1e21c":[9,4,2,1], +"structlws__protocol__vhost__options.html#abc714ddb4171756fc8196e9823a1e21c":[9,4,0,0,1], "structlws__protocol__vhost__options.html#acf9db77f8eb64cd4e314be9b43d8a8b9":[9,4,2,0], "structlws__protocol__vhost__options.html#acf9db77f8eb64cd4e314be9b43d8a8b9":[9,4,0,0,0], "structlws__protocol__vhost__options.html#afd99fbc90be51ea2465b550c2ec47822":[9,4,0,0,2], @@ -99,8 +101,8 @@ var NAVTREEINDEX4 = "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#a855b7375d1d58516c0ecd4b60e9a7766":[9,6,6,1], "structlws__tokens.html#a855b7375d1d58516c0ecd4b60e9a7766":[9,6,4,0,1], +"structlws__tokens.html#a855b7375d1d58516c0ecd4b60e9a7766":[9,6,6,1], "structlws__tokens.html#a9f3635412bc71a5cb78e9862b55f10cd":[9,6,4,0,0], "structlws__tokens.html#a9f3635412bc71a5cb78e9862b55f10cd":[9,6,6,0], "structlwsgw__hash.html":[9,10,0,1], diff --git a/lib/libwebsockets.h b/lib/libwebsockets.h index 3598bc1d..458b93d2 100644 --- a/lib/libwebsockets.h +++ b/lib/libwebsockets.h @@ -280,8 +280,9 @@ enum lws_log_levels { LLL_EXT = 1 << 7, LLL_CLIENT = 1 << 8, LLL_LATENCY = 1 << 9, + LLL_USER = 1 << 10, - LLL_COUNT = 10 /* set to count of valid flags */ + LLL_COUNT = 11 /* set to count of valid flags */ }; LWS_VISIBLE LWS_EXTERN void _lws_log(int filter, const char *format, ...); @@ -298,15 +299,18 @@ LWS_VISIBLE LWS_EXTERN void _lws_logv(int filter, const char *format, va_list vl LWS_VISIBLE LWS_EXTERN int lwsl_timestamp(int level, char *p, int len); +/* these guys are unconditionally included */ + #define lwsl_err(...) _lws_log(LLL_ERR, __VA_ARGS__) +#define lwsl_user(...) _lws_log(LLL_USER, __VA_ARGS__) #if !defined(LWS_WITH_NO_LOGS) -/* notice, warn and log are always compiled in */ +/* notice and warn are usually included by being compiled in */ #define lwsl_warn(...) _lws_log(LLL_WARN, __VA_ARGS__) #define lwsl_notice(...) _lws_log(LLL_NOTICE, __VA_ARGS__) #endif /* - * weaker logging can be deselected at configure time using --disable-debug + * weaker logging can be deselected by telling CMake to build in RELEASE mode * that gets rid of the overhead of checking while keeping _warn and _err * active */ @@ -318,7 +322,6 @@ lwsl_timestamp(int level, char *p, int len); #ifdef _DEBUG #if defined(LWS_WITH_NO_LOGS) /* notice, warn and log are always compiled in */ -//#define lwsl_err(...) _lws_log(LLL_ERR, __VA_ARGS__) #define lwsl_warn(...) _lws_log(LLL_WARN, __VA_ARGS__) #define lwsl_notice(...) _lws_log(LLL_NOTICE, __VA_ARGS__) #endif @@ -339,7 +342,6 @@ LWS_VISIBLE LWS_EXTERN void lwsl_hexdump(void *buf, size_t len); #else /* no debug */ #if defined(LWS_WITH_NO_LOGS) -//#define lwsl_err(...) do {} while(0) #define lwsl_warn(...) do {} while(0) #define lwsl_notice(...) do {} while(0) #endif