From 675c349cc592b0d84df02382fac5617293a2965a Mon Sep 17 00:00:00 2001 From: Andy Green Date: Thu, 7 Jul 2016 08:14:26 +0800 Subject: [PATCH] client ssl add flag to control server cert hostname check --- doc/html/globals_enum.html | 3 + doc/html/globals_l.html | 3 + doc/html/group__client.html | 25 ++ doc/html/group__client.js | 1 + doc/html/group__context-and-vhost.html | 14 +- 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 | 5 + doc/html/libwebsockets_8h.js | 5 + doc/html/libwebsockets_8h_source.html | 305 ++++++++++++------------ doc/html/navtreedata.js | 6 +- doc/html/navtreeindex0.js | 312 ++++++++++++------------- doc/html/navtreeindex1.js | 256 ++++++++++---------- doc/html/navtreeindex2.js | 186 +++++++-------- doc/html/navtreeindex3.js | 27 ++- doc/latex/group__client.tex | 26 +++ doc/latex/group__context-and-vhost.tex | 19 +- doc/latex/group__form-parsing.tex | 10 +- doc/latex/group__sending-data.tex | 44 ++-- doc/latex/group__smtp.tex | 22 +- doc/latex/group__vhost-mounts.tex | 18 +- doc/latex/libwebsockets_8h.tex | 5 + lib/libwebsockets.h | 12 +- lib/private-libwebsockets.h | 2 +- lib/ssl-client.c | 22 +- test-server/test-client.c | 32 ++- 28 files changed, 758 insertions(+), 654 deletions(-) diff --git a/doc/html/globals_enum.html b/doc/html/globals_enum.html index fc5d51d0..ef407bef 100644 --- a/doc/html/globals_enum.html +++ b/doc/html/globals_enum.html @@ -80,6 +80,9 @@ $(document).ready(function(){initNavTree('globals_enum.html','');});
  • lws_callback_reasons : libwebsockets.h
  • +
  • lws_client_connect_ssl_connection_flags +: libwebsockets.h +
  • lws_close_status : libwebsockets.h
  • diff --git a/doc/html/globals_l.html b/doc/html/globals_l.html index f322d7d5..08f21c6d 100644 --- a/doc/html/globals_l.html +++ b/doc/html/globals_l.html @@ -307,6 +307,9 @@ $(document).ready(function(){initNavTree('globals_l.html','');});
  • lws_client_connect_extended() : libwebsockets.h
  • +
  • lws_client_connect_ssl_connection_flags +: libwebsockets.h +
  • lws_client_connect_via_info() : libwebsockets.h
  • diff --git a/doc/html/group__client.html b/doc/html/group__client.html index 1e459d1b..2de83739 100644 --- a/doc/html/group__client.html +++ b/doc/html/group__client.html @@ -63,6 +63,7 @@ $(document).ready(function(){initNavTree('group__client.html','');});
    Client
    @@ -74,6 +75,14 @@ Data Structures struct  lws_client_connect_info   + + + +

    +Enumerations

    enum  lws_client_connect_ssl_connection_flags { LCCSCF_USE_SSL = (1 << 0), +LCCSCF_ALLOW_SELFSIGNED = (1 << 1), +LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK = (1 << 2) + }
     
    @@ -90,6 +99,22 @@ LWS_VISIBLE LWS_EXTERN int 

    (VH) if set, only ipv6 allowed on the vhost

    Functions

    LWS_VISIBLE LWS_EXTERN struct lws * lws_client_connect_via_info (struct lws_client_connect_info *ccinfo)

    Detailed Description

    Client releated functions

    +

    Enumeration Type Documentation

    + +
    +
    + +

    #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

    +
    1848  {
    1849  LCCSCF_USE_SSL = (1 << 0),
    1850  LCCSCF_ALLOW_SELFSIGNED = (1 << 1),
    1851  LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK = (1 << 2)
    1852 };
    +
    +

    Function Documentation

    diff --git a/doc/html/group__client.js b/doc/html/group__client.js index f35dce6f..d0e60ce7 100644 --- a/doc/html/group__client.js +++ b/doc/html/group__client.js @@ -20,6 +20,7 @@ var group__client = [ "userdata", "structlws__client__connect__info.html#a9831b9f9ab54a1aec4bb15324f1c3836", null ], [ "vhost", "structlws__client__connect__info.html#a3893181d728f326f9f5b47c1459cb8be", null ] ] ], + [ "lws_client_connect_ssl_connection_flags", "group__client.html#ga96f3dbad54b2853969cfa933d66871ce", null ], [ "lws_client_connect", "group__client.html#ga4af0a20108a95e8b6d94dd4d80055ff3", null ], [ "lws_client_connect_extended", "group__client.html#gac6a8558b4410961a880241c2ac1271e2", null ], [ "lws_client_connect_via_info", "group__client.html#ga0c966136905f467816307cfba6deb5fd", null ], diff --git a/doc/html/group__context-and-vhost.html b/doc/html/group__context-and-vhost.html index cff21961..953dd9eb 100644 --- a/doc/html/group__context-and-vhost.html +++ b/doc/html/group__context-and-vhost.html @@ -206,23 +206,23 @@ Functions
    -
    1387  {
    1389  (1 << 12),
    1396  (1 << 12),
    1400  LWS_SERVER_OPTION_LIBEV = (1 << 4),
    1402  LWS_SERVER_OPTION_DISABLE_IPV6 = (1 << 5),
    1411  LWS_SERVER_OPTION_SSL_ECDH = (1 << 9) |
    1412  (1 << 12),
    1414  LWS_SERVER_OPTION_LIBUV = (1 << 10),
    1417  (1 << 3) |
    1418  (1 << 12),
    1426  LWS_SERVER_OPTION_UNIX_SOCK = (1 << 14),
    1428  LWS_SERVER_OPTION_STS = (1 << 15),
    1436  /****** add new things just above ---^ ******/
    1437 };
    +
    1387  {
    1389  (1 << 12),
    1396  (1 << 12),
    1400  LWS_SERVER_OPTION_LIBEV = (1 << 4),
    1402  LWS_SERVER_OPTION_DISABLE_IPV6 = (1 << 5),
    1411  LWS_SERVER_OPTION_SSL_ECDH = (1 << 9) |
    1412  (1 << 12),
    1414  LWS_SERVER_OPTION_LIBUV = (1 << 10),
    1417  (1 << 12),
    1425  LWS_SERVER_OPTION_UNIX_SOCK = (1 << 14),
    1427  LWS_SERVER_OPTION_STS = (1 << 15),
    1435  /****** add new things just above ---^ ******/
    1436 };
    Definition: libwebsockets.h:1404
    Definition: libwebsockets.h:1416
    -
    Definition: libwebsockets.h:1423
    +
    Definition: libwebsockets.h:1422
    Definition: libwebsockets.h:1393
    Definition: libwebsockets.h:1411
    Definition: libwebsockets.h:1395
    Definition: libwebsockets.h:1400
    -
    Definition: libwebsockets.h:1421
    -
    Definition: libwebsockets.h:1433
    +
    Definition: libwebsockets.h:1420
    +
    Definition: libwebsockets.h:1432
    Definition: libwebsockets.h:1402
    Definition: libwebsockets.h:1414
    -
    Definition: libwebsockets.h:1426
    +
    Definition: libwebsockets.h:1425
    Definition: libwebsockets.h:1409
    Definition: libwebsockets.h:1407
    -
    Definition: libwebsockets.h:1428
    -
    Definition: libwebsockets.h:1431
    +
    Definition: libwebsockets.h:1427
    +
    Definition: libwebsockets.h:1430
    diff --git a/doc/html/group__form-parsing.html b/doc/html/group__form-parsing.html index cb2b1e61..6cad333a 100644 --- a/doc/html/group__form-parsing.html +++ b/doc/html/group__form-parsing.html @@ -156,9 +156,9 @@ Functions

    a new file is starting to arrive

    -
    2618  {
    2623  LWS_UFS_OPEN
    2625 };
    Definition: libwebsockets.h:2621
    -
    Definition: libwebsockets.h:2623
    -
    Definition: libwebsockets.h:2619
    +
    2628  {
    2633  LWS_UFS_OPEN
    2635 };
    Definition: libwebsockets.h:2631
    +
    Definition: libwebsockets.h:2633
    +
    Definition: libwebsockets.h:2629
    diff --git a/doc/html/group__sending-data.html b/doc/html/group__sending-data.html index e108e44f..231dc7bf 100644 --- a/doc/html/group__sending-data.html +++ b/doc/html/group__sending-data.html @@ -130,13 +130,13 @@ Functions

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

    -
    2959  {
    2960  LWS_WRITE_TEXT = 0,
    2964  LWS_WRITE_BINARY = 1,
    2970  LWS_WRITE_HTTP = 3,
    2973  /* LWS_WRITE_CLOSE is handled by lws_close_reason() */
    2974  LWS_WRITE_PING = 5,
    2975  LWS_WRITE_PONG = 6,
    2976 
    2977  /* Same as write_http but we know this write ends the transaction */
    2978  LWS_WRITE_HTTP_FINAL = 7,
    2979 
    2980  /* HTTP2 */
    2981 
    2989  /****** add new things just above ---^ ******/
    2990 
    2991  /* flags */
    2992 
    2993  LWS_WRITE_NO_FIN = 0x40,
    3000 };
    Definition: libwebsockets.h:2970
    -
    Definition: libwebsockets.h:2993
    -
    Definition: libwebsockets.h:2960
    -
    Definition: libwebsockets.h:2964
    -
    Definition: libwebsockets.h:2996
    -
    Definition: libwebsockets.h:2967
    -
    Definition: libwebsockets.h:2982
    +
    2969  {
    2970  LWS_WRITE_TEXT = 0,
    2974  LWS_WRITE_BINARY = 1,
    2980  LWS_WRITE_HTTP = 3,
    2983  /* LWS_WRITE_CLOSE is handled by lws_close_reason() */
    2984  LWS_WRITE_PING = 5,
    2985  LWS_WRITE_PONG = 6,
    2986 
    2987  /* Same as write_http but we know this write ends the transaction */
    2988  LWS_WRITE_HTTP_FINAL = 7,
    2989 
    2990  /* HTTP2 */
    2991 
    2999  /****** add new things just above ---^ ******/
    3000 
    3001  /* flags */
    3002 
    3003  LWS_WRITE_NO_FIN = 0x40,
    3010 };
    Definition: libwebsockets.h:2980
    +
    Definition: libwebsockets.h:3003
    +
    Definition: libwebsockets.h:2970
    +
    Definition: libwebsockets.h:2974
    +
    Definition: libwebsockets.h:3006
    +
    Definition: libwebsockets.h:2977
    +
    Definition: libwebsockets.h:2992
    diff --git a/doc/html/group__smtp.html b/doc/html/group__smtp.html index fc0d393c..c1f974f7 100644 --- a/doc/html/group__smtp.html +++ b/doc/html/group__smtp.html @@ -157,15 +157,15 @@ Functions

    sent the session quit

    -
    3881  {
    3882  LGSSMTP_IDLE,
    3887  LGSSMTP_SENT_TO,
    3891 };
    Definition: libwebsockets.h:3884
    -
    Definition: libwebsockets.h:3889
    -
    Definition: libwebsockets.h:3882
    -
    Definition: libwebsockets.h:3883
    -
    Definition: libwebsockets.h:3887
    -
    Definition: libwebsockets.h:3886
    -
    Definition: libwebsockets.h:3890
    -
    Definition: libwebsockets.h:3885
    -
    Definition: libwebsockets.h:3888
    +
    3891  {
    3892  LGSSMTP_IDLE,
    3897  LGSSMTP_SENT_TO,
    3901 };
    Definition: libwebsockets.h:3894
    +
    Definition: libwebsockets.h:3899
    +
    Definition: libwebsockets.h:3892
    +
    Definition: libwebsockets.h:3893
    +
    Definition: libwebsockets.h:3897
    +
    Definition: libwebsockets.h:3896
    +
    Definition: libwebsockets.h:3900
    +
    Definition: libwebsockets.h:3895
    +
    Definition: libwebsockets.h:3898
    diff --git a/doc/html/group__vhost-mounts.html b/doc/html/group__vhost-mounts.html index dbbc999c..a0a9a19e 100644 --- a/doc/html/group__vhost-mounts.html +++ b/doc/html/group__vhost-mounts.html @@ -129,13 +129,13 @@ Enumerations

    hand by named protocol's callback

    -
    1785  {
    1786  LWSMPRO_HTTP = 0,
    1787  LWSMPRO_HTTPS = 1,
    1788  LWSMPRO_FILE = 2,
    1789  LWSMPRO_CGI = 3,
    1790  LWSMPRO_REDIR_HTTP = 4,
    1791  LWSMPRO_REDIR_HTTPS = 5,
    1792  LWSMPRO_CALLBACK = 6,
    1793 };
    Definition: libwebsockets.h:1789
    -
    Definition: libwebsockets.h:1787
    -
    Definition: libwebsockets.h:1788
    -
    Definition: libwebsockets.h:1790
    -
    Definition: libwebsockets.h:1791
    -
    Definition: libwebsockets.h:1786
    -
    Definition: libwebsockets.h:1792
    +
    1784  {
    1785  LWSMPRO_HTTP = 0,
    1786  LWSMPRO_HTTPS = 1,
    1787  LWSMPRO_FILE = 2,
    1788  LWSMPRO_CGI = 3,
    1789  LWSMPRO_REDIR_HTTP = 4,
    1790  LWSMPRO_REDIR_HTTPS = 5,
    1791  LWSMPRO_CALLBACK = 6,
    1792 };
    Definition: libwebsockets.h:1788
    +
    Definition: libwebsockets.h:1786
    +
    Definition: libwebsockets.h:1787
    +
    Definition: libwebsockets.h:1789
    +
    Definition: libwebsockets.h:1790
    +
    Definition: libwebsockets.h:1785
    +
    Definition: libwebsockets.h:1791
    diff --git a/doc/html/libwebsockets_8h.html b/doc/html/libwebsockets_8h.html index 3506df47..c1855c0a 100644 --- a/doc/html/libwebsockets_8h.html +++ b/doc/html/libwebsockets_8h.html @@ -374,6 +374,11 @@ Enumerations
    }   +enum  lws_client_connect_ssl_connection_flags { LCCSCF_USE_SSL = (1 << 0), +LCCSCF_ALLOW_SELFSIGNED = (1 << 1), +LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK = (1 << 2) + } +  enum  http_status {
      HTTP_STATUS_OK = 200, HTTP_STATUS_NO_CONTENT = 204, diff --git a/doc/html/libwebsockets_8h.js b/doc/html/libwebsockets_8h.js index 7963fa86..d8dbff21 100644 --- a/doc/html/libwebsockets_8h.js +++ b/doc/html/libwebsockets_8h.js @@ -117,6 +117,11 @@ var libwebsockets_8h = [ "LHCS_PAYLOAD", "libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedbada3dca91d96bcde5df08a67b5a66e972", null ], [ "LCHS_SINGLE_0A", "libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedbad655f0eecc9e94be37b8ed07348716ef", null ] ] ], + [ "lws_client_connect_ssl_connection_flags", "group__client.html#ga96f3dbad54b2853969cfa933d66871ce", [ + [ "LCCSCF_USE_SSL", "group__client.html#gga96f3dbad54b2853969cfa933d66871cea7051e79bb97b69862f2ff00ae5298ec7", null ], + [ "LCCSCF_ALLOW_SELFSIGNED", "group__client.html#gga96f3dbad54b2853969cfa933d66871ceafc72c0ffbc7462bdddd4ce7bd99ac092", null ], + [ "LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK", "group__client.html#gga96f3dbad54b2853969cfa933d66871cea89866ab6a749aaa1684158c55f826b35", null ] + ] ], [ "lws_close_status", "group__wsclose.html#gae399c571df32ba532c0ca67da9284985", [ [ "LWS_CLOSE_STATUS_NOSTATUS", "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985acc9a317c70363dd88e823e066b2c73b7", null ], [ "LWS_CLOSE_STATUS_NORMAL", "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a3ffa38d5081b85fb739e02a747ccf2c4", null ], diff --git a/doc/html/libwebsockets_8h_source.html b/doc/html/libwebsockets_8h_source.html index bfe8db64..16db21b8 100644 --- a/doc/html/libwebsockets_8h_source.html +++ b/doc/html/libwebsockets_8h_source.html @@ -71,9 +71,9 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
    libwebsockets.h
    -Go to the documentation of this file.
    1 /*
    2  * libwebsockets - small server side websockets and web server implementation
    3  *
    4  * Copyright (C) 2010-2016 Andy Green <andy@warmcat.com>
    5  *
    6  * This library is free software; you can redistribute it and/or
    7  * modify it under the terms of the GNU Lesser General Public
    8  * License as published by the Free Software Foundation:
    9  * version 2.1 of the License.
    10  *
    11  * This library is distributed in the hope that it will be useful,
    12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
    13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    14  * Lesser General Public License for more details.
    15  *
    16  * You should have received a copy of the GNU Lesser General Public
    17  * License along with this library; if not, write to the Free Software
    18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
    19  * MA 02110-1301 USA
    20  */
    21 
    24 #ifndef LIBWEBSOCKET_H_3060898B846849FF9F88F5DB59B5950C
    25 #define LIBWEBSOCKET_H_3060898B846849FF9F88F5DB59B5950C
    26 
    27 #ifdef __cplusplus
    28 #include <cstddef>
    29 #include <cstdarg>
    30 #ifdef MBED_OPERATORS
    31 #include "mbed-drivers/mbed.h"
    32 #include "sal-iface-eth/EthernetInterface.h"
    33 #include "sockets/TCPListener.h"
    34 #include "sal-stack-lwip/lwipv4_init.h"
    35 
    36 namespace {
    37 }
    38 using namespace mbed::Sockets::v0;
    39 
    40 
    41 struct sockaddr_in;
    42 struct lws;
    43 
    44 class lws_conn {
    45  public:
    46  lws_conn():
    47  ts(NULL),
    48  wsi(NULL),
    49  writeable(1),
    50  awaiting_on_writeable(0)
    51  {
    52  }
    53 
    54 public:
    55  void set_wsi(struct lws *_wsi) { wsi = _wsi; }
    56  int actual_onRX(Socket *s);
    57  void onRX(Socket *s);
    58  void onError(Socket *s, socket_error_t err);
    59  void onDisconnect(TCPStream *s);
    60  void onSent(Socket *s, uint16_t len);
    61  void serialized_writeable(struct lws *wsi);
    62 
    63 public:
    64  TCPStream *ts;
    65 
    66 public:
    67  struct lws *wsi;
    68  char writeable;
    69  char awaiting_on_writeable;
    70 };
    71 
    73 public:
    75  srv(SOCKET_STACK_LWIP_IPV4)
    76  {
    77  srv.setOnError(TCPStream::ErrorHandler_t(this,
    79  }
    80 
    81  void start(const uint16_t port);
    83 protected:
    84  void onRX(Socket *s);
    85  void onError(Socket *s, socket_error_t err);
    86  void onIncoming(TCPListener *s, void *impl);
    87  void onDisconnect(TCPStream *s);
    89 public:
    90  TCPListener srv;
    91 };
    92 
    93 #endif
    94 
    95 extern "C" {
    96 #else
    97 #include <stdarg.h>
    98 #endif
    99 
    100 #ifdef MBED_OPERATORS
    101 struct sockaddr_in;
    102 #define LWS_POSIX 0
    103 #else
    104 #define LWS_POSIX 1
    105 #endif
    106 
    107 #include "lws_config.h"
    108 
    109 #if defined(WIN32) || defined(_WIN32)
    110 #ifndef WIN32_LEAN_AND_MEAN
    111 #define WIN32_LEAN_AND_MEAN
    112 #endif
    113 
    114 #include <winsock2.h>
    115 #include <ws2tcpip.h>
    116 #include <stddef.h>
    117 #include <basetsd.h>
    118 #ifndef _WIN32_WCE
    119 #include <stdint.h>
    120 #include <fcntl.h>
    121 #else
    122 #define _O_RDONLY 0x0000
    123 #define O_RDONLY _O_RDONLY
    124 #endif
    125 
    126 // Visual studio older than 2015 and WIN_CE has only _stricmp
    127 #if (defined(_MSC_VER) && _MSC_VER < 1900) || defined(_WIN32_WCE)
    128 #define strcasecmp _stricmp
    129 #else
    130 #define strcasecmp stricmp
    131 #endif
    132 #define getdtablesize() 30000
    133 
    134 #define LWS_INLINE __inline
    135 #define LWS_VISIBLE
    136 #define LWS_WARN_UNUSED_RESULT
    137 #define LWS_WARN_DEPRECATED
    138 
    139 #ifdef LWS_DLL
    140 #ifdef LWS_INTERNAL
    141 #define LWS_EXTERN extern __declspec(dllexport)
    142 #else
    143 #define LWS_EXTERN extern __declspec(dllimport)
    144 #endif
    145 #else
    146 #define LWS_EXTERN
    147 #endif
    148 
    149 #define LWS_INVALID_FILE INVALID_HANDLE_VALUE
    150 #define LWS_O_RDONLY _O_RDONLY
    151 
    152 #if !defined(_MSC_VER) || _MSC_VER < 1900 /* Visual Studio 2015 already defines this in <stdio.h> */
    153 #define snprintf _snprintf
    154 #endif
    155 
    156 #ifndef __func__
    157 #define __func__ __FUNCTION__
    158 #endif
    159 
    160 #else /* NOT WIN32 */
    161 #include <unistd.h>
    162 
    163 #if defined(__NetBSD__) || defined(__FreeBSD__)
    164 #include <netinet/in.h>
    165 #endif
    166 
    167 #define LWS_INLINE inline
    168 #define LWS_O_RDONLY O_RDONLY
    169 
    170 #ifndef MBED_OPERATORS
    171 #include <poll.h>
    172 #include <netdb.h>
    173 #define LWS_INVALID_FILE -1
    174 #else
    175 #define getdtablesize() (20)
    176 #define LWS_INVALID_FILE NULL
    177 #endif
    178 
    179 #if defined(__GNUC__)
    180 
    181 /* warn_unused_result attribute only supported by GCC 3.4 or later */
    182 #if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
    183 #define LWS_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
    184 #else
    185 #define LWS_WARN_UNUSED_RESULT
    186 #endif
    187 
    188 #define LWS_VISIBLE __attribute__((visibility("default")))
    189 #define LWS_WARN_DEPRECATED __attribute__ ((deprecated))
    190 #else
    191 #define LWS_VISIBLE
    192 #define LWS_WARN_UNUSED_RESULT
    193 #define LWS_WARN_DEPRECATED
    194 #endif
    195 
    196 #if defined(__ANDROID__)
    197 #include <unistd.h>
    198 #define getdtablesize() sysconf(_SC_OPEN_MAX)
    199 #endif
    200 
    201 #endif
    202 
    203 #ifdef LWS_USE_LIBEV
    204 #include <ev.h>
    205 #endif /* LWS_USE_LIBEV */
    206 #ifdef LWS_USE_LIBUV
    207 #include <uv.h>
    208 #endif /* LWS_USE_LIBUV */
    209 
    210 #ifndef LWS_EXTERN
    211 #define LWS_EXTERN extern
    212 #endif
    213 
    214 #ifdef _WIN32
    215 #define random rand
    216 #else
    217 #include <sys/time.h>
    218 #include <unistd.h>
    219 #endif
    220 
    221 #ifdef LWS_OPENSSL_SUPPORT
    222 
    223 #ifdef USE_WOLFSSL
    224 #ifdef USE_OLD_CYASSL
    225 #include <cyassl/openssl/ssl.h>
    226 #include <cyassl/error-ssl.h>
    227 #else
    228 #include <wolfssl/openssl/ssl.h>
    229 #include <wolfssl/error-ssl.h>
    230 #endif /* not USE_OLD_CYASSL */
    231 #else
    232 #if defined(LWS_USE_POLARSSL)
    233 #include <polarssl/ssl.h>
    235  x509_crt ca;
    236  x509_crt certificate;
    237  rsa_context key;
    238 };
    239 typedef struct lws_polarssl_context SSL_CTX;
    240 typedef ssl_context SSL;
    241 #else
    242 #if defined(LWS_USE_MBEDTLS)
    243 #include <mbedtls/ssl.h>
    244 #else
    245 #include <openssl/ssl.h>
    246 #include <openssl/err.h>
    247 #endif /* not USE_MBEDTLS */
    248 #endif /* not USE_POLARSSL */
    249 #endif /* not USE_WOLFSSL */
    250 #endif
    251 
    252 
    253 #define CONTEXT_PORT_NO_LISTEN -1
    254 
    265 
    267 enum lws_log_levels {
    268  LLL_ERR = 1 << 0,
    269  LLL_WARN = 1 << 1,
    270  LLL_NOTICE = 1 << 2,
    271  LLL_INFO = 1 << 3,
    272  LLL_DEBUG = 1 << 4,
    273  LLL_PARSER = 1 << 5,
    274  LLL_HEADER = 1 << 6,
    275  LLL_EXT = 1 << 7,
    276  LLL_CLIENT = 1 << 8,
    277  LLL_LATENCY = 1 << 9,
    278 
    279  LLL_COUNT = 10 /* set to count of valid flags */
    280 };
    281 
    282 LWS_VISIBLE LWS_EXTERN void _lws_log(int filter, const char *format, ...);
    283 LWS_VISIBLE LWS_EXTERN void _lws_logv(int filter, const char *format, va_list vl);
    293 LWS_VISIBLE LWS_EXTERN int
    294 lwsl_timestamp(int level, char *p, int len);
    295 
    296 /* notice, warn and log are always compiled in */
    297 #define lwsl_notice(...) _lws_log(LLL_NOTICE, __VA_ARGS__)
    298 #define lwsl_warn(...) _lws_log(LLL_WARN, __VA_ARGS__)
    299 #define lwsl_err(...) _lws_log(LLL_ERR, __VA_ARGS__)
    300 /*
    301  * weaker logging can be deselected at configure time using --disable-debug
    302  * that gets rid of the overhead of checking while keeping _warn and _err
    303  * active
    304  */
    305 #ifdef _DEBUG
    306 
    307 #define lwsl_info(...) _lws_log(LLL_INFO, __VA_ARGS__)
    308 #define lwsl_debug(...) _lws_log(LLL_DEBUG, __VA_ARGS__)
    309 #define lwsl_parser(...) _lws_log(LLL_PARSER, __VA_ARGS__)
    310 #define lwsl_header(...) _lws_log(LLL_HEADER, __VA_ARGS__)
    311 #define lwsl_ext(...) _lws_log(LLL_EXT, __VA_ARGS__)
    312 #define lwsl_client(...) _lws_log(LLL_CLIENT, __VA_ARGS__)
    313 #define lwsl_latency(...) _lws_log(LLL_LATENCY, __VA_ARGS__)
    314 
    320 LWS_VISIBLE LWS_EXTERN void lwsl_hexdump(void *buf, size_t len);
    321 
    322 #else /* no debug */
    323 
    324 #define lwsl_info(...) {}
    325 #define lwsl_debug(...) {}
    326 #define lwsl_parser(...) {}
    327 #define lwsl_header(...) {}
    328 #define lwsl_ext(...) {}
    329 #define lwsl_client(...) {}
    330 #define lwsl_latency(...) {}
    331 #define lwsl_hexdump(a, b)
    332 
    333 #endif
    334 
    345 LWS_VISIBLE LWS_EXTERN void
    346 lws_set_log_level(int level,
    347  void (*log_emit_function)(int level, const char *line));
    348 
    358 LWS_VISIBLE LWS_EXTERN void
    359 lwsl_emit_syslog(int level, const char *line);
    360 
    362 
    363 
    364 #include <stddef.h>
    365 
    366 #ifndef lws_container_of
    367 #define lws_container_of(P,T,M) ((T *)((char *)(P) - offsetof(T, M)))
    368 #endif
    369 
    370 
    371 struct lws;
    372 #ifndef ARRAY_SIZE
    373 #define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
    374 #endif
    375 
    376 /* api change list for user code to test against */
    377 
    378 #define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_ARG
    379 
    380 /* the struct lws_protocols has the id field present */
    381 #define LWS_FEATURE_PROTOCOLS_HAS_ID_FIELD
    382 
    383 /* you can call lws_get_peer_write_allowance */
    384 #define LWS_FEATURE_PROTOCOLS_HAS_PEER_WRITE_ALLOWANCE
    385 
    386 /* extra parameter introduced in 917f43ab821 */
    387 #define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_LEN
    388 
    389 /* File operations stuff exists */
    390 #define LWS_FEATURE_FOPS
    391 
    392 
    393 #if defined(_WIN32)
    394 typedef SOCKET lws_sockfd_type;
    395 typedef HANDLE lws_filefd_type;
    396 #define lws_sockfd_valid(sfd) (!!sfd)
    397 struct lws_pollfd {
    398  lws_sockfd_type fd;
    399  SHORT events;
    400  SHORT revents;
    401 };
    402 #else
    403 
    404 #if defined(MBED_OPERATORS)
    405 /* it's a class lws_conn * */
    406 typedef void * lws_sockfd_type;
    407 typedef void * lws_filefd_type;
    408 #define lws_sockfd_valid(sfd) (!!sfd)
    409 struct pollfd {
    410  lws_sockfd_type fd;
    411  short events;
    412  short revents;
    413 };
    414 #define POLLIN 0x0001
    415 #define POLLPRI 0x0002
    416 #define POLLOUT 0x0004
    417 #define POLLERR 0x0008
    418 #define POLLHUP 0x0010
    419 #define POLLNVAL 0x0020
    420 
    421 struct lws;
    422 
    423 void * mbed3_create_tcp_stream_socket(void);
    424 void mbed3_delete_tcp_stream_socket(void *sockfd);
    425 void mbed3_tcp_stream_bind(void *sock, int port, struct lws *);
    426 void mbed3_tcp_stream_accept(void *sock, struct lws *);
    427 #else
    428 typedef int lws_sockfd_type;
    429 typedef int lws_filefd_type;
    430 #define lws_sockfd_valid(sfd) (sfd >= 0)
    431 #endif
    432 
    433 #define lws_pollfd pollfd
    434 #endif
    435 
    438 struct lws_pollargs {
    439  lws_sockfd_type fd;
    440  int events;
    442 };
    443 
    444 struct lws_tokens;
    445 struct lws_token_limits;
    446 
    454 
    456 /*
    457  * NOTE: These public enums are part of the abi. If you want to add one,
    458  * add it at where specified so existing users are unaffected.
    459  */
    462  LWS_CLOSE_STATUS_NOSTATUS = 0,
    524  /****** add new things just above ---^ ******/
    525 
    526  LWS_CLOSE_STATUS_NOSTATUS_CONTEXT_DESTROY = 9999,
    527 };
    528 
    541 LWS_VISIBLE LWS_EXTERN void
    542 lws_close_reason(struct lws *wsi, enum lws_close_status status,
    543  unsigned char *buf, size_t len);
    544 
    546 
    547 struct lws;
    548 struct lws_context;
    549 /* needed even with extensions disabled for create context */
    550 struct lws_extension;
    551 
    563 
    565 
    566 /*
    567  * NOTE: These public enums are part of the abi. If you want to add one,
    568  * add it at where specified so existing users are unaffected.
    569  */
    813  /* external poll() management support */
    876  LWS_CALLBACK_WS_EXT_DEFAULTS = 39,
    879  LWS_CALLBACK_CGI = 40,
    881  LWS_CALLBACK_CGI_TERMINATED = 41,
    883  LWS_CALLBACK_CGI_STDIN_DATA = 42,
    885  LWS_CALLBACK_CGI_STDIN_COMPLETED = 43,
    887  LWS_CALLBACK_ESTABLISHED_CLIENT_HTTP = 44,
    889  LWS_CALLBACK_CLOSED_CLIENT_HTTP = 45,
    891  LWS_CALLBACK_RECEIVE_CLIENT_HTTP = 46,
    893  LWS_CALLBACK_COMPLETED_CLIENT_HTTP = 47,
    895  LWS_CALLBACK_RECEIVE_CLIENT_HTTP_READ = 48,
    897  LWS_CALLBACK_HTTP_BIND_PROTOCOL = 49,
    899  LWS_CALLBACK_HTTP_DROP_PROTOCOL = 50,
    901  LWS_CALLBACK_CHECK_ACCESS_RIGHTS = 51,
    903  LWS_CALLBACK_PROCESS_HTML = 52,
    905  LWS_CALLBACK_ADD_HEADERS = 53,
    907  LWS_CALLBACK_SESSION_INFO = 54,
    910  LWS_CALLBACK_GS_EVENT = 55,
    913  /****** add new things just above ---^ ******/
    914 
    917 };
    918 
    919 
    920 
    936 typedef int
    937 lws_callback_function(struct lws *wsi, enum lws_callback_reasons reason,
    938  void *user, void *in, size_t len);
    940 
    950 
    952 /*
    953  * NOTE: These public enums are part of the abi. If you want to add one,
    954  * add it at where specified so existing users are unaffected.
    955  */
    956 enum lws_extension_callback_reasons {
    957  LWS_EXT_CB_SERVER_CONTEXT_CONSTRUCT = 0,
    958  LWS_EXT_CB_CLIENT_CONTEXT_CONSTRUCT = 1,
    959  LWS_EXT_CB_SERVER_CONTEXT_DESTRUCT = 2,
    960  LWS_EXT_CB_CLIENT_CONTEXT_DESTRUCT = 3,
    961  LWS_EXT_CB_CONSTRUCT = 4,
    962  LWS_EXT_CB_CLIENT_CONSTRUCT = 5,
    963  LWS_EXT_CB_CHECK_OK_TO_REALLY_CLOSE = 6,
    964  LWS_EXT_CB_CHECK_OK_TO_PROPOSE_EXTENSION = 7,
    965  LWS_EXT_CB_DESTROY = 8,
    966  LWS_EXT_CB_DESTROY_ANY_WSI_CLOSING = 9,
    967  LWS_EXT_CB_ANY_WSI_ESTABLISHED = 10,
    968  LWS_EXT_CB_PACKET_RX_PREPARSE = 11,
    969  LWS_EXT_CB_PACKET_TX_PRESEND = 12,
    970  LWS_EXT_CB_PACKET_TX_DO_SEND = 13,
    971  LWS_EXT_CB_HANDSHAKE_REPLY_TX = 14,
    972  LWS_EXT_CB_FLUSH_PENDING_TX = 15,
    973  LWS_EXT_CB_EXTENDED_PAYLOAD_RX = 16,
    974  LWS_EXT_CB_CAN_PROXY_CLIENT_CONNECTION = 17,
    975  LWS_EXT_CB_1HZ = 18,
    976  LWS_EXT_CB_REQUEST_ON_WRITEABLE = 19,
    977  LWS_EXT_CB_IS_WRITEABLE = 20,
    978  LWS_EXT_CB_PAYLOAD_TX = 21,
    979  LWS_EXT_CB_PAYLOAD_RX = 22,
    980  LWS_EXT_CB_OPTION_DEFAULT = 23,
    981  LWS_EXT_CB_OPTION_SET = 24,
    982  LWS_EXT_CB_OPTION_CONFIRM = 25,
    983  LWS_EXT_CB_NAMED_OPTION_SET = 26,
    984 
    985  /****** add new things just above ---^ ******/
    986 };
    987 
    994  /* Add new things just above here ---^
    995  * This is part of the ABI, don't needlessly break compatibility */
    996 };
    997 
    1003  const char *name;
    1006  /* Add new things just above here ---^
    1007  * This is part of the ABI, don't needlessly break compatibility */
    1008 };
    1009 
    1012  const char *option_name;
    1014  const char *start;
    1015  int len;
    1016 };
    1017 
    1078 typedef int
    1079 lws_extension_callback_function(struct lws_context *context,
    1080  const struct lws_extension *ext, struct lws *wsi,
    1081  enum lws_extension_callback_reasons reason,
    1082  void *user, void *in, size_t len);
    1083 
    1086  const char *name;
    1088  const char *client_offer;
    1090  /* Add new things just above here ---^
    1091  * This is part of the ABI, don't needlessly break compatibility */
    1092 };
    1093 
    1102 LWS_VISIBLE LWS_EXTERN int
    1103 lws_set_extension_option(struct lws *wsi, const char *ext_name,
    1104  const char *opt_name, const char *opt_val);
    1105 
    1106 #ifndef LWS_NO_EXTENSIONS
    1107 /* lws_get_internal_extensions() - DEPRECATED
    1108  *
    1109  * \Deprecated There is no longer a set internal extensions table. The table is provided
    1110  * by user code along with application-specific settings. See the test
    1111  * client and server for how to do.
    1112  */
    1113 static LWS_INLINE LWS_WARN_DEPRECATED const struct lws_extension *
    1114 lws_get_internal_extensions() { return NULL; }
    1115 
    1126 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    1127 lws_ext_parse_options(const struct lws_extension *ext, struct lws *wsi,
    1128  void *ext_user, const struct lws_ext_options *opts,
    1129  const char *o, int len);
    1130 #endif
    1131 
    1144 LWS_EXTERN
    1146  struct lws_context *context, const struct lws_extension *ext,
    1147  struct lws *wsi, enum lws_extension_callback_reasons reason,
    1148  void *user, void *in, size_t len);
    1149 
    1150 /*
    1151  * The internal exts are part of the public abi
    1152  * If we add more extensions, publish the callback here ------v
    1153  */
    1155 
    1171 
    1176  const char *name;
    1197  unsigned int id;
    1204  void *user;
    1207  /* Add new things just above here ---^
    1208  * This is part of the ABI, don't needlessly break compatibility */
    1209 };
    1210 
    1211 struct lws_vhost;
    1212 
    1221 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
    1222 lws_vhost_name_to_protocol(struct lws_vhost *vh, const char *name);
    1223 
    1233 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
    1234 lws_get_protocol(struct lws *wsi);
    1235 
    1237 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
    1238 lws_protocol_get(struct lws *wsi) LWS_WARN_DEPRECATED;
    1239 
    1250 LWS_VISIBLE LWS_EXTERN void *
    1251 lws_protocol_vh_priv_zalloc(struct lws_vhost *vhost, const struct lws_protocols *prot,
    1252  int size);
    1253 
    1263 LWS_VISIBLE LWS_EXTERN void *
    1264 lws_protocol_vh_priv_get(struct lws_vhost *vhost, const struct lws_protocols *prot);
    1265 
    1274 LWS_VISIBLE LWS_EXTERN int
    1275 lws_finalize_startup(struct lws_context *context);
    1276 
    1277 #ifdef LWS_WITH_PLUGINS
    1278 
    1279 /* PLUGINS implies LIBUV */
    1280 
    1281 #define LWS_PLUGIN_API_MAGIC 180
    1282 
    1285  unsigned int api_magic;
    1286  const struct lws_protocols *protocols;
    1288  const struct lws_extension *extensions;
    1290 };
    1291 
    1292 typedef int (*lws_plugin_init_func)(struct lws_context *,
    1293  struct lws_plugin_capability *);
    1294 typedef int (*lws_plugin_destroy_func)(struct lws_context *);
    1295 
    1297 struct lws_plugin {
    1298  struct lws_plugin *list;
    1299 #if (UV_VERSION_MAJOR > 0)
    1300  uv_lib_t lib;
    1301 #else
    1302  void *l;
    1303 #endif
    1304  char name[64];
    1306 };
    1307 
    1308 #endif
    1309 
    1311 
    1312 
    1321 
    1323 #define LWSGS_EMAIL_CONTENT_SIZE 16384
    1324 
    1326 /* SHA-1 binary and hexified versions */
    1328 typedef struct { unsigned char bin[20]; } lwsgw_hash_bin;
    1330 typedef struct { char id[41]; } lwsgw_hash;
    1331 
    1338 };
    1339 
    1342  char username[32];
    1343  char email[100];
    1344  char ip[72];
    1345  unsigned int mask;
    1347  char session[42];
    1348 };
    1349 
    1354 };
    1355 
    1358  enum lws_gs_event event;
    1359  const char *username;
    1360  const char *email;
    1361 };
    1362 
    1364 
    1365 
    1379 
    1381 /*
    1382  * NOTE: These public enums are part of the abi. If you want to add one,
    1383  * add it at where specified so existing users are unaffected.
    1384  */
    1385 
    1389  (1 << 12),
    1396  (1 << 12),
    1412  (1 << 12),
    1417  (1 << 3) |
    1418  (1 << 12),
    1436  /****** add new things just above ---^ ******/
    1437 };
    1438 
    1439 #define lws_check_opt(c, f) (((c) & (f)) == (f))
    1440 
    1451  int port;
    1456  const char *iface;
    1463  const struct lws_protocols *protocols;
    1467  const struct lws_extension *extensions;
    1475  const char *ssl_cert_filepath;
    1485  const char *ssl_ca_filepath;
    1487  const char *ssl_cipher_list;
    1491  const char *http_proxy_address;
    1494  unsigned int http_proxy_port;
    1496  int gid;
    1498  int uid;
    1500  unsigned int options;
    1502  void *user;
    1505  int ka_time;
    1515 #ifdef LWS_OPENSSL_SUPPORT
    1521 #else /* maintain structure layout either way */
    1523 #endif
    1524 
    1535  unsigned int count_threads;
    1537  unsigned int fd_limit_per_thread;
    1541  unsigned int timeout_secs;
    1546  const char *ecdh_curve;
    1548  const char *vhost_name;
    1552  const char * const *plugin_dirs;
    1561  const char *log_filepath;
    1564  const struct lws_http_mount *mounts;
    1566  const char *server_string;
    1569  unsigned int pt_serv_buf_size;
    1585  /* Add new things just above here ---^
    1586  * This is part of the ABI, don't needlessly break compatibility
    1587  *
    1588  * The below is to ensure later library versions with new
    1589  * members added above will see 0 (default) even if the app
    1590  * was not built against the newer headers.
    1591  */
    1592 
    1593  void *_unused[8];
    1594 };
    1595 
    1630 LWS_VISIBLE LWS_EXTERN struct lws_context *
    1632 
    1641 LWS_VISIBLE LWS_EXTERN void
    1642 lws_context_destroy(struct lws_context *context);
    1643 
    1661 LWS_VISIBLE LWS_EXTERN int
    1662 lws_set_proxy(struct lws_vhost *vhost, const char *proxy);
    1663 
    1664 
    1665 struct lws_vhost;
    1666 
    1676 LWS_EXTERN LWS_VISIBLE struct lws_vhost *
    1677 lws_create_vhost(struct lws_context *context,
    1678  struct lws_context_creation_info *info);
    1679 
    1694 LWS_VISIBLE LWS_EXTERN int
    1695 lwsws_get_config_globals(struct lws_context_creation_info *info, const char *d,
    1696  char **config_strings, int *len);
    1697 
    1713 LWS_VISIBLE LWS_EXTERN int
    1714 lwsws_get_config_vhosts(struct lws_context *context,
    1715  struct lws_context_creation_info *info, const char *d,
    1716  char **config_strings, int *len);
    1717 
    1719 LWS_VISIBLE LWS_EXTERN struct lws_vhost *
    1720 lws_vhost_get(struct lws *wsi) LWS_WARN_DEPRECATED;
    1721 
    1727 LWS_VISIBLE LWS_EXTERN struct lws_vhost *
    1728 lws_get_vhost(struct lws *wsi);
    1729 
    1737 LWS_VISIBLE LWS_EXTERN int
    1738 lws_json_dump_vhost(const struct lws_vhost *vh, char *buf, int len);
    1739 
    1747 LWS_VISIBLE LWS_EXTERN int
    1748 lws_json_dump_context(const struct lws_context *context, char *buf, int len);
    1749 
    1759 LWS_VISIBLE LWS_EXTERN void *
    1760 lws_context_user(struct lws_context *context);
    1761 
    1767 
    1777  const char *name;
    1778  const char *value;
    1779 };
    1780 
    1793 };
    1794 
    1802  const char *mountpoint;
    1804  const char *origin;
    1806  const char *def;
    1808  const char *protocol;
    1824  unsigned int auth_mask;
    1827  unsigned int cache_reusable:1;
    1828  unsigned int cache_revalidate:1;
    1829  unsigned int cache_intermediaries:1;
    1831  unsigned char origin_protocol;
    1832  unsigned char mountpoint_len;
    1833 };
    1836 
    1842 
    1848  struct lws_context *context;
    1850  const char *address;
    1852  int port;
    1856  const char *path;
    1858  const char *host;
    1860  const char *origin;
    1862  const char *protocol;
    1866  void *userdata;
    1870  const char *method;
    1873  struct lws *parent_wsi;
    1877  const char *uri_replace_from;
    1880  const char *uri_replace_to;
    1882  struct lws_vhost *vhost;
    1884  struct lws **pwsi;
    1896  /* Add new things just above here ---^
    1897  * This is part of the ABI, don't needlessly break compatibility
    1898  *
    1899  * The below is to ensure later library versions with new
    1900  * members added above will see 0 (default) even if the app
    1901  * was not built against the newer headers.
    1902  */
    1903 
    1904  void *_unused[4];
    1905 };
    1906 
    1914 LWS_VISIBLE LWS_EXTERN struct lws *
    1916 
    1937 /* deprecated, use lws_client_connect_via_info() */
    1938 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    1939 lws_client_connect(struct lws_context *clients, const char *address,
    1940  int port, int ssl_connection, const char *path,
    1941  const char *host, const char *origin, const char *protocol,
    1942  int ietf_version_or_minus_one) LWS_WARN_DEPRECATED;
    1943 /* deprecated, use lws_client_connect_via_info() */
    1964 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    1965 lws_client_connect_extended(struct lws_context *clients, const char *address,
    1966  int port, int ssl_connection, const char *path,
    1967  const char *host, const char *origin,
    1968  const char *protocol, int ietf_version_or_minus_one,
    1969  void *userdata) LWS_WARN_DEPRECATED;
    1970 
    1996 LWS_VISIBLE LWS_EXTERN int
    1998  struct lws_vhost *vhost);
    1999 
    2000 LWS_VISIBLE LWS_EXTERN int
    2001 lws_http_client_read(struct lws *wsi, char **buf, int *len);
    2003 
    2011 
    2044 LWS_VISIBLE LWS_EXTERN int
    2045 lws_service(struct lws_context *context, int timeout_ms);
    2046 
    2058 LWS_VISIBLE LWS_EXTERN int
    2059 lws_service_tsi(struct lws_context *context, int timeout_ms, int tsi);
    2060 
    2076 LWS_VISIBLE LWS_EXTERN void
    2077 lws_cancel_service_pt(struct lws *wsi);
    2078 
    2090 LWS_VISIBLE LWS_EXTERN void
    2091 lws_cancel_service(struct lws_context *context);
    2092 
    2115 LWS_VISIBLE LWS_EXTERN int
    2116 lws_service_fd(struct lws_context *context, struct lws_pollfd *pollfd);
    2117 
    2127 LWS_VISIBLE LWS_EXTERN int
    2128 lws_service_fd_tsi(struct lws_context *context, struct lws_pollfd *pollfd,
    2129  int tsi);
    2130 
    2132 
    2138 
    2145 
    2157 LWS_VISIBLE LWS_EXTERN const char *
    2158 lws_get_mimetype(const char *file, const struct lws_http_mount *m);
    2159 
    2178 LWS_VISIBLE LWS_EXTERN int
    2179 lws_serve_http_file(struct lws *wsi, const char *file, const char *content_type,
    2180  const char *other_headers, int other_headers_len);
    2181 LWS_VISIBLE LWS_EXTERN int
    2182 lws_serve_http_file_fragment(struct lws *wsi);
    2184 
    2195 
    2196 enum http_status {
    2197  HTTP_STATUS_OK = 200,
    2198  HTTP_STATUS_NO_CONTENT = 204,
    2199 
    2200  HTTP_STATUS_MOVED_PERMANENTLY = 301,
    2201  HTTP_STATUS_FOUND = 302,
    2202  HTTP_STATUS_SEE_OTHER = 303,
    2203 
    2204  HTTP_STATUS_BAD_REQUEST = 400,
    2205  HTTP_STATUS_UNAUTHORIZED,
    2206  HTTP_STATUS_PAYMENT_REQUIRED,
    2207  HTTP_STATUS_FORBIDDEN,
    2208  HTTP_STATUS_NOT_FOUND,
    2209  HTTP_STATUS_METHOD_NOT_ALLOWED,
    2210  HTTP_STATUS_NOT_ACCEPTABLE,
    2211  HTTP_STATUS_PROXY_AUTH_REQUIRED,
    2212  HTTP_STATUS_REQUEST_TIMEOUT,
    2213  HTTP_STATUS_CONFLICT,
    2214  HTTP_STATUS_GONE,
    2215  HTTP_STATUS_LENGTH_REQUIRED,
    2216  HTTP_STATUS_PRECONDITION_FAILED,
    2217  HTTP_STATUS_REQ_ENTITY_TOO_LARGE,
    2218  HTTP_STATUS_REQ_URI_TOO_LONG,
    2219  HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE,
    2220  HTTP_STATUS_REQ_RANGE_NOT_SATISFIABLE,
    2221  HTTP_STATUS_EXPECTATION_FAILED,
    2222 
    2223  HTTP_STATUS_INTERNAL_SERVER_ERROR = 500,
    2224  HTTP_STATUS_NOT_IMPLEMENTED,
    2225  HTTP_STATUS_BAD_GATEWAY,
    2226  HTTP_STATUS_SERVICE_UNAVAILABLE,
    2227  HTTP_STATUS_GATEWAY_TIMEOUT,
    2228  HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED,
    2229 };
    2230 
    2232  char *p;
    2233  int len;
    2234  int max_len;
    2235  int final;
    2236 };
    2237 
    2238 typedef const char *(*lws_process_html_state_cb)(void *data, int index);
    2239 
    2241  char *start;
    2242  char swallow[16];
    2243  int pos;
    2244  void *data;
    2245  const char * const *vars;
    2248  lws_process_html_state_cb replace;
    2249 };
    2250 
    2255 LWS_VISIBLE LWS_EXTERN int
    2257  struct lws_process_html_state *s);
    2259 
    2292 
    2300 struct lws_tokens {
    2301  char *token;
    2303 };
    2304 
    2305 /* enum lws_token_indexes
    2306  * these have to be kept in sync with lextable.h / minilex.c
    2307  *
    2308  * NOTE: These public enums are part of the abi. If you want to add one,
    2309  * add it at where specified so existing users are unaffected.
    2310  */
    2311 enum lws_token_indexes {
    2312  WSI_TOKEN_GET_URI = 0,
    2313  WSI_TOKEN_POST_URI = 1,
    2314  WSI_TOKEN_OPTIONS_URI = 2,
    2315  WSI_TOKEN_HOST = 3,
    2316  WSI_TOKEN_CONNECTION = 4,
    2317  WSI_TOKEN_UPGRADE = 5,
    2318  WSI_TOKEN_ORIGIN = 6,
    2319  WSI_TOKEN_DRAFT = 7,
    2320  WSI_TOKEN_CHALLENGE = 8,
    2321  WSI_TOKEN_EXTENSIONS = 9,
    2322  WSI_TOKEN_KEY1 = 10,
    2323  WSI_TOKEN_KEY2 = 11,
    2324  WSI_TOKEN_PROTOCOL = 12,
    2325  WSI_TOKEN_ACCEPT = 13,
    2326  WSI_TOKEN_NONCE = 14,
    2327  WSI_TOKEN_HTTP = 15,
    2328  WSI_TOKEN_HTTP2_SETTINGS = 16,
    2329  WSI_TOKEN_HTTP_ACCEPT = 17,
    2330  WSI_TOKEN_HTTP_AC_REQUEST_HEADERS = 18,
    2331  WSI_TOKEN_HTTP_IF_MODIFIED_SINCE = 19,
    2332  WSI_TOKEN_HTTP_IF_NONE_MATCH = 20,
    2333  WSI_TOKEN_HTTP_ACCEPT_ENCODING = 21,
    2334  WSI_TOKEN_HTTP_ACCEPT_LANGUAGE = 22,
    2335  WSI_TOKEN_HTTP_PRAGMA = 23,
    2336  WSI_TOKEN_HTTP_CACHE_CONTROL = 24,
    2337  WSI_TOKEN_HTTP_AUTHORIZATION = 25,
    2338  WSI_TOKEN_HTTP_COOKIE = 26,
    2339  WSI_TOKEN_HTTP_CONTENT_LENGTH = 27,
    2340  WSI_TOKEN_HTTP_CONTENT_TYPE = 28,
    2341  WSI_TOKEN_HTTP_DATE = 29,
    2342  WSI_TOKEN_HTTP_RANGE = 30,
    2343  WSI_TOKEN_HTTP_REFERER = 31,
    2344  WSI_TOKEN_KEY = 32,
    2345  WSI_TOKEN_VERSION = 33,
    2346  WSI_TOKEN_SWORIGIN = 34,
    2347 
    2348  WSI_TOKEN_HTTP_COLON_AUTHORITY = 35,
    2349  WSI_TOKEN_HTTP_COLON_METHOD = 36,
    2350  WSI_TOKEN_HTTP_COLON_PATH = 37,
    2351  WSI_TOKEN_HTTP_COLON_SCHEME = 38,
    2352  WSI_TOKEN_HTTP_COLON_STATUS = 39,
    2353 
    2354  WSI_TOKEN_HTTP_ACCEPT_CHARSET = 40,
    2355  WSI_TOKEN_HTTP_ACCEPT_RANGES = 41,
    2356  WSI_TOKEN_HTTP_ACCESS_CONTROL_ALLOW_ORIGIN = 42,
    2357  WSI_TOKEN_HTTP_AGE = 43,
    2358  WSI_TOKEN_HTTP_ALLOW = 44,
    2359  WSI_TOKEN_HTTP_CONTENT_DISPOSITION = 45,
    2360  WSI_TOKEN_HTTP_CONTENT_ENCODING = 46,
    2361  WSI_TOKEN_HTTP_CONTENT_LANGUAGE = 47,
    2362  WSI_TOKEN_HTTP_CONTENT_LOCATION = 48,
    2363  WSI_TOKEN_HTTP_CONTENT_RANGE = 49,
    2364  WSI_TOKEN_HTTP_ETAG = 50,
    2365  WSI_TOKEN_HTTP_EXPECT = 51,
    2366  WSI_TOKEN_HTTP_EXPIRES = 52,
    2367  WSI_TOKEN_HTTP_FROM = 53,
    2368  WSI_TOKEN_HTTP_IF_MATCH = 54,
    2369  WSI_TOKEN_HTTP_IF_RANGE = 55,
    2370  WSI_TOKEN_HTTP_IF_UNMODIFIED_SINCE = 56,
    2371  WSI_TOKEN_HTTP_LAST_MODIFIED = 57,
    2372  WSI_TOKEN_HTTP_LINK = 58,
    2373  WSI_TOKEN_HTTP_LOCATION = 59,
    2374  WSI_TOKEN_HTTP_MAX_FORWARDS = 60,
    2375  WSI_TOKEN_HTTP_PROXY_AUTHENTICATE = 61,
    2376  WSI_TOKEN_HTTP_PROXY_AUTHORIZATION = 62,
    2377  WSI_TOKEN_HTTP_REFRESH = 63,
    2378  WSI_TOKEN_HTTP_RETRY_AFTER = 64,
    2379  WSI_TOKEN_HTTP_SERVER = 65,
    2380  WSI_TOKEN_HTTP_SET_COOKIE = 66,
    2381  WSI_TOKEN_HTTP_STRICT_TRANSPORT_SECURITY = 67,
    2382  WSI_TOKEN_HTTP_TRANSFER_ENCODING = 68,
    2383  WSI_TOKEN_HTTP_USER_AGENT = 69,
    2384  WSI_TOKEN_HTTP_VARY = 70,
    2385  WSI_TOKEN_HTTP_VIA = 71,
    2386  WSI_TOKEN_HTTP_WWW_AUTHENTICATE = 72,
    2387 
    2388  WSI_TOKEN_PATCH_URI = 73,
    2389  WSI_TOKEN_PUT_URI = 74,
    2390  WSI_TOKEN_DELETE_URI = 75,
    2391 
    2392  WSI_TOKEN_HTTP_URI_ARGS = 76,
    2393  WSI_TOKEN_PROXY = 77,
    2394  WSI_TOKEN_HTTP_X_REAL_IP = 78,
    2395  WSI_TOKEN_HTTP1_0 = 79,
    2396 
    2397  /****** add new things just above ---^ ******/
    2398 
    2399  /* use token storage to stash these internally, not for
    2400  * user use */
    2401 
    2402  _WSI_TOKEN_CLIENT_SENT_PROTOCOLS,
    2403  _WSI_TOKEN_CLIENT_PEER_ADDRESS,
    2404  _WSI_TOKEN_CLIENT_URI,
    2405  _WSI_TOKEN_CLIENT_HOST,
    2406  _WSI_TOKEN_CLIENT_ORIGIN,
    2407  _WSI_TOKEN_CLIENT_METHOD,
    2408 
    2409  /* always last real token index*/
    2410  WSI_TOKEN_COUNT,
    2411 
    2412  /* parser state additions, no storage associated */
    2413  WSI_TOKEN_NAME_PART,
    2414  WSI_TOKEN_SKIPPING,
    2415  WSI_TOKEN_SKIPPING_SAW_CR,
    2416  WSI_PARSING_COMPLETE,
    2417  WSI_INIT_TOKEN_MUXURL,
    2418 };
    2419 
    2421  unsigned short token_limit[WSI_TOKEN_COUNT];
    2422 };
    2423 
    2429 LWS_VISIBLE LWS_EXTERN const unsigned char *
    2430 lws_token_to_string(enum lws_token_indexes token);
    2431 
    2432 
    2441 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2442 lws_hdr_total_length(struct lws *wsi, enum lws_token_indexes h);
    2443 
    2453 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2454 lws_hdr_fragment_length(struct lws *wsi, enum lws_token_indexes h, int frag_idx);
    2455 
    2469 LWS_VISIBLE LWS_EXTERN int
    2470 lws_hdr_copy(struct lws *wsi, char *dest, int len, enum lws_token_indexes h);
    2471 
    2489 LWS_VISIBLE LWS_EXTERN int
    2490 lws_hdr_copy_fragment(struct lws *wsi, char *dest, int len,
    2491  enum lws_token_indexes h, int frag_idx);
    2492 
    2503 LWS_VISIBLE LWS_EXTERN const char *
    2504 lws_get_urlarg_by_name(struct lws *wsi, const char *name, char *buf, int len);
    2506 
    2521 
    2532 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2533 lws_add_http_header_status(struct lws *wsi,
    2534  unsigned int code, unsigned char **p,
    2535  unsigned char *end);
    2548 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2549 lws_add_http_header_by_name(struct lws *wsi, const unsigned char *name,
    2550  const unsigned char *value, int length,
    2551  unsigned char **p, unsigned char *end);
    2565 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2566 lws_add_http_header_by_token(struct lws *wsi, enum lws_token_indexes token,
    2567  const unsigned char *value, int length,
    2568  unsigned char **p, unsigned char *end);
    2579 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2580 lws_add_http_header_content_length(struct lws *wsi,
    2581  unsigned long content_length,
    2582  unsigned char **p, unsigned char *end);
    2592 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2593 lws_finalize_http_header(struct lws *wsi, unsigned char **p,
    2594  unsigned char *end);
    2596 
    2615 
    2625 };
    2626 
    2640 typedef int (*lws_spa_fileupload_cb)(void *data, const char *name,
    2641  const char *filename, char *buf, int len,
    2642  enum lws_spa_fileupload_states state);
    2643 
    2646 struct lws_spa;
    2647 
    2666 LWS_VISIBLE LWS_EXTERN struct lws_spa *
    2667 lws_spa_create(struct lws *wsi, const char * const *param_names,
    2668  int count_params, int max_storage, lws_spa_fileupload_cb opt_cb,
    2669  void *opt_data);
    2670 
    2678 LWS_VISIBLE LWS_EXTERN int
    2679 lws_spa_process(struct lws_spa *spa, const char *in, int len);
    2680 
    2686 LWS_VISIBLE LWS_EXTERN int
    2687 lws_spa_finalize(struct lws_spa *spa);
    2688 
    2695 LWS_VISIBLE LWS_EXTERN int
    2696 lws_spa_get_length(struct lws_spa *spa, int n);
    2697 
    2703 LWS_VISIBLE LWS_EXTERN const char *
    2704 lws_spa_get_string(struct lws_spa *spa, int n);
    2705 
    2711 LWS_VISIBLE LWS_EXTERN int
    2712 lws_spa_destroy(struct lws_spa *spa);
    2714 
    2725 
    2736 LWS_VISIBLE LWS_EXTERN const char *
    2737 lws_urlencode(char *escaped, const char *string, int len);
    2738 
    2739 /*
    2740  * URLDECODE 1 / 2
    2741  *
    2742  * This simple urldecode only operates until the first '\0' and requires the
    2743  * data to exist all at once
    2744  */
    2757 LWS_VISIBLE LWS_EXTERN int
    2758 lws_urldecode(char *string, const char *escaped, int len);
    2760 
    2769 LWS_VISIBLE LWS_EXTERN int
    2770 lws_return_http_status(struct lws *wsi, unsigned int code,
    2771  const char *html_body);
    2772 
    2783 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2784 lws_http_redirect(struct lws *wsi, int code, const unsigned char *loc, int len,
    2785  unsigned char **p, unsigned char *end);
    2786 
    2795 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2796 lws_http_transaction_completed(struct lws *wsi);
    2798 
    2806 
    2817 LWS_VISIBLE LWS_EXTERN const char *
    2818 lws_sql_purify(char *escaped, const char *string, int len);
    2819 
    2830 LWS_VISIBLE LWS_EXTERN const char *
    2831 lws_json_purify(char *escaped, const char *string, int len);
    2833 
    2840 
    2842 #ifdef LWS_USE_LIBEV
    2843 typedef void (lws_ev_signal_cb_t)(EV_P_ struct ev_signal *w, int revents);
    2844 
    2845 LWS_VISIBLE LWS_EXTERN int
    2846 lws_ev_sigint_cfg(struct lws_context *context, int use_ev_sigint,
    2847  lws_ev_signal_cb_t *cb);
    2848 
    2849 LWS_VISIBLE LWS_EXTERN int
    2850 lws_ev_initloop(struct lws_context *context, struct ev_loop *loop, int tsi);
    2851 
    2852 LWS_VISIBLE LWS_EXTERN void
    2853 lws_ev_sigint_cb(struct ev_loop *loop, struct ev_signal *watcher, int revents);
    2854 #endif /* LWS_USE_LIBEV */
    2855 
    2857 
    2864 #ifdef LWS_USE_LIBUV
    2866 LWS_VISIBLE LWS_EXTERN int
    2867 lws_uv_sigint_cfg(struct lws_context *context, int use_uv_sigint,
    2868  uv_signal_cb cb);
    2869 
    2870 LWS_VISIBLE LWS_EXTERN void
    2871 lws_libuv_run(const struct lws_context *context, int tsi);
    2872 
    2873 LWS_VISIBLE LWS_EXTERN void
    2874 lws_libuv_stop(struct lws_context *context);
    2875 
    2876 LWS_VISIBLE LWS_EXTERN int
    2877 lws_uv_initloop(struct lws_context *context, uv_loop_t *loop, int tsi);
    2878 
    2879 LWS_VISIBLE LWS_EXTERN uv_loop_t *
    2880 lws_uv_getloop(struct lws_context *context, int tsi);
    2881 
    2882 LWS_VISIBLE LWS_EXTERN void
    2883 lws_uv_sigint_cb(uv_signal_t *watcher, int signum);
    2884 #endif /* LWS_USE_LIBUV */
    2885 
    2892 
    2893 /*
    2894  * NOTE: These public enums are part of the abi. If you want to add one,
    2895  * add it at where specified so existing users are unaffected.
    2896  */
    2897 enum pending_timeout {
    2898  NO_PENDING_TIMEOUT = 0,
    2899  PENDING_TIMEOUT_AWAITING_PROXY_RESPONSE = 1,
    2900  PENDING_TIMEOUT_AWAITING_CONNECT_RESPONSE = 2,
    2901  PENDING_TIMEOUT_ESTABLISH_WITH_SERVER = 3,
    2902  PENDING_TIMEOUT_AWAITING_SERVER_RESPONSE = 4,
    2903  PENDING_TIMEOUT_AWAITING_PING = 5,
    2904  PENDING_TIMEOUT_CLOSE_ACK = 6,
    2905  PENDING_TIMEOUT_AWAITING_EXTENSION_CONNECT_RESPONSE = 7,
    2906  PENDING_TIMEOUT_SENT_CLIENT_HANDSHAKE = 8,
    2907  PENDING_TIMEOUT_SSL_ACCEPT = 9,
    2908  PENDING_TIMEOUT_HTTP_CONTENT = 10,
    2909  PENDING_TIMEOUT_AWAITING_CLIENT_HS_SEND = 11,
    2910  PENDING_FLUSH_STORED_SEND_BEFORE_CLOSE = 12,
    2911  PENDING_TIMEOUT_SHUTDOWN_FLUSH = 13,
    2912  PENDING_TIMEOUT_CGI = 14,
    2913  PENDING_TIMEOUT_HTTP_KEEPALIVE_IDLE = 15,
    2914 
    2915  /****** add new things just above ---^ ******/
    2916 };
    2917 
    2927 LWS_VISIBLE LWS_EXTERN void
    2928 lws_set_timeout(struct lws *wsi, enum pending_timeout reason, int secs);
    2930 
    2936 #if !defined(LWS_SIZEOFPTR)
    2937 #define LWS_SIZEOFPTR (sizeof (void *))
    2938 #endif
    2939 #if !defined(u_int64_t)
    2940 #define u_int64_t unsigned long long
    2941 #endif
    2942 
    2943 #if defined(__x86_64__)
    2944 #define _LWS_PAD_SIZE 16 /* Intel recommended for best performance */
    2945 #else
    2946 #define _LWS_PAD_SIZE LWS_SIZEOFPTR /* Size of a pointer on the target arch */
    2947 #endif
    2948 #define _LWS_PAD(n) (((n) % _LWS_PAD_SIZE) ? \
    2949  ((n) + (_LWS_PAD_SIZE - ((n) % _LWS_PAD_SIZE))) : (n))
    2950 #define LWS_PRE _LWS_PAD(4 + 10)
    2951 /* used prior to 1.7 and retained for backward compatibility */
    2952 #define LWS_SEND_BUFFER_PRE_PADDING LWS_PRE
    2953 #define LWS_SEND_BUFFER_POST_PADDING 0
    2954 
    2955 /*
    2956  * NOTE: These public enums are part of the abi. If you want to add one,
    2957  * add it at where specified so existing users are unaffected.
    2958  */
    2973  /* LWS_WRITE_CLOSE is handled by lws_close_reason() */
    2974  LWS_WRITE_PING = 5,
    2975  LWS_WRITE_PONG = 6,
    2976 
    2977  /* Same as write_http but we know this write ends the transaction */
    2978  LWS_WRITE_HTTP_FINAL = 7,
    2979 
    2980  /* HTTP2 */
    2981 
    2989  /****** add new things just above ---^ ******/
    2990 
    2991  /* flags */
    2992 
    3000 };
    3001 
    3002 
    3074 LWS_VISIBLE LWS_EXTERN int
    3075 lws_write(struct lws *wsi, unsigned char *buf, size_t len,
    3076  enum lws_write_protocol protocol);
    3077 
    3078 /* helper for case where buffer may be const */
    3079 #define lws_write_http(wsi, buf, len) \
    3080  lws_write(wsi, (unsigned char *)(buf), len, LWS_WRITE_HTTP)
    3081 
    3083 
    3102 
    3115 LWS_VISIBLE LWS_EXTERN int
    3116 lws_callback_on_writable(struct lws *wsi);
    3117 
    3131 LWS_VISIBLE LWS_EXTERN int
    3132 lws_callback_on_writable_all_protocol(const struct lws_context *context,
    3133  const struct lws_protocols *protocol);
    3134 
    3148 LWS_VISIBLE LWS_EXTERN int
    3149 lws_callback_on_writable_all_protocol_vhost(const struct lws_vhost *vhost,
    3150  const struct lws_protocols *protocol);
    3151 
    3164 LWS_VISIBLE LWS_EXTERN int
    3165 lws_callback_all_protocol(struct lws_context *context,
    3166  const struct lws_protocols *protocol, int reason);
    3167 
    3180 LWS_VISIBLE LWS_EXTERN int
    3181 lws_callback_all_protocol_vhost(struct lws_vhost *vh,
    3182  const struct lws_protocols *protocol, int reason);
    3183 
    3197 LWS_VISIBLE LWS_EXTERN int
    3198 lws_callback_vhost_protocols(struct lws *wsi, int reason, void *in, int len);
    3199 
    3207 LWS_VISIBLE LWS_EXTERN int
    3208 lws_get_socket_fd(struct lws *wsi);
    3209 
    3231 LWS_VISIBLE LWS_EXTERN size_t
    3232 lws_get_peer_write_allowance(struct lws *wsi);
    3234 
    3245 LWS_VISIBLE LWS_EXTERN int
    3246 lws_rx_flow_control(struct lws *wsi, int enable);
    3247 
    3257 LWS_VISIBLE LWS_EXTERN void
    3258 lws_rx_flow_allow_all_protocol(const struct lws_context *context,
    3259  const struct lws_protocols *protocol);
    3260 
    3277 LWS_VISIBLE LWS_EXTERN size_t
    3278 lws_remaining_packet_payload(struct lws *wsi);
    3279 
    3280 
    3289 
    3302 LWS_VISIBLE LWS_EXTERN struct lws *
    3303 lws_adopt_socket(struct lws_context *context, lws_sockfd_type accept_fd);
    3326 LWS_VISIBLE LWS_EXTERN struct lws *
    3327 lws_adopt_socket_readbuf(struct lws_context *context, lws_sockfd_type accept_fd,
    3328  const char *readbuf, size_t len);
    3330 
    3336 
    3347 LWS_VISIBLE LWS_EXTERN const char * LWS_WARN_UNUSED_RESULT
    3348 lws_canonical_hostname(struct lws_context *context);
    3349 
    3364 LWS_VISIBLE LWS_EXTERN void
    3365 lws_get_peer_addresses(struct lws *wsi, lws_sockfd_type fd, char *name,
    3366  int name_len, char *rip, int rip_len);
    3367 
    3378 LWS_VISIBLE LWS_EXTERN const char *
    3379 lws_get_peer_simple(struct lws *wsi, char *name, int namelen);
    3380 
    3392 LWS_VISIBLE LWS_EXTERN int
    3393 lws_interface_to_sa(int ipv6, const char *ifname, struct sockaddr_in *addr,
    3394  size_t addrlen);
    3396 
    3402 
    3415 LWS_VISIBLE LWS_EXTERN int
    3416 lws_get_random(struct lws_context *context, void *buf, int len);
    3424 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3425 lws_daemonize(const char *_lock_path);
    3431 LWS_VISIBLE LWS_EXTERN const char * LWS_WARN_UNUSED_RESULT
    3433 
    3440 LWS_VISIBLE LWS_EXTERN void *
    3441 lws_wsi_user(struct lws *wsi);
    3442 
    3454 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3455 lws_parse_uri(char *p, const char **prot, const char **ads, int *port,
    3456  const char **path);
    3457 
    3461 LWS_VISIBLE LWS_EXTERN unsigned long
    3462 lws_now_secs(void);
    3463 
    3473 LWS_VISIBLE LWS_EXTERN struct lws_context * LWS_WARN_UNUSED_RESULT
    3474 lws_get_context(const struct lws *wsi);
    3475 
    3485 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3486 lws_get_count_threads(struct lws_context *context);
    3487 
    3495 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    3496 lws_get_parent(const struct lws *wsi);
    3497 
    3504 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    3505 lws_get_child(const struct lws *wsi);
    3506 
    3507 
    3508 /*
    3509  * \deprecated DEPRECATED Note: this is not normally needed as a user api.
    3510  * It's provided in case it is
    3511  * useful when integrating with other app poll loop service code.
    3512  */
    3513 LWS_VISIBLE LWS_EXTERN int
    3514 lws_read(struct lws *wsi, unsigned char *buf, size_t len);
    3515 
    3523 LWS_VISIBLE LWS_EXTERN void
    3524 lws_set_allocator(void *(*realloc)(void *ptr, size_t size));
    3526 
    3532 
    3539 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3540 lws_send_pipe_choked(struct lws *wsi);
    3541 
    3546 LWS_VISIBLE LWS_EXTERN int
    3547 lws_is_final_fragment(struct lws *wsi);
    3548 
    3553 LWS_VISIBLE LWS_EXTERN unsigned char
    3554 lws_get_reserved_bits(struct lws *wsi);
    3555 
    3572 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3573 lws_partial_buffered(struct lws *wsi);
    3574 
    3584 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3585 lws_frame_is_binary(struct lws *wsi);
    3586 
    3595 LWS_VISIBLE LWS_EXTERN int
    3596 lws_is_ssl(struct lws *wsi);
    3601 LWS_VISIBLE LWS_EXTERN int
    3602 lws_is_cgi(struct lws *wsi);
    3604 
    3605 
    3611 #ifdef LWS_SHA1_USE_OPENSSL_NAME
    3613 #define lws_SHA1 SHA1
    3614 #else
    3615 
    3624 LWS_VISIBLE LWS_EXTERN unsigned char *
    3625 lws_SHA1(const unsigned char *d, size_t n, unsigned char *md);
    3626 #endif
    3627 
    3637 LWS_VISIBLE LWS_EXTERN int
    3638 lws_b64_encode_string(const char *in, int in_len, char *out, int out_size);
    3648 LWS_VISIBLE LWS_EXTERN int
    3649 lws_b64_decode_string(const char *in, char *out, int out_size);
    3651 
    3652 
    3662 #ifdef LWS_WITH_CGI
    3663 enum lws_enum_stdinouterr {
    3664  LWS_STDIN = 0,
    3665  LWS_STDOUT = 1,
    3666  LWS_STDERR = 2,
    3667 };
    3668 
    3669 enum lws_cgi_hdr_state {
    3670  LCHS_HEADER,
    3671  LCHS_CR1,
    3672  LCHS_LF1,
    3673  LCHS_CR2,
    3674  LCHS_LF2,
    3675  LHCS_PAYLOAD,
    3676  LCHS_SINGLE_0A,
    3677 };
    3678 
    3680  struct lws **stdwsi;
    3681  enum lws_enum_stdinouterr ch;
    3682  unsigned char *data;
    3683  enum lws_cgi_hdr_state hdr_state;
    3684  int len;
    3685 };
    3686 
    3687 
    3697 LWS_VISIBLE LWS_EXTERN int
    3698 lws_cgi(struct lws *wsi, const char * const *exec_array,
    3699  int script_uri_path_len, int timeout_secs,
    3700  const struct lws_protocol_vhost_options *mp_cgienv);
    3701 
    3707 LWS_VISIBLE LWS_EXTERN int
    3708 lws_cgi_write_split_stdout_headers(struct lws *wsi);
    3709 
    3715 LWS_VISIBLE LWS_EXTERN int
    3716 lws_cgi_kill(struct lws *wsi);
    3717 #endif
    3718 
    3720 
    3737 
    3744  lws_filefd_type (*open)(struct lws *wsi, const char *filename,
    3745  unsigned long *filelen, int flags);
    3749  int (*close)(struct lws *wsi, lws_filefd_type fd);
    3751  unsigned long (*seek_cur)(struct lws *wsi, lws_filefd_type fd,
    3752  long offset_from_cur_pos);
    3754  int (*read)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    3755  unsigned char *buf, unsigned long len);
    3757  int (*write)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    3758  unsigned char *buf, unsigned long len);
    3761  /* Add new things just above here ---^
    3762  * This is part of the ABI, don't needlessly break compatibility */
    3763 };
    3764 
    3770 LWS_VISIBLE LWS_EXTERN struct lws_plat_file_ops * LWS_WARN_UNUSED_RESULT
    3771 lws_get_fops(struct lws_context *context);
    3772 
    3781 static LWS_INLINE lws_filefd_type LWS_WARN_UNUSED_RESULT
    3782 lws_plat_file_open(struct lws *wsi, const char *filename,
    3783  unsigned long *filelen, int flags)
    3784 {
    3785  return lws_get_fops(lws_get_context(wsi))->open(wsi, filename,
    3786  filelen, flags);
    3787 }
    3788 
    3795 static LWS_INLINE int
    3796 lws_plat_file_close(struct lws *wsi, lws_filefd_type fd)
    3797 {
    3798  return lws_get_fops(lws_get_context(wsi))->close(wsi, fd);
    3799 }
    3800 
    3808 static LWS_INLINE unsigned long
    3809 lws_plat_file_seek_cur(struct lws *wsi, lws_filefd_type fd, long offset)
    3810 {
    3811  return lws_get_fops(lws_get_context(wsi))->seek_cur(wsi, fd, offset);
    3812 }
    3822 static LWS_INLINE int LWS_WARN_UNUSED_RESULT
    3823 lws_plat_file_read(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    3824  unsigned char *buf, unsigned long len)
    3825 {
    3826  return lws_get_fops(lws_get_context(wsi))->read(wsi, fd, amount, buf,
    3827  len);
    3828 }
    3838 static LWS_INLINE int LWS_WARN_UNUSED_RESULT
    3839 lws_plat_file_write(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    3840  unsigned char *buf, unsigned long len)
    3841 {
    3842  return lws_get_fops(lws_get_context(wsi))->write(wsi, fd, amount, buf,
    3843  len);
    3844 }
    3846 
    3878 #ifdef LWS_WITH_SMTP
    3879 
    3891 };
    3892 
    3894 struct lws_email {
    3895  void *data;
    3897  uv_loop_t *loop;
    3900  char email_smtp_ip[32];
    3901  char email_helo[32];
    3902  char email_from[100];
    3903  char email_to[100];
    3905  unsigned int max_content_size;
    3908  /* Fill all the callbacks before init */
    3909 
    3910  int (*on_next)(struct lws_email *email);
    3915  int (*on_sent)(struct lws_email *email);
    3920  int (*on_get_body)(struct lws_email *email, char *buf, int len);
    3926  /* private things */
    3927  uv_timer_t timeout_email;
    3929  uv_connect_t email_connect_req;
    3930  uv_tcp_t email_client;
    3932  char email_buf[256];
    3933  char *content;
    3934 };
    3935 
    3945 LWS_VISIBLE LWS_EXTERN int
    3946 lws_email_init(struct lws_email *email, uv_loop_t *loop, int max_content);
    3947 
    3956 LWS_VISIBLE LWS_EXTERN void
    3957 lws_email_check(struct lws_email *email);
    3965 LWS_VISIBLE LWS_EXTERN void
    3966 lws_email_destroy(struct lws_email *email);
    3967 
    3968 #endif
    3969 
    3970 
    3971 #ifdef __cplusplus
    3972 }
    3973 #endif
    3974 
    3975 #endif
    LWS_VISIBLE LWS_EXTERN int lws_spa_destroy(struct lws_spa *spa)
    +Go to the documentation of this file.
    1 /*
    2  * libwebsockets - small server side websockets and web server implementation
    3  *
    4  * Copyright (C) 2010-2016 Andy Green <andy@warmcat.com>
    5  *
    6  * This library is free software; you can redistribute it and/or
    7  * modify it under the terms of the GNU Lesser General Public
    8  * License as published by the Free Software Foundation:
    9  * version 2.1 of the License.
    10  *
    11  * This library is distributed in the hope that it will be useful,
    12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
    13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    14  * Lesser General Public License for more details.
    15  *
    16  * You should have received a copy of the GNU Lesser General Public
    17  * License along with this library; if not, write to the Free Software
    18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
    19  * MA 02110-1301 USA
    20  */
    21 
    24 #ifndef LIBWEBSOCKET_H_3060898B846849FF9F88F5DB59B5950C
    25 #define LIBWEBSOCKET_H_3060898B846849FF9F88F5DB59B5950C
    26 
    27 #ifdef __cplusplus
    28 #include <cstddef>
    29 #include <cstdarg>
    30 #ifdef MBED_OPERATORS
    31 #include "mbed-drivers/mbed.h"
    32 #include "sal-iface-eth/EthernetInterface.h"
    33 #include "sockets/TCPListener.h"
    34 #include "sal-stack-lwip/lwipv4_init.h"
    35 
    36 namespace {
    37 }
    38 using namespace mbed::Sockets::v0;
    39 
    40 
    41 struct sockaddr_in;
    42 struct lws;
    43 
    44 class lws_conn {
    45  public:
    46  lws_conn():
    47  ts(NULL),
    48  wsi(NULL),
    49  writeable(1),
    50  awaiting_on_writeable(0)
    51  {
    52  }
    53 
    54 public:
    55  void set_wsi(struct lws *_wsi) { wsi = _wsi; }
    56  int actual_onRX(Socket *s);
    57  void onRX(Socket *s);
    58  void onError(Socket *s, socket_error_t err);
    59  void onDisconnect(TCPStream *s);
    60  void onSent(Socket *s, uint16_t len);
    61  void serialized_writeable(struct lws *wsi);
    62 
    63 public:
    64  TCPStream *ts;
    65 
    66 public:
    67  struct lws *wsi;
    68  char writeable;
    69  char awaiting_on_writeable;
    70 };
    71 
    73 public:
    75  srv(SOCKET_STACK_LWIP_IPV4)
    76  {
    77  srv.setOnError(TCPStream::ErrorHandler_t(this,
    79  }
    80 
    81  void start(const uint16_t port);
    83 protected:
    84  void onRX(Socket *s);
    85  void onError(Socket *s, socket_error_t err);
    86  void onIncoming(TCPListener *s, void *impl);
    87  void onDisconnect(TCPStream *s);
    89 public:
    90  TCPListener srv;
    91 };
    92 
    93 #endif
    94 
    95 extern "C" {
    96 #else
    97 #include <stdarg.h>
    98 #endif
    99 
    100 #ifdef MBED_OPERATORS
    101 struct sockaddr_in;
    102 #define LWS_POSIX 0
    103 #else
    104 #define LWS_POSIX 1
    105 #endif
    106 
    107 #include "lws_config.h"
    108 
    109 #if defined(WIN32) || defined(_WIN32)
    110 #ifndef WIN32_LEAN_AND_MEAN
    111 #define WIN32_LEAN_AND_MEAN
    112 #endif
    113 
    114 #include <winsock2.h>
    115 #include <ws2tcpip.h>
    116 #include <stddef.h>
    117 #include <basetsd.h>
    118 #ifndef _WIN32_WCE
    119 #include <stdint.h>
    120 #include <fcntl.h>
    121 #else
    122 #define _O_RDONLY 0x0000
    123 #define O_RDONLY _O_RDONLY
    124 #endif
    125 
    126 // Visual studio older than 2015 and WIN_CE has only _stricmp
    127 #if (defined(_MSC_VER) && _MSC_VER < 1900) || defined(_WIN32_WCE)
    128 #define strcasecmp _stricmp
    129 #else
    130 #define strcasecmp stricmp
    131 #endif
    132 #define getdtablesize() 30000
    133 
    134 #define LWS_INLINE __inline
    135 #define LWS_VISIBLE
    136 #define LWS_WARN_UNUSED_RESULT
    137 #define LWS_WARN_DEPRECATED
    138 
    139 #ifdef LWS_DLL
    140 #ifdef LWS_INTERNAL
    141 #define LWS_EXTERN extern __declspec(dllexport)
    142 #else
    143 #define LWS_EXTERN extern __declspec(dllimport)
    144 #endif
    145 #else
    146 #define LWS_EXTERN
    147 #endif
    148 
    149 #define LWS_INVALID_FILE INVALID_HANDLE_VALUE
    150 #define LWS_O_RDONLY _O_RDONLY
    151 
    152 #if !defined(_MSC_VER) || _MSC_VER < 1900 /* Visual Studio 2015 already defines this in <stdio.h> */
    153 #define snprintf _snprintf
    154 #endif
    155 
    156 #ifndef __func__
    157 #define __func__ __FUNCTION__
    158 #endif
    159 
    160 #else /* NOT WIN32 */
    161 #include <unistd.h>
    162 
    163 #if defined(__NetBSD__) || defined(__FreeBSD__)
    164 #include <netinet/in.h>
    165 #endif
    166 
    167 #define LWS_INLINE inline
    168 #define LWS_O_RDONLY O_RDONLY
    169 
    170 #ifndef MBED_OPERATORS
    171 #include <poll.h>
    172 #include <netdb.h>
    173 #define LWS_INVALID_FILE -1
    174 #else
    175 #define getdtablesize() (20)
    176 #define LWS_INVALID_FILE NULL
    177 #endif
    178 
    179 #if defined(__GNUC__)
    180 
    181 /* warn_unused_result attribute only supported by GCC 3.4 or later */
    182 #if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
    183 #define LWS_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
    184 #else
    185 #define LWS_WARN_UNUSED_RESULT
    186 #endif
    187 
    188 #define LWS_VISIBLE __attribute__((visibility("default")))
    189 #define LWS_WARN_DEPRECATED __attribute__ ((deprecated))
    190 #else
    191 #define LWS_VISIBLE
    192 #define LWS_WARN_UNUSED_RESULT
    193 #define LWS_WARN_DEPRECATED
    194 #endif
    195 
    196 #if defined(__ANDROID__)
    197 #include <unistd.h>
    198 #define getdtablesize() sysconf(_SC_OPEN_MAX)
    199 #endif
    200 
    201 #endif
    202 
    203 #ifdef LWS_USE_LIBEV
    204 #include <ev.h>
    205 #endif /* LWS_USE_LIBEV */
    206 #ifdef LWS_USE_LIBUV
    207 #include <uv.h>
    208 #endif /* LWS_USE_LIBUV */
    209 
    210 #ifndef LWS_EXTERN
    211 #define LWS_EXTERN extern
    212 #endif
    213 
    214 #ifdef _WIN32
    215 #define random rand
    216 #else
    217 #include <sys/time.h>
    218 #include <unistd.h>
    219 #endif
    220 
    221 #ifdef LWS_OPENSSL_SUPPORT
    222 
    223 #ifdef USE_WOLFSSL
    224 #ifdef USE_OLD_CYASSL
    225 #include <cyassl/openssl/ssl.h>
    226 #include <cyassl/error-ssl.h>
    227 #else
    228 #include <wolfssl/openssl/ssl.h>
    229 #include <wolfssl/error-ssl.h>
    230 #endif /* not USE_OLD_CYASSL */
    231 #else
    232 #if defined(LWS_USE_POLARSSL)
    233 #include <polarssl/ssl.h>
    235  x509_crt ca;
    236  x509_crt certificate;
    237  rsa_context key;
    238 };
    239 typedef struct lws_polarssl_context SSL_CTX;
    240 typedef ssl_context SSL;
    241 #else
    242 #if defined(LWS_USE_MBEDTLS)
    243 #include <mbedtls/ssl.h>
    244 #else
    245 #include <openssl/ssl.h>
    246 #include <openssl/err.h>
    247 #endif /* not USE_MBEDTLS */
    248 #endif /* not USE_POLARSSL */
    249 #endif /* not USE_WOLFSSL */
    250 #endif
    251 
    252 
    253 #define CONTEXT_PORT_NO_LISTEN -1
    254 
    265 
    267 enum lws_log_levels {
    268  LLL_ERR = 1 << 0,
    269  LLL_WARN = 1 << 1,
    270  LLL_NOTICE = 1 << 2,
    271  LLL_INFO = 1 << 3,
    272  LLL_DEBUG = 1 << 4,
    273  LLL_PARSER = 1 << 5,
    274  LLL_HEADER = 1 << 6,
    275  LLL_EXT = 1 << 7,
    276  LLL_CLIENT = 1 << 8,
    277  LLL_LATENCY = 1 << 9,
    278 
    279  LLL_COUNT = 10 /* set to count of valid flags */
    280 };
    281 
    282 LWS_VISIBLE LWS_EXTERN void _lws_log(int filter, const char *format, ...);
    283 LWS_VISIBLE LWS_EXTERN void _lws_logv(int filter, const char *format, va_list vl);
    293 LWS_VISIBLE LWS_EXTERN int
    294 lwsl_timestamp(int level, char *p, int len);
    295 
    296 /* notice, warn and log are always compiled in */
    297 #define lwsl_notice(...) _lws_log(LLL_NOTICE, __VA_ARGS__)
    298 #define lwsl_warn(...) _lws_log(LLL_WARN, __VA_ARGS__)
    299 #define lwsl_err(...) _lws_log(LLL_ERR, __VA_ARGS__)
    300 /*
    301  * weaker logging can be deselected at configure time using --disable-debug
    302  * that gets rid of the overhead of checking while keeping _warn and _err
    303  * active
    304  */
    305 #ifdef _DEBUG
    306 
    307 #define lwsl_info(...) _lws_log(LLL_INFO, __VA_ARGS__)
    308 #define lwsl_debug(...) _lws_log(LLL_DEBUG, __VA_ARGS__)
    309 #define lwsl_parser(...) _lws_log(LLL_PARSER, __VA_ARGS__)
    310 #define lwsl_header(...) _lws_log(LLL_HEADER, __VA_ARGS__)
    311 #define lwsl_ext(...) _lws_log(LLL_EXT, __VA_ARGS__)
    312 #define lwsl_client(...) _lws_log(LLL_CLIENT, __VA_ARGS__)
    313 #define lwsl_latency(...) _lws_log(LLL_LATENCY, __VA_ARGS__)
    314 
    320 LWS_VISIBLE LWS_EXTERN void lwsl_hexdump(void *buf, size_t len);
    321 
    322 #else /* no debug */
    323 
    324 #define lwsl_info(...) {}
    325 #define lwsl_debug(...) {}
    326 #define lwsl_parser(...) {}
    327 #define lwsl_header(...) {}
    328 #define lwsl_ext(...) {}
    329 #define lwsl_client(...) {}
    330 #define lwsl_latency(...) {}
    331 #define lwsl_hexdump(a, b)
    332 
    333 #endif
    334 
    345 LWS_VISIBLE LWS_EXTERN void
    346 lws_set_log_level(int level,
    347  void (*log_emit_function)(int level, const char *line));
    348 
    358 LWS_VISIBLE LWS_EXTERN void
    359 lwsl_emit_syslog(int level, const char *line);
    360 
    362 
    363 
    364 #include <stddef.h>
    365 
    366 #ifndef lws_container_of
    367 #define lws_container_of(P,T,M) ((T *)((char *)(P) - offsetof(T, M)))
    368 #endif
    369 
    370 
    371 struct lws;
    372 #ifndef ARRAY_SIZE
    373 #define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
    374 #endif
    375 
    376 /* api change list for user code to test against */
    377 
    378 #define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_ARG
    379 
    380 /* the struct lws_protocols has the id field present */
    381 #define LWS_FEATURE_PROTOCOLS_HAS_ID_FIELD
    382 
    383 /* you can call lws_get_peer_write_allowance */
    384 #define LWS_FEATURE_PROTOCOLS_HAS_PEER_WRITE_ALLOWANCE
    385 
    386 /* extra parameter introduced in 917f43ab821 */
    387 #define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_LEN
    388 
    389 /* File operations stuff exists */
    390 #define LWS_FEATURE_FOPS
    391 
    392 
    393 #if defined(_WIN32)
    394 typedef SOCKET lws_sockfd_type;
    395 typedef HANDLE lws_filefd_type;
    396 #define lws_sockfd_valid(sfd) (!!sfd)
    397 struct lws_pollfd {
    398  lws_sockfd_type fd;
    399  SHORT events;
    400  SHORT revents;
    401 };
    402 #else
    403 
    404 #if defined(MBED_OPERATORS)
    405 /* it's a class lws_conn * */
    406 typedef void * lws_sockfd_type;
    407 typedef void * lws_filefd_type;
    408 #define lws_sockfd_valid(sfd) (!!sfd)
    409 struct pollfd {
    410  lws_sockfd_type fd;
    411  short events;
    412  short revents;
    413 };
    414 #define POLLIN 0x0001
    415 #define POLLPRI 0x0002
    416 #define POLLOUT 0x0004
    417 #define POLLERR 0x0008
    418 #define POLLHUP 0x0010
    419 #define POLLNVAL 0x0020
    420 
    421 struct lws;
    422 
    423 void * mbed3_create_tcp_stream_socket(void);
    424 void mbed3_delete_tcp_stream_socket(void *sockfd);
    425 void mbed3_tcp_stream_bind(void *sock, int port, struct lws *);
    426 void mbed3_tcp_stream_accept(void *sock, struct lws *);
    427 #else
    428 typedef int lws_sockfd_type;
    429 typedef int lws_filefd_type;
    430 #define lws_sockfd_valid(sfd) (sfd >= 0)
    431 #endif
    432 
    433 #define lws_pollfd pollfd
    434 #endif
    435 
    438 struct lws_pollargs {
    439  lws_sockfd_type fd;
    440  int events;
    442 };
    443 
    444 struct lws_tokens;
    445 struct lws_token_limits;
    446 
    454 
    456 /*
    457  * NOTE: These public enums are part of the abi. If you want to add one,
    458  * add it at where specified so existing users are unaffected.
    459  */
    462  LWS_CLOSE_STATUS_NOSTATUS = 0,
    524  /****** add new things just above ---^ ******/
    525 
    526  LWS_CLOSE_STATUS_NOSTATUS_CONTEXT_DESTROY = 9999,
    527 };
    528 
    541 LWS_VISIBLE LWS_EXTERN void
    542 lws_close_reason(struct lws *wsi, enum lws_close_status status,
    543  unsigned char *buf, size_t len);
    544 
    546 
    547 struct lws;
    548 struct lws_context;
    549 /* needed even with extensions disabled for create context */
    550 struct lws_extension;
    551 
    563 
    565 
    566 /*
    567  * NOTE: These public enums are part of the abi. If you want to add one,
    568  * add it at where specified so existing users are unaffected.
    569  */
    813  /* external poll() management support */
    876  LWS_CALLBACK_WS_EXT_DEFAULTS = 39,
    879  LWS_CALLBACK_CGI = 40,
    881  LWS_CALLBACK_CGI_TERMINATED = 41,
    883  LWS_CALLBACK_CGI_STDIN_DATA = 42,
    885  LWS_CALLBACK_CGI_STDIN_COMPLETED = 43,
    887  LWS_CALLBACK_ESTABLISHED_CLIENT_HTTP = 44,
    889  LWS_CALLBACK_CLOSED_CLIENT_HTTP = 45,
    891  LWS_CALLBACK_RECEIVE_CLIENT_HTTP = 46,
    893  LWS_CALLBACK_COMPLETED_CLIENT_HTTP = 47,
    895  LWS_CALLBACK_RECEIVE_CLIENT_HTTP_READ = 48,
    897  LWS_CALLBACK_HTTP_BIND_PROTOCOL = 49,
    899  LWS_CALLBACK_HTTP_DROP_PROTOCOL = 50,
    901  LWS_CALLBACK_CHECK_ACCESS_RIGHTS = 51,
    903  LWS_CALLBACK_PROCESS_HTML = 52,
    905  LWS_CALLBACK_ADD_HEADERS = 53,
    907  LWS_CALLBACK_SESSION_INFO = 54,
    910  LWS_CALLBACK_GS_EVENT = 55,
    913  /****** add new things just above ---^ ******/
    914 
    917 };
    918 
    919 
    920 
    936 typedef int
    937 lws_callback_function(struct lws *wsi, enum lws_callback_reasons reason,
    938  void *user, void *in, size_t len);
    940 
    950 
    952 /*
    953  * NOTE: These public enums are part of the abi. If you want to add one,
    954  * add it at where specified so existing users are unaffected.
    955  */
    956 enum lws_extension_callback_reasons {
    957  LWS_EXT_CB_SERVER_CONTEXT_CONSTRUCT = 0,
    958  LWS_EXT_CB_CLIENT_CONTEXT_CONSTRUCT = 1,
    959  LWS_EXT_CB_SERVER_CONTEXT_DESTRUCT = 2,
    960  LWS_EXT_CB_CLIENT_CONTEXT_DESTRUCT = 3,
    961  LWS_EXT_CB_CONSTRUCT = 4,
    962  LWS_EXT_CB_CLIENT_CONSTRUCT = 5,
    963  LWS_EXT_CB_CHECK_OK_TO_REALLY_CLOSE = 6,
    964  LWS_EXT_CB_CHECK_OK_TO_PROPOSE_EXTENSION = 7,
    965  LWS_EXT_CB_DESTROY = 8,
    966  LWS_EXT_CB_DESTROY_ANY_WSI_CLOSING = 9,
    967  LWS_EXT_CB_ANY_WSI_ESTABLISHED = 10,
    968  LWS_EXT_CB_PACKET_RX_PREPARSE = 11,
    969  LWS_EXT_CB_PACKET_TX_PRESEND = 12,
    970  LWS_EXT_CB_PACKET_TX_DO_SEND = 13,
    971  LWS_EXT_CB_HANDSHAKE_REPLY_TX = 14,
    972  LWS_EXT_CB_FLUSH_PENDING_TX = 15,
    973  LWS_EXT_CB_EXTENDED_PAYLOAD_RX = 16,
    974  LWS_EXT_CB_CAN_PROXY_CLIENT_CONNECTION = 17,
    975  LWS_EXT_CB_1HZ = 18,
    976  LWS_EXT_CB_REQUEST_ON_WRITEABLE = 19,
    977  LWS_EXT_CB_IS_WRITEABLE = 20,
    978  LWS_EXT_CB_PAYLOAD_TX = 21,
    979  LWS_EXT_CB_PAYLOAD_RX = 22,
    980  LWS_EXT_CB_OPTION_DEFAULT = 23,
    981  LWS_EXT_CB_OPTION_SET = 24,
    982  LWS_EXT_CB_OPTION_CONFIRM = 25,
    983  LWS_EXT_CB_NAMED_OPTION_SET = 26,
    984 
    985  /****** add new things just above ---^ ******/
    986 };
    987 
    994  /* Add new things just above here ---^
    995  * This is part of the ABI, don't needlessly break compatibility */
    996 };
    997 
    1003  const char *name;
    1006  /* Add new things just above here ---^
    1007  * This is part of the ABI, don't needlessly break compatibility */
    1008 };
    1009 
    1012  const char *option_name;
    1014  const char *start;
    1015  int len;
    1016 };
    1017 
    1078 typedef int
    1079 lws_extension_callback_function(struct lws_context *context,
    1080  const struct lws_extension *ext, struct lws *wsi,
    1081  enum lws_extension_callback_reasons reason,
    1082  void *user, void *in, size_t len);
    1083 
    1086  const char *name;
    1088  const char *client_offer;
    1090  /* Add new things just above here ---^
    1091  * This is part of the ABI, don't needlessly break compatibility */
    1092 };
    1093 
    1102 LWS_VISIBLE LWS_EXTERN int
    1103 lws_set_extension_option(struct lws *wsi, const char *ext_name,
    1104  const char *opt_name, const char *opt_val);
    1105 
    1106 #ifndef LWS_NO_EXTENSIONS
    1107 /* lws_get_internal_extensions() - DEPRECATED
    1108  *
    1109  * \Deprecated There is no longer a set internal extensions table. The table is provided
    1110  * by user code along with application-specific settings. See the test
    1111  * client and server for how to do.
    1112  */
    1113 static LWS_INLINE LWS_WARN_DEPRECATED const struct lws_extension *
    1114 lws_get_internal_extensions() { return NULL; }
    1115 
    1126 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    1127 lws_ext_parse_options(const struct lws_extension *ext, struct lws *wsi,
    1128  void *ext_user, const struct lws_ext_options *opts,
    1129  const char *o, int len);
    1130 #endif
    1131 
    1144 LWS_EXTERN
    1146  struct lws_context *context, const struct lws_extension *ext,
    1147  struct lws *wsi, enum lws_extension_callback_reasons reason,
    1148  void *user, void *in, size_t len);
    1149 
    1150 /*
    1151  * The internal exts are part of the public abi
    1152  * If we add more extensions, publish the callback here ------v
    1153  */
    1155 
    1171 
    1176  const char *name;
    1197  unsigned int id;
    1204  void *user;
    1207  /* Add new things just above here ---^
    1208  * This is part of the ABI, don't needlessly break compatibility */
    1209 };
    1210 
    1211 struct lws_vhost;
    1212 
    1221 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
    1222 lws_vhost_name_to_protocol(struct lws_vhost *vh, const char *name);
    1223 
    1233 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
    1234 lws_get_protocol(struct lws *wsi);
    1235 
    1237 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
    1238 lws_protocol_get(struct lws *wsi) LWS_WARN_DEPRECATED;
    1239 
    1250 LWS_VISIBLE LWS_EXTERN void *
    1251 lws_protocol_vh_priv_zalloc(struct lws_vhost *vhost, const struct lws_protocols *prot,
    1252  int size);
    1253 
    1263 LWS_VISIBLE LWS_EXTERN void *
    1264 lws_protocol_vh_priv_get(struct lws_vhost *vhost, const struct lws_protocols *prot);
    1265 
    1274 LWS_VISIBLE LWS_EXTERN int
    1275 lws_finalize_startup(struct lws_context *context);
    1276 
    1277 #ifdef LWS_WITH_PLUGINS
    1278 
    1279 /* PLUGINS implies LIBUV */
    1280 
    1281 #define LWS_PLUGIN_API_MAGIC 180
    1282 
    1285  unsigned int api_magic;
    1286  const struct lws_protocols *protocols;
    1288  const struct lws_extension *extensions;
    1290 };
    1291 
    1292 typedef int (*lws_plugin_init_func)(struct lws_context *,
    1293  struct lws_plugin_capability *);
    1294 typedef int (*lws_plugin_destroy_func)(struct lws_context *);
    1295 
    1297 struct lws_plugin {
    1298  struct lws_plugin *list;
    1299 #if (UV_VERSION_MAJOR > 0)
    1300  uv_lib_t lib;
    1301 #else
    1302  void *l;
    1303 #endif
    1304  char name[64];
    1306 };
    1307 
    1308 #endif
    1309 
    1311 
    1312 
    1321 
    1323 #define LWSGS_EMAIL_CONTENT_SIZE 16384
    1324 
    1326 /* SHA-1 binary and hexified versions */
    1328 typedef struct { unsigned char bin[20]; } lwsgw_hash_bin;
    1330 typedef struct { char id[41]; } lwsgw_hash;
    1331 
    1338 };
    1339 
    1342  char username[32];
    1343  char email[100];
    1344  char ip[72];
    1345  unsigned int mask;
    1347  char session[42];
    1348 };
    1349 
    1354 };
    1355 
    1358  enum lws_gs_event event;
    1359  const char *username;
    1360  const char *email;
    1361 };
    1362 
    1364 
    1365 
    1379 
    1381 /*
    1382  * NOTE: These public enums are part of the abi. If you want to add one,
    1383  * add it at where specified so existing users are unaffected.
    1384  */
    1385 
    1389  (1 << 12),
    1396  (1 << 12),
    1412  (1 << 12),
    1417  (1 << 12),
    1435  /****** add new things just above ---^ ******/
    1436 };
    1437 
    1438 #define lws_check_opt(c, f) (((c) & (f)) == (f))
    1439 
    1450  int port;
    1455  const char *iface;
    1462  const struct lws_protocols *protocols;
    1466  const struct lws_extension *extensions;
    1474  const char *ssl_cert_filepath;
    1484  const char *ssl_ca_filepath;
    1486  const char *ssl_cipher_list;
    1490  const char *http_proxy_address;
    1493  unsigned int http_proxy_port;
    1495  int gid;
    1497  int uid;
    1499  unsigned int options;
    1501  void *user;
    1504  int ka_time;
    1514 #ifdef LWS_OPENSSL_SUPPORT
    1520 #else /* maintain structure layout either way */
    1522 #endif
    1523 
    1534  unsigned int count_threads;
    1536  unsigned int fd_limit_per_thread;
    1540  unsigned int timeout_secs;
    1545  const char *ecdh_curve;
    1547  const char *vhost_name;
    1551  const char * const *plugin_dirs;
    1560  const char *log_filepath;
    1563  const struct lws_http_mount *mounts;
    1565  const char *server_string;
    1568  unsigned int pt_serv_buf_size;
    1584  /* Add new things just above here ---^
    1585  * This is part of the ABI, don't needlessly break compatibility
    1586  *
    1587  * The below is to ensure later library versions with new
    1588  * members added above will see 0 (default) even if the app
    1589  * was not built against the newer headers.
    1590  */
    1591 
    1592  void *_unused[8];
    1593 };
    1594 
    1629 LWS_VISIBLE LWS_EXTERN struct lws_context *
    1631 
    1640 LWS_VISIBLE LWS_EXTERN void
    1641 lws_context_destroy(struct lws_context *context);
    1642 
    1660 LWS_VISIBLE LWS_EXTERN int
    1661 lws_set_proxy(struct lws_vhost *vhost, const char *proxy);
    1662 
    1663 
    1664 struct lws_vhost;
    1665 
    1675 LWS_EXTERN LWS_VISIBLE struct lws_vhost *
    1676 lws_create_vhost(struct lws_context *context,
    1677  struct lws_context_creation_info *info);
    1678 
    1693 LWS_VISIBLE LWS_EXTERN int
    1694 lwsws_get_config_globals(struct lws_context_creation_info *info, const char *d,
    1695  char **config_strings, int *len);
    1696 
    1712 LWS_VISIBLE LWS_EXTERN int
    1713 lwsws_get_config_vhosts(struct lws_context *context,
    1714  struct lws_context_creation_info *info, const char *d,
    1715  char **config_strings, int *len);
    1716 
    1718 LWS_VISIBLE LWS_EXTERN struct lws_vhost *
    1719 lws_vhost_get(struct lws *wsi) LWS_WARN_DEPRECATED;
    1720 
    1726 LWS_VISIBLE LWS_EXTERN struct lws_vhost *
    1727 lws_get_vhost(struct lws *wsi);
    1728 
    1736 LWS_VISIBLE LWS_EXTERN int
    1737 lws_json_dump_vhost(const struct lws_vhost *vh, char *buf, int len);
    1738 
    1746 LWS_VISIBLE LWS_EXTERN int
    1747 lws_json_dump_context(const struct lws_context *context, char *buf, int len);
    1748 
    1758 LWS_VISIBLE LWS_EXTERN void *
    1759 lws_context_user(struct lws_context *context);
    1760 
    1766 
    1776  const char *name;
    1777  const char *value;
    1778 };
    1779 
    1792 };
    1793 
    1801  const char *mountpoint;
    1803  const char *origin;
    1805  const char *def;
    1807  const char *protocol;
    1823  unsigned int auth_mask;
    1826  unsigned int cache_reusable:1;
    1827  unsigned int cache_revalidate:1;
    1828  unsigned int cache_intermediaries:1;
    1830  unsigned char origin_protocol;
    1831  unsigned char mountpoint_len;
    1832 };
    1835 
    1841 
    1849  LCCSCF_USE_SSL = (1 << 0),
    1850  LCCSCF_ALLOW_SELFSIGNED = (1 << 1),
    1851  LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK = (1 << 2)
    1852 };
    1853 
    1858  struct lws_context *context;
    1860  const char *address;
    1862  int port;
    1866  const char *path;
    1868  const char *host;
    1870  const char *origin;
    1872  const char *protocol;
    1876  void *userdata;
    1880  const char *method;
    1883  struct lws *parent_wsi;
    1887  const char *uri_replace_from;
    1890  const char *uri_replace_to;
    1892  struct lws_vhost *vhost;
    1894  struct lws **pwsi;
    1906  /* Add new things just above here ---^
    1907  * This is part of the ABI, don't needlessly break compatibility
    1908  *
    1909  * The below is to ensure later library versions with new
    1910  * members added above will see 0 (default) even if the app
    1911  * was not built against the newer headers.
    1912  */
    1913 
    1914  void *_unused[4];
    1915 };
    1916 
    1924 LWS_VISIBLE LWS_EXTERN struct lws *
    1926 
    1947 /* deprecated, use lws_client_connect_via_info() */
    1948 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    1949 lws_client_connect(struct lws_context *clients, const char *address,
    1950  int port, int ssl_connection, const char *path,
    1951  const char *host, const char *origin, const char *protocol,
    1952  int ietf_version_or_minus_one) LWS_WARN_DEPRECATED;
    1953 /* deprecated, use lws_client_connect_via_info() */
    1974 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    1975 lws_client_connect_extended(struct lws_context *clients, const char *address,
    1976  int port, int ssl_connection, const char *path,
    1977  const char *host, const char *origin,
    1978  const char *protocol, int ietf_version_or_minus_one,
    1979  void *userdata) LWS_WARN_DEPRECATED;
    1980 
    2006 LWS_VISIBLE LWS_EXTERN int
    2008  struct lws_vhost *vhost);
    2009 
    2010 LWS_VISIBLE LWS_EXTERN int
    2011 lws_http_client_read(struct lws *wsi, char **buf, int *len);
    2013 
    2021 
    2054 LWS_VISIBLE LWS_EXTERN int
    2055 lws_service(struct lws_context *context, int timeout_ms);
    2056 
    2068 LWS_VISIBLE LWS_EXTERN int
    2069 lws_service_tsi(struct lws_context *context, int timeout_ms, int tsi);
    2070 
    2086 LWS_VISIBLE LWS_EXTERN void
    2087 lws_cancel_service_pt(struct lws *wsi);
    2088 
    2100 LWS_VISIBLE LWS_EXTERN void
    2101 lws_cancel_service(struct lws_context *context);
    2102 
    2125 LWS_VISIBLE LWS_EXTERN int
    2126 lws_service_fd(struct lws_context *context, struct lws_pollfd *pollfd);
    2127 
    2137 LWS_VISIBLE LWS_EXTERN int
    2138 lws_service_fd_tsi(struct lws_context *context, struct lws_pollfd *pollfd,
    2139  int tsi);
    2140 
    2142 
    2148 
    2155 
    2167 LWS_VISIBLE LWS_EXTERN const char *
    2168 lws_get_mimetype(const char *file, const struct lws_http_mount *m);
    2169 
    2188 LWS_VISIBLE LWS_EXTERN int
    2189 lws_serve_http_file(struct lws *wsi, const char *file, const char *content_type,
    2190  const char *other_headers, int other_headers_len);
    2191 LWS_VISIBLE LWS_EXTERN int
    2192 lws_serve_http_file_fragment(struct lws *wsi);
    2194 
    2205 
    2206 enum http_status {
    2207  HTTP_STATUS_OK = 200,
    2208  HTTP_STATUS_NO_CONTENT = 204,
    2209 
    2210  HTTP_STATUS_MOVED_PERMANENTLY = 301,
    2211  HTTP_STATUS_FOUND = 302,
    2212  HTTP_STATUS_SEE_OTHER = 303,
    2213 
    2214  HTTP_STATUS_BAD_REQUEST = 400,
    2215  HTTP_STATUS_UNAUTHORIZED,
    2216  HTTP_STATUS_PAYMENT_REQUIRED,
    2217  HTTP_STATUS_FORBIDDEN,
    2218  HTTP_STATUS_NOT_FOUND,
    2219  HTTP_STATUS_METHOD_NOT_ALLOWED,
    2220  HTTP_STATUS_NOT_ACCEPTABLE,
    2221  HTTP_STATUS_PROXY_AUTH_REQUIRED,
    2222  HTTP_STATUS_REQUEST_TIMEOUT,
    2223  HTTP_STATUS_CONFLICT,
    2224  HTTP_STATUS_GONE,
    2225  HTTP_STATUS_LENGTH_REQUIRED,
    2226  HTTP_STATUS_PRECONDITION_FAILED,
    2227  HTTP_STATUS_REQ_ENTITY_TOO_LARGE,
    2228  HTTP_STATUS_REQ_URI_TOO_LONG,
    2229  HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE,
    2230  HTTP_STATUS_REQ_RANGE_NOT_SATISFIABLE,
    2231  HTTP_STATUS_EXPECTATION_FAILED,
    2232 
    2233  HTTP_STATUS_INTERNAL_SERVER_ERROR = 500,
    2234  HTTP_STATUS_NOT_IMPLEMENTED,
    2235  HTTP_STATUS_BAD_GATEWAY,
    2236  HTTP_STATUS_SERVICE_UNAVAILABLE,
    2237  HTTP_STATUS_GATEWAY_TIMEOUT,
    2238  HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED,
    2239 };
    2240 
    2242  char *p;
    2243  int len;
    2244  int max_len;
    2245  int final;
    2246 };
    2247 
    2248 typedef const char *(*lws_process_html_state_cb)(void *data, int index);
    2249 
    2251  char *start;
    2252  char swallow[16];
    2253  int pos;
    2254  void *data;
    2255  const char * const *vars;
    2258  lws_process_html_state_cb replace;
    2259 };
    2260 
    2265 LWS_VISIBLE LWS_EXTERN int
    2267  struct lws_process_html_state *s);
    2269 
    2302 
    2310 struct lws_tokens {
    2311  char *token;
    2313 };
    2314 
    2315 /* enum lws_token_indexes
    2316  * these have to be kept in sync with lextable.h / minilex.c
    2317  *
    2318  * NOTE: These public enums are part of the abi. If you want to add one,
    2319  * add it at where specified so existing users are unaffected.
    2320  */
    2321 enum lws_token_indexes {
    2322  WSI_TOKEN_GET_URI = 0,
    2323  WSI_TOKEN_POST_URI = 1,
    2324  WSI_TOKEN_OPTIONS_URI = 2,
    2325  WSI_TOKEN_HOST = 3,
    2326  WSI_TOKEN_CONNECTION = 4,
    2327  WSI_TOKEN_UPGRADE = 5,
    2328  WSI_TOKEN_ORIGIN = 6,
    2329  WSI_TOKEN_DRAFT = 7,
    2330  WSI_TOKEN_CHALLENGE = 8,
    2331  WSI_TOKEN_EXTENSIONS = 9,
    2332  WSI_TOKEN_KEY1 = 10,
    2333  WSI_TOKEN_KEY2 = 11,
    2334  WSI_TOKEN_PROTOCOL = 12,
    2335  WSI_TOKEN_ACCEPT = 13,
    2336  WSI_TOKEN_NONCE = 14,
    2337  WSI_TOKEN_HTTP = 15,
    2338  WSI_TOKEN_HTTP2_SETTINGS = 16,
    2339  WSI_TOKEN_HTTP_ACCEPT = 17,
    2340  WSI_TOKEN_HTTP_AC_REQUEST_HEADERS = 18,
    2341  WSI_TOKEN_HTTP_IF_MODIFIED_SINCE = 19,
    2342  WSI_TOKEN_HTTP_IF_NONE_MATCH = 20,
    2343  WSI_TOKEN_HTTP_ACCEPT_ENCODING = 21,
    2344  WSI_TOKEN_HTTP_ACCEPT_LANGUAGE = 22,
    2345  WSI_TOKEN_HTTP_PRAGMA = 23,
    2346  WSI_TOKEN_HTTP_CACHE_CONTROL = 24,
    2347  WSI_TOKEN_HTTP_AUTHORIZATION = 25,
    2348  WSI_TOKEN_HTTP_COOKIE = 26,
    2349  WSI_TOKEN_HTTP_CONTENT_LENGTH = 27,
    2350  WSI_TOKEN_HTTP_CONTENT_TYPE = 28,
    2351  WSI_TOKEN_HTTP_DATE = 29,
    2352  WSI_TOKEN_HTTP_RANGE = 30,
    2353  WSI_TOKEN_HTTP_REFERER = 31,
    2354  WSI_TOKEN_KEY = 32,
    2355  WSI_TOKEN_VERSION = 33,
    2356  WSI_TOKEN_SWORIGIN = 34,
    2357 
    2358  WSI_TOKEN_HTTP_COLON_AUTHORITY = 35,
    2359  WSI_TOKEN_HTTP_COLON_METHOD = 36,
    2360  WSI_TOKEN_HTTP_COLON_PATH = 37,
    2361  WSI_TOKEN_HTTP_COLON_SCHEME = 38,
    2362  WSI_TOKEN_HTTP_COLON_STATUS = 39,
    2363 
    2364  WSI_TOKEN_HTTP_ACCEPT_CHARSET = 40,
    2365  WSI_TOKEN_HTTP_ACCEPT_RANGES = 41,
    2366  WSI_TOKEN_HTTP_ACCESS_CONTROL_ALLOW_ORIGIN = 42,
    2367  WSI_TOKEN_HTTP_AGE = 43,
    2368  WSI_TOKEN_HTTP_ALLOW = 44,
    2369  WSI_TOKEN_HTTP_CONTENT_DISPOSITION = 45,
    2370  WSI_TOKEN_HTTP_CONTENT_ENCODING = 46,
    2371  WSI_TOKEN_HTTP_CONTENT_LANGUAGE = 47,
    2372  WSI_TOKEN_HTTP_CONTENT_LOCATION = 48,
    2373  WSI_TOKEN_HTTP_CONTENT_RANGE = 49,
    2374  WSI_TOKEN_HTTP_ETAG = 50,
    2375  WSI_TOKEN_HTTP_EXPECT = 51,
    2376  WSI_TOKEN_HTTP_EXPIRES = 52,
    2377  WSI_TOKEN_HTTP_FROM = 53,
    2378  WSI_TOKEN_HTTP_IF_MATCH = 54,
    2379  WSI_TOKEN_HTTP_IF_RANGE = 55,
    2380  WSI_TOKEN_HTTP_IF_UNMODIFIED_SINCE = 56,
    2381  WSI_TOKEN_HTTP_LAST_MODIFIED = 57,
    2382  WSI_TOKEN_HTTP_LINK = 58,
    2383  WSI_TOKEN_HTTP_LOCATION = 59,
    2384  WSI_TOKEN_HTTP_MAX_FORWARDS = 60,
    2385  WSI_TOKEN_HTTP_PROXY_AUTHENTICATE = 61,
    2386  WSI_TOKEN_HTTP_PROXY_AUTHORIZATION = 62,
    2387  WSI_TOKEN_HTTP_REFRESH = 63,
    2388  WSI_TOKEN_HTTP_RETRY_AFTER = 64,
    2389  WSI_TOKEN_HTTP_SERVER = 65,
    2390  WSI_TOKEN_HTTP_SET_COOKIE = 66,
    2391  WSI_TOKEN_HTTP_STRICT_TRANSPORT_SECURITY = 67,
    2392  WSI_TOKEN_HTTP_TRANSFER_ENCODING = 68,
    2393  WSI_TOKEN_HTTP_USER_AGENT = 69,
    2394  WSI_TOKEN_HTTP_VARY = 70,
    2395  WSI_TOKEN_HTTP_VIA = 71,
    2396  WSI_TOKEN_HTTP_WWW_AUTHENTICATE = 72,
    2397 
    2398  WSI_TOKEN_PATCH_URI = 73,
    2399  WSI_TOKEN_PUT_URI = 74,
    2400  WSI_TOKEN_DELETE_URI = 75,
    2401 
    2402  WSI_TOKEN_HTTP_URI_ARGS = 76,
    2403  WSI_TOKEN_PROXY = 77,
    2404  WSI_TOKEN_HTTP_X_REAL_IP = 78,
    2405  WSI_TOKEN_HTTP1_0 = 79,
    2406 
    2407  /****** add new things just above ---^ ******/
    2408 
    2409  /* use token storage to stash these internally, not for
    2410  * user use */
    2411 
    2412  _WSI_TOKEN_CLIENT_SENT_PROTOCOLS,
    2413  _WSI_TOKEN_CLIENT_PEER_ADDRESS,
    2414  _WSI_TOKEN_CLIENT_URI,
    2415  _WSI_TOKEN_CLIENT_HOST,
    2416  _WSI_TOKEN_CLIENT_ORIGIN,
    2417  _WSI_TOKEN_CLIENT_METHOD,
    2418 
    2419  /* always last real token index*/
    2420  WSI_TOKEN_COUNT,
    2421 
    2422  /* parser state additions, no storage associated */
    2423  WSI_TOKEN_NAME_PART,
    2424  WSI_TOKEN_SKIPPING,
    2425  WSI_TOKEN_SKIPPING_SAW_CR,
    2426  WSI_PARSING_COMPLETE,
    2427  WSI_INIT_TOKEN_MUXURL,
    2428 };
    2429 
    2431  unsigned short token_limit[WSI_TOKEN_COUNT];
    2432 };
    2433 
    2439 LWS_VISIBLE LWS_EXTERN const unsigned char *
    2440 lws_token_to_string(enum lws_token_indexes token);
    2441 
    2442 
    2451 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2452 lws_hdr_total_length(struct lws *wsi, enum lws_token_indexes h);
    2453 
    2463 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2464 lws_hdr_fragment_length(struct lws *wsi, enum lws_token_indexes h, int frag_idx);
    2465 
    2479 LWS_VISIBLE LWS_EXTERN int
    2480 lws_hdr_copy(struct lws *wsi, char *dest, int len, enum lws_token_indexes h);
    2481 
    2499 LWS_VISIBLE LWS_EXTERN int
    2500 lws_hdr_copy_fragment(struct lws *wsi, char *dest, int len,
    2501  enum lws_token_indexes h, int frag_idx);
    2502 
    2513 LWS_VISIBLE LWS_EXTERN const char *
    2514 lws_get_urlarg_by_name(struct lws *wsi, const char *name, char *buf, int len);
    2516 
    2531 
    2542 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2543 lws_add_http_header_status(struct lws *wsi,
    2544  unsigned int code, unsigned char **p,
    2545  unsigned char *end);
    2558 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2559 lws_add_http_header_by_name(struct lws *wsi, const unsigned char *name,
    2560  const unsigned char *value, int length,
    2561  unsigned char **p, unsigned char *end);
    2575 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2576 lws_add_http_header_by_token(struct lws *wsi, enum lws_token_indexes token,
    2577  const unsigned char *value, int length,
    2578  unsigned char **p, unsigned char *end);
    2589 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2590 lws_add_http_header_content_length(struct lws *wsi,
    2591  unsigned long content_length,
    2592  unsigned char **p, unsigned char *end);
    2602 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2603 lws_finalize_http_header(struct lws *wsi, unsigned char **p,
    2604  unsigned char *end);
    2606 
    2625 
    2635 };
    2636 
    2650 typedef int (*lws_spa_fileupload_cb)(void *data, const char *name,
    2651  const char *filename, char *buf, int len,
    2652  enum lws_spa_fileupload_states state);
    2653 
    2656 struct lws_spa;
    2657 
    2676 LWS_VISIBLE LWS_EXTERN struct lws_spa *
    2677 lws_spa_create(struct lws *wsi, const char * const *param_names,
    2678  int count_params, int max_storage, lws_spa_fileupload_cb opt_cb,
    2679  void *opt_data);
    2680 
    2688 LWS_VISIBLE LWS_EXTERN int
    2689 lws_spa_process(struct lws_spa *spa, const char *in, int len);
    2690 
    2696 LWS_VISIBLE LWS_EXTERN int
    2697 lws_spa_finalize(struct lws_spa *spa);
    2698 
    2705 LWS_VISIBLE LWS_EXTERN int
    2706 lws_spa_get_length(struct lws_spa *spa, int n);
    2707 
    2713 LWS_VISIBLE LWS_EXTERN const char *
    2714 lws_spa_get_string(struct lws_spa *spa, int n);
    2715 
    2721 LWS_VISIBLE LWS_EXTERN int
    2722 lws_spa_destroy(struct lws_spa *spa);
    2724 
    2735 
    2746 LWS_VISIBLE LWS_EXTERN const char *
    2747 lws_urlencode(char *escaped, const char *string, int len);
    2748 
    2749 /*
    2750  * URLDECODE 1 / 2
    2751  *
    2752  * This simple urldecode only operates until the first '\0' and requires the
    2753  * data to exist all at once
    2754  */
    2767 LWS_VISIBLE LWS_EXTERN int
    2768 lws_urldecode(char *string, const char *escaped, int len);
    2770 
    2779 LWS_VISIBLE LWS_EXTERN int
    2780 lws_return_http_status(struct lws *wsi, unsigned int code,
    2781  const char *html_body);
    2782 
    2793 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2794 lws_http_redirect(struct lws *wsi, int code, const unsigned char *loc, int len,
    2795  unsigned char **p, unsigned char *end);
    2796 
    2805 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2806 lws_http_transaction_completed(struct lws *wsi);
    2808 
    2816 
    2827 LWS_VISIBLE LWS_EXTERN const char *
    2828 lws_sql_purify(char *escaped, const char *string, int len);
    2829 
    2840 LWS_VISIBLE LWS_EXTERN const char *
    2841 lws_json_purify(char *escaped, const char *string, int len);
    2843 
    2850 
    2852 #ifdef LWS_USE_LIBEV
    2853 typedef void (lws_ev_signal_cb_t)(EV_P_ struct ev_signal *w, int revents);
    2854 
    2855 LWS_VISIBLE LWS_EXTERN int
    2856 lws_ev_sigint_cfg(struct lws_context *context, int use_ev_sigint,
    2857  lws_ev_signal_cb_t *cb);
    2858 
    2859 LWS_VISIBLE LWS_EXTERN int
    2860 lws_ev_initloop(struct lws_context *context, struct ev_loop *loop, int tsi);
    2861 
    2862 LWS_VISIBLE LWS_EXTERN void
    2863 lws_ev_sigint_cb(struct ev_loop *loop, struct ev_signal *watcher, int revents);
    2864 #endif /* LWS_USE_LIBEV */
    2865 
    2867 
    2874 #ifdef LWS_USE_LIBUV
    2876 LWS_VISIBLE LWS_EXTERN int
    2877 lws_uv_sigint_cfg(struct lws_context *context, int use_uv_sigint,
    2878  uv_signal_cb cb);
    2879 
    2880 LWS_VISIBLE LWS_EXTERN void
    2881 lws_libuv_run(const struct lws_context *context, int tsi);
    2882 
    2883 LWS_VISIBLE LWS_EXTERN void
    2884 lws_libuv_stop(struct lws_context *context);
    2885 
    2886 LWS_VISIBLE LWS_EXTERN int
    2887 lws_uv_initloop(struct lws_context *context, uv_loop_t *loop, int tsi);
    2888 
    2889 LWS_VISIBLE LWS_EXTERN uv_loop_t *
    2890 lws_uv_getloop(struct lws_context *context, int tsi);
    2891 
    2892 LWS_VISIBLE LWS_EXTERN void
    2893 lws_uv_sigint_cb(uv_signal_t *watcher, int signum);
    2894 #endif /* LWS_USE_LIBUV */
    2895 
    2902 
    2903 /*
    2904  * NOTE: These public enums are part of the abi. If you want to add one,
    2905  * add it at where specified so existing users are unaffected.
    2906  */
    2907 enum pending_timeout {
    2908  NO_PENDING_TIMEOUT = 0,
    2909  PENDING_TIMEOUT_AWAITING_PROXY_RESPONSE = 1,
    2910  PENDING_TIMEOUT_AWAITING_CONNECT_RESPONSE = 2,
    2911  PENDING_TIMEOUT_ESTABLISH_WITH_SERVER = 3,
    2912  PENDING_TIMEOUT_AWAITING_SERVER_RESPONSE = 4,
    2913  PENDING_TIMEOUT_AWAITING_PING = 5,
    2914  PENDING_TIMEOUT_CLOSE_ACK = 6,
    2915  PENDING_TIMEOUT_AWAITING_EXTENSION_CONNECT_RESPONSE = 7,
    2916  PENDING_TIMEOUT_SENT_CLIENT_HANDSHAKE = 8,
    2917  PENDING_TIMEOUT_SSL_ACCEPT = 9,
    2918  PENDING_TIMEOUT_HTTP_CONTENT = 10,
    2919  PENDING_TIMEOUT_AWAITING_CLIENT_HS_SEND = 11,
    2920  PENDING_FLUSH_STORED_SEND_BEFORE_CLOSE = 12,
    2921  PENDING_TIMEOUT_SHUTDOWN_FLUSH = 13,
    2922  PENDING_TIMEOUT_CGI = 14,
    2923  PENDING_TIMEOUT_HTTP_KEEPALIVE_IDLE = 15,
    2924 
    2925  /****** add new things just above ---^ ******/
    2926 };
    2927 
    2937 LWS_VISIBLE LWS_EXTERN void
    2938 lws_set_timeout(struct lws *wsi, enum pending_timeout reason, int secs);
    2940 
    2946 #if !defined(LWS_SIZEOFPTR)
    2947 #define LWS_SIZEOFPTR (sizeof (void *))
    2948 #endif
    2949 #if !defined(u_int64_t)
    2950 #define u_int64_t unsigned long long
    2951 #endif
    2952 
    2953 #if defined(__x86_64__)
    2954 #define _LWS_PAD_SIZE 16 /* Intel recommended for best performance */
    2955 #else
    2956 #define _LWS_PAD_SIZE LWS_SIZEOFPTR /* Size of a pointer on the target arch */
    2957 #endif
    2958 #define _LWS_PAD(n) (((n) % _LWS_PAD_SIZE) ? \
    2959  ((n) + (_LWS_PAD_SIZE - ((n) % _LWS_PAD_SIZE))) : (n))
    2960 #define LWS_PRE _LWS_PAD(4 + 10)
    2961 /* used prior to 1.7 and retained for backward compatibility */
    2962 #define LWS_SEND_BUFFER_PRE_PADDING LWS_PRE
    2963 #define LWS_SEND_BUFFER_POST_PADDING 0
    2964 
    2965 /*
    2966  * NOTE: These public enums are part of the abi. If you want to add one,
    2967  * add it at where specified so existing users are unaffected.
    2968  */
    2983  /* LWS_WRITE_CLOSE is handled by lws_close_reason() */
    2984  LWS_WRITE_PING = 5,
    2985  LWS_WRITE_PONG = 6,
    2986 
    2987  /* Same as write_http but we know this write ends the transaction */
    2988  LWS_WRITE_HTTP_FINAL = 7,
    2989 
    2990  /* HTTP2 */
    2991 
    2999  /****** add new things just above ---^ ******/
    3000 
    3001  /* flags */
    3002 
    3010 };
    3011 
    3012 
    3084 LWS_VISIBLE LWS_EXTERN int
    3085 lws_write(struct lws *wsi, unsigned char *buf, size_t len,
    3086  enum lws_write_protocol protocol);
    3087 
    3088 /* helper for case where buffer may be const */
    3089 #define lws_write_http(wsi, buf, len) \
    3090  lws_write(wsi, (unsigned char *)(buf), len, LWS_WRITE_HTTP)
    3091 
    3093 
    3112 
    3125 LWS_VISIBLE LWS_EXTERN int
    3126 lws_callback_on_writable(struct lws *wsi);
    3127 
    3141 LWS_VISIBLE LWS_EXTERN int
    3142 lws_callback_on_writable_all_protocol(const struct lws_context *context,
    3143  const struct lws_protocols *protocol);
    3144 
    3158 LWS_VISIBLE LWS_EXTERN int
    3159 lws_callback_on_writable_all_protocol_vhost(const struct lws_vhost *vhost,
    3160  const struct lws_protocols *protocol);
    3161 
    3174 LWS_VISIBLE LWS_EXTERN int
    3175 lws_callback_all_protocol(struct lws_context *context,
    3176  const struct lws_protocols *protocol, int reason);
    3177 
    3190 LWS_VISIBLE LWS_EXTERN int
    3191 lws_callback_all_protocol_vhost(struct lws_vhost *vh,
    3192  const struct lws_protocols *protocol, int reason);
    3193 
    3207 LWS_VISIBLE LWS_EXTERN int
    3208 lws_callback_vhost_protocols(struct lws *wsi, int reason, void *in, int len);
    3209 
    3217 LWS_VISIBLE LWS_EXTERN int
    3218 lws_get_socket_fd(struct lws *wsi);
    3219 
    3241 LWS_VISIBLE LWS_EXTERN size_t
    3242 lws_get_peer_write_allowance(struct lws *wsi);
    3244 
    3255 LWS_VISIBLE LWS_EXTERN int
    3256 lws_rx_flow_control(struct lws *wsi, int enable);
    3257 
    3267 LWS_VISIBLE LWS_EXTERN void
    3268 lws_rx_flow_allow_all_protocol(const struct lws_context *context,
    3269  const struct lws_protocols *protocol);
    3270 
    3287 LWS_VISIBLE LWS_EXTERN size_t
    3288 lws_remaining_packet_payload(struct lws *wsi);
    3289 
    3290 
    3299 
    3312 LWS_VISIBLE LWS_EXTERN struct lws *
    3313 lws_adopt_socket(struct lws_context *context, lws_sockfd_type accept_fd);
    3336 LWS_VISIBLE LWS_EXTERN struct lws *
    3337 lws_adopt_socket_readbuf(struct lws_context *context, lws_sockfd_type accept_fd,
    3338  const char *readbuf, size_t len);
    3340 
    3346 
    3357 LWS_VISIBLE LWS_EXTERN const char * LWS_WARN_UNUSED_RESULT
    3358 lws_canonical_hostname(struct lws_context *context);
    3359 
    3374 LWS_VISIBLE LWS_EXTERN void
    3375 lws_get_peer_addresses(struct lws *wsi, lws_sockfd_type fd, char *name,
    3376  int name_len, char *rip, int rip_len);
    3377 
    3388 LWS_VISIBLE LWS_EXTERN const char *
    3389 lws_get_peer_simple(struct lws *wsi, char *name, int namelen);
    3390 
    3402 LWS_VISIBLE LWS_EXTERN int
    3403 lws_interface_to_sa(int ipv6, const char *ifname, struct sockaddr_in *addr,
    3404  size_t addrlen);
    3406 
    3412 
    3425 LWS_VISIBLE LWS_EXTERN int
    3426 lws_get_random(struct lws_context *context, void *buf, int len);
    3434 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3435 lws_daemonize(const char *_lock_path);
    3441 LWS_VISIBLE LWS_EXTERN const char * LWS_WARN_UNUSED_RESULT
    3443 
    3450 LWS_VISIBLE LWS_EXTERN void *
    3451 lws_wsi_user(struct lws *wsi);
    3452 
    3464 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3465 lws_parse_uri(char *p, const char **prot, const char **ads, int *port,
    3466  const char **path);
    3467 
    3471 LWS_VISIBLE LWS_EXTERN unsigned long
    3472 lws_now_secs(void);
    3473 
    3483 LWS_VISIBLE LWS_EXTERN struct lws_context * LWS_WARN_UNUSED_RESULT
    3484 lws_get_context(const struct lws *wsi);
    3485 
    3495 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3496 lws_get_count_threads(struct lws_context *context);
    3497 
    3505 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    3506 lws_get_parent(const struct lws *wsi);
    3507 
    3514 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    3515 lws_get_child(const struct lws *wsi);
    3516 
    3517 
    3518 /*
    3519  * \deprecated DEPRECATED Note: this is not normally needed as a user api.
    3520  * It's provided in case it is
    3521  * useful when integrating with other app poll loop service code.
    3522  */
    3523 LWS_VISIBLE LWS_EXTERN int
    3524 lws_read(struct lws *wsi, unsigned char *buf, size_t len);
    3525 
    3533 LWS_VISIBLE LWS_EXTERN void
    3534 lws_set_allocator(void *(*realloc)(void *ptr, size_t size));
    3536 
    3542 
    3549 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3550 lws_send_pipe_choked(struct lws *wsi);
    3551 
    3556 LWS_VISIBLE LWS_EXTERN int
    3557 lws_is_final_fragment(struct lws *wsi);
    3558 
    3563 LWS_VISIBLE LWS_EXTERN unsigned char
    3564 lws_get_reserved_bits(struct lws *wsi);
    3565 
    3582 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3583 lws_partial_buffered(struct lws *wsi);
    3584 
    3594 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3595 lws_frame_is_binary(struct lws *wsi);
    3596 
    3605 LWS_VISIBLE LWS_EXTERN int
    3606 lws_is_ssl(struct lws *wsi);
    3611 LWS_VISIBLE LWS_EXTERN int
    3612 lws_is_cgi(struct lws *wsi);
    3614 
    3615 
    3621 #ifdef LWS_SHA1_USE_OPENSSL_NAME
    3623 #define lws_SHA1 SHA1
    3624 #else
    3625 
    3634 LWS_VISIBLE LWS_EXTERN unsigned char *
    3635 lws_SHA1(const unsigned char *d, size_t n, unsigned char *md);
    3636 #endif
    3637 
    3647 LWS_VISIBLE LWS_EXTERN int
    3648 lws_b64_encode_string(const char *in, int in_len, char *out, int out_size);
    3658 LWS_VISIBLE LWS_EXTERN int
    3659 lws_b64_decode_string(const char *in, char *out, int out_size);
    3661 
    3662 
    3672 #ifdef LWS_WITH_CGI
    3673 enum lws_enum_stdinouterr {
    3674  LWS_STDIN = 0,
    3675  LWS_STDOUT = 1,
    3676  LWS_STDERR = 2,
    3677 };
    3678 
    3679 enum lws_cgi_hdr_state {
    3680  LCHS_HEADER,
    3681  LCHS_CR1,
    3682  LCHS_LF1,
    3683  LCHS_CR2,
    3684  LCHS_LF2,
    3685  LHCS_PAYLOAD,
    3686  LCHS_SINGLE_0A,
    3687 };
    3688 
    3690  struct lws **stdwsi;
    3691  enum lws_enum_stdinouterr ch;
    3692  unsigned char *data;
    3693  enum lws_cgi_hdr_state hdr_state;
    3694  int len;
    3695 };
    3696 
    3697 
    3707 LWS_VISIBLE LWS_EXTERN int
    3708 lws_cgi(struct lws *wsi, const char * const *exec_array,
    3709  int script_uri_path_len, int timeout_secs,
    3710  const struct lws_protocol_vhost_options *mp_cgienv);
    3711 
    3717 LWS_VISIBLE LWS_EXTERN int
    3718 lws_cgi_write_split_stdout_headers(struct lws *wsi);
    3719 
    3725 LWS_VISIBLE LWS_EXTERN int
    3726 lws_cgi_kill(struct lws *wsi);
    3727 #endif
    3728 
    3730 
    3747 
    3754  lws_filefd_type (*open)(struct lws *wsi, const char *filename,
    3755  unsigned long *filelen, int flags);
    3759  int (*close)(struct lws *wsi, lws_filefd_type fd);
    3761  unsigned long (*seek_cur)(struct lws *wsi, lws_filefd_type fd,
    3762  long offset_from_cur_pos);
    3764  int (*read)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    3765  unsigned char *buf, unsigned long len);
    3767  int (*write)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    3768  unsigned char *buf, unsigned long len);
    3771  /* Add new things just above here ---^
    3772  * This is part of the ABI, don't needlessly break compatibility */
    3773 };
    3774 
    3780 LWS_VISIBLE LWS_EXTERN struct lws_plat_file_ops * LWS_WARN_UNUSED_RESULT
    3781 lws_get_fops(struct lws_context *context);
    3782 
    3791 static LWS_INLINE lws_filefd_type LWS_WARN_UNUSED_RESULT
    3792 lws_plat_file_open(struct lws *wsi, const char *filename,
    3793  unsigned long *filelen, int flags)
    3794 {
    3795  return lws_get_fops(lws_get_context(wsi))->open(wsi, filename,
    3796  filelen, flags);
    3797 }
    3798 
    3805 static LWS_INLINE int
    3806 lws_plat_file_close(struct lws *wsi, lws_filefd_type fd)
    3807 {
    3808  return lws_get_fops(lws_get_context(wsi))->close(wsi, fd);
    3809 }
    3810 
    3818 static LWS_INLINE unsigned long
    3819 lws_plat_file_seek_cur(struct lws *wsi, lws_filefd_type fd, long offset)
    3820 {
    3821  return lws_get_fops(lws_get_context(wsi))->seek_cur(wsi, fd, offset);
    3822 }
    3832 static LWS_INLINE int LWS_WARN_UNUSED_RESULT
    3833 lws_plat_file_read(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    3834  unsigned char *buf, unsigned long len)
    3835 {
    3836  return lws_get_fops(lws_get_context(wsi))->read(wsi, fd, amount, buf,
    3837  len);
    3838 }
    3848 static LWS_INLINE int LWS_WARN_UNUSED_RESULT
    3849 lws_plat_file_write(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    3850  unsigned char *buf, unsigned long len)
    3851 {
    3852  return lws_get_fops(lws_get_context(wsi))->write(wsi, fd, amount, buf,
    3853  len);
    3854 }
    3856 
    3888 #ifdef LWS_WITH_SMTP
    3889 
    3901 };
    3902 
    3904 struct lws_email {
    3905  void *data;
    3907  uv_loop_t *loop;
    3910  char email_smtp_ip[32];
    3911  char email_helo[32];
    3912  char email_from[100];
    3913  char email_to[100];
    3915  unsigned int max_content_size;
    3918  /* Fill all the callbacks before init */
    3919 
    3920  int (*on_next)(struct lws_email *email);
    3925  int (*on_sent)(struct lws_email *email);
    3930  int (*on_get_body)(struct lws_email *email, char *buf, int len);
    3936  /* private things */
    3937  uv_timer_t timeout_email;
    3939  uv_connect_t email_connect_req;
    3940  uv_tcp_t email_client;
    3942  char email_buf[256];
    3943  char *content;
    3944 };
    3945 
    3955 LWS_VISIBLE LWS_EXTERN int
    3956 lws_email_init(struct lws_email *email, uv_loop_t *loop, int max_content);
    3957 
    3966 LWS_VISIBLE LWS_EXTERN void
    3967 lws_email_check(struct lws_email *email);
    3975 LWS_VISIBLE LWS_EXTERN void
    3976 lws_email_destroy(struct lws_email *email);
    3977 
    3978 #endif
    3979 
    3980 
    3981 #ifdef __cplusplus
    3982 }
    3983 #endif
    3984 
    3985 #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:3679
    +
    Definition: libwebsockets.h:3689
    size_t rx_buffer_size
    Definition: libwebsockets.h:1188
    LWS_VISIBLE LWS_EXTERN struct lws_spa * lws_spa_create(struct lws *wsi, const char *const *param_names, int count_params, int max_storage, lws_spa_fileupload_cb opt_cb, void *opt_data)
    LWS_VISIBLE LWS_EXTERN struct lws_vhost * lws_vhost_get(struct lws *wsi) LWS_WARN_DEPRECATED
    @@ -81,16 +81,16 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
    Definition: libwebsockets.h:678
    Definition: libwebsockets.h:806
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_daemonize(const char *_lock_path)
    -
    Definition: libwebsockets.h:1789
    -
    Definition: libwebsockets.h:2970
    -
    Definition: libwebsockets.h:3884
    +
    Definition: libwebsockets.h:1788
    +
    Definition: libwebsockets.h:2980
    +
    Definition: libwebsockets.h:3894
    LWS_VISIBLE LWS_EXTERN struct lws * lws_adopt_socket_readbuf(struct lws_context *context, lws_sockfd_type accept_fd, const char *readbuf, size_t len)
    Definition: libwebsockets.h:234
    -
    unsigned int auth_mask
    Definition: libwebsockets.h:1824
    -
    Definition: libwebsockets.h:2993
    -
    void * data
    Definition: libwebsockets.h:3895
    -
    const char * uri_replace_from
    Definition: libwebsockets.h:1877
    -
    int(* write)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount, unsigned char *buf, unsigned long len)
    Definition: libwebsockets.h:3757
    +
    unsigned int auth_mask
    Definition: libwebsockets.h:1823
    +
    Definition: libwebsockets.h:3003
    +
    void * data
    Definition: libwebsockets.h:3905
    +
    const char * uri_replace_from
    Definition: libwebsockets.h:1887
    +
    int(* write)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount, unsigned char *buf, unsigned long len)
    Definition: libwebsockets.h:3767
    lws_callback_reasons
    Definition: libwebsockets.h:571
    LWS_VISIBLE LWS_EXTERN int lws_hdr_copy_fragment(struct lws *wsi, char *dest, int len, enum lws_token_indexes h, int frag_idx)
    @@ -109,189 +109,189 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
    LWS_VISIBLE LWS_EXTERN size_t lws_get_peer_write_allowance(struct lws *wsi)
    Definition: libwebsockets.h:655
    LWS_VISIBLE LWS_EXTERN const char *LWS_WARN_UNUSED_RESULT lws_get_library_version(void)
    -
    int(* on_sent)(struct lws_email *email)
    Definition: libwebsockets.h:3915
    +
    int(* on_sent)(struct lws_email *email)
    Definition: libwebsockets.h:3925
    Definition: libwebsockets.h:1328
    -
    struct lws ** pwsi
    Definition: libwebsockets.h:1884
    +
    struct lws ** pwsi
    Definition: libwebsockets.h:1894
    Definition: libwebsockets.h:689
    -
    const char * path
    Definition: libwebsockets.h:1856
    +
    const char * path
    Definition: libwebsockets.h:1866
    LWS_VISIBLE LWS_EXTERN size_t lws_remaining_packet_payload(struct lws *wsi)
    Definition: libwebsockets.h:490
    Definition: libwebsockets.h:1284
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_ext_parse_options(const struct lws_extension *ext, struct lws *wsi, void *ext_user, const struct lws_ext_options *opts, const char *o, int len)
    -
    time_t email_connect_started
    Definition: libwebsockets.h:3931
    +
    time_t email_connect_started
    Definition: libwebsockets.h:3941
    lws_close_status
    Definition: libwebsockets.h:461
    LWS_VISIBLE LWS_EXTERN int lws_callback_all_protocol(struct lws_context *context, const struct lws_protocols *protocol, int reason)
    Definition: libwebsockets.h:501
    -
    int token_len
    Definition: libwebsockets.h:2302
    -
    const struct lws_http_mount * mounts
    Definition: libwebsockets.h:1564
    +
    int token_len
    Definition: libwebsockets.h:2312
    +
    const struct lws_http_mount * mounts
    Definition: libwebsockets.h:1563
    Definition: libwebsockets.h:830
    LWS_VISIBLE LWS_EXTERN struct lws_context *LWS_WARN_UNUSED_RESULT lws_get_context(const struct lws *wsi)
    -
    const char * value
    Definition: libwebsockets.h:1778
    -
    Definition: libwebsockets.h:2621
    -
    Definition: libwebsockets.h:3889
    +
    const char * value
    Definition: libwebsockets.h:1777
    +
    Definition: libwebsockets.h:2631
    +
    Definition: libwebsockets.h:3899
    const char * username
    Definition: libwebsockets.h:1359
    LWS_VISIBLE LWS_EXTERN struct lws * lws_client_connect_via_info(struct lws_client_connect_info *ccinfo)
    -
    const char * protocol
    Definition: libwebsockets.h:1808
    -
    struct lws ** stdwsi
    Definition: libwebsockets.h:3680
    +
    const char * protocol
    Definition: libwebsockets.h:1807
    +
    struct lws ** stdwsi
    Definition: libwebsockets.h:3690
    LWS_VISIBLE LWS_EXTERN int lws_json_dump_vhost(const struct lws_vhost *vh, char *buf, int len)
    Definition: libwebsockets.h:776
    LWS_VISIBLE LWS_EXTERN const char * lws_get_mimetype(const char *file, const struct lws_http_mount *m)
    Definition: libwebsockets.h:1330
    -
    int cache_max_age
    Definition: libwebsockets.h:1822
    -
    long ssl_options_clear
    Definition: libwebsockets.h:1582
    +
    int cache_max_age
    Definition: libwebsockets.h:1821
    +
    long ssl_options_clear
    Definition: libwebsockets.h:1581
    Definition: libwebsockets.h:669
    -
    Definition: libwebsockets.h:1450
    +
    Definition: libwebsockets.h:1449
    LWS_VISIBLE LWS_EXTERN void lws_context_destroy(struct lws_context *context)
    Definition: libwebsockets.h:517
    -
    char * start
    Definition: libwebsockets.h:2241
    +
    char * start
    Definition: libwebsockets.h:2251
    LWS_VISIBLE LWS_EXTERN void lws_set_allocator(void *(*realloc)(void *ptr, size_t size))
    lws_callback_function * callback
    Definition: libwebsockets.h:1179
    -
    Definition: libwebsockets.h:2960
    +
    Definition: libwebsockets.h:2970
    LWS_VISIBLE LWS_EXTERN int lws_get_socket_fd(struct lws *wsi)
    Definition: libwebsockets.h:867
    -
    const char * protocol
    Definition: libwebsockets.h:1862
    +
    const char * protocol
    Definition: libwebsockets.h:1872
    Definition: libwebsockets.h:856
    -
    unsigned int pt_serv_buf_size
    Definition: libwebsockets.h:1569
    +
    unsigned int pt_serv_buf_size
    Definition: libwebsockets.h:1568
    LWS_VISIBLE LWS_EXTERN struct lws * lws_adopt_socket(struct lws_context *context, lws_sockfd_type accept_fd)
    -
    int len
    Definition: libwebsockets.h:2233
    -
    int ka_time
    Definition: libwebsockets.h:1505
    +
    int len
    Definition: libwebsockets.h:2243
    +
    int ka_time
    Definition: libwebsockets.h:1504
    Definition: libwebsockets.h:1404
    LWS_VISIBLE LWS_EXTERN int lws_callback_on_writable_all_protocol(const struct lws_context *context, const struct lws_protocols *protocol)
    LWS_VISIBLE LWS_EXTERN void lws_set_log_level(int level, void(*log_emit_function)(int level, const char *line))
    int count_extensions
    Definition: libwebsockets.h:1289
    -
    Definition: libwebsockets.h:2964
    -
    int port
    Definition: libwebsockets.h:1852
    -
    struct lws_context * context
    Definition: libwebsockets.h:1848
    +
    Definition: libwebsockets.h:2974
    +
    int port
    Definition: libwebsockets.h:1862
    +
    struct lws_context * context
    Definition: libwebsockets.h:1858
    Definition: libwebsockets.h:1336
    -
    int ietf_version_or_minus_one
    Definition: libwebsockets.h:1864
    +
    int ietf_version_or_minus_one
    Definition: libwebsockets.h:1874
    LWS_VISIBLE LWS_EXTERN int lws_callback_all_protocol_vhost(struct lws_vhost *vh, const struct lws_protocols *protocol, int reason)
    -
    Definition: libwebsockets.h:3882
    -
    Definition: libwebsockets.h:1774
    +
    Definition: libwebsockets.h:3892
    +
    Definition: libwebsockets.h:1773
    LWS_VISIBLE LWS_EXTERN int lws_callback_on_writable(struct lws *wsi)
    -
    const char *const * vars
    Definition: libwebsockets.h:2245
    +
    const char *const * vars
    Definition: libwebsockets.h:2255
    Definition: libwebsockets.h:469
    -
    Definition: libwebsockets.h:1847
    +
    Definition: libwebsockets.h:1857
    int lws_extension_callback_function(struct lws_context *context, const struct lws_extension *ext, struct lws *wsi, enum lws_extension_callback_reasons reason, void *user, void *in, size_t len)
    Definition: libwebsockets.h:1079
    int len
    Definition: libwebsockets.h:1015
    -
    Definition: libwebsockets.h:1799
    -
    const char * def
    Definition: libwebsockets.h:1806
    +
    Definition: libwebsockets.h:1798
    +
    const char * def
    Definition: libwebsockets.h:1805
    Definition: libwebsockets.h:630
    Definition: libwebsockets.h:1416
    lws_context_options
    Definition: libwebsockets.h:1387
    Definition: libwebsockets.h:808
    Definition: libwebsockets.h:1353
    -
    Definition: libwebsockets.h:1423
    +
    Definition: libwebsockets.h:1422
    Definition: libwebsockets.h:796
    const char * option_name
    Definition: libwebsockets.h:1012
    -
    Definition: libwebsockets.h:1787
    +
    Definition: libwebsockets.h:1786
    lws_sockfd_type fd
    Definition: libwebsockets.h:439
    -
    const char * ssl_private_key_password
    Definition: libwebsockets.h:1473
    +
    const char * ssl_private_key_password
    Definition: libwebsockets.h:1472
    short events
    Definition: libwebsockets.h:411
    Definition: libwebsockets.h:1297
    const struct lws_extension * extensions
    Definition: libwebsockets.h:1288
    LWS_VISIBLE LWS_EXTERN void lws_set_timeout(struct lws *wsi, enum pending_timeout reason, int secs)
    -
    void * userdata
    Definition: libwebsockets.h:1866
    +
    void * userdata
    Definition: libwebsockets.h:1876
    Definition: libwebsockets.h:627
    Definition: libwebsockets.h:814
    LWS_VISIBLE LWS_EXTERN int lws_service_tsi(struct lws_context *context, int timeout_ms, int tsi)
    -
    unsigned char * data
    Definition: libwebsockets.h:3682
    -
    const struct lws_protocol_vhost_options * extra_mimetypes
    Definition: libwebsockets.h:1815
    +
    unsigned char * data
    Definition: libwebsockets.h:3692
    +
    const struct lws_protocol_vhost_options * extra_mimetypes
    Definition: libwebsockets.h:1814
    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:620
    LWS_VISIBLE LWS_EXTERN const char * lws_urlencode(char *escaped, const char *string, int len)
    Definition: libwebsockets.h:701
    -
    uv_loop_t * loop
    Definition: libwebsockets.h:3897
    +
    uv_loop_t * loop
    Definition: libwebsockets.h:3907
    Definition: libwebsockets.h:799
    Definition: libwebsockets.h:72
    -
    Definition: libwebsockets.h:2996
    -
    int pos
    Definition: libwebsockets.h:2243
    +
    Definition: libwebsockets.h:3006
    +
    int pos
    Definition: libwebsockets.h:2253
    struct lws_plugin * list
    Definition: libwebsockets.h:1298
    LWS_VISIBLE LWS_EXTERN struct lws *LWS_WARN_UNUSED_RESULT lws_client_connect_extended(struct lws_context *clients, const char *address, int port, int ssl_connection, const char *path, const char *host, const char *origin, const char *protocol, int ietf_version_or_minus_one, void *userdata) LWS_WARN_DEPRECATED
    -
    short max_http_header_data
    Definition: libwebsockets.h:1525
    +
    short max_http_header_data
    Definition: libwebsockets.h:1524
    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:1522
    +
    void * provided_client_ssl_ctx
    Definition: libwebsockets.h:1521
    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:1286
    Definition: libwebsockets.h:991
    -
    int ka_probes
    Definition: libwebsockets.h:1508
    +
    int ka_probes
    Definition: libwebsockets.h:1507
    void onError(Socket *s, socket_error_t err)
    -
    const char * origin
    Definition: libwebsockets.h:1860
    +
    const char * origin
    Definition: libwebsockets.h:1870
    SHORT revents
    Definition: libwebsockets.h:400
    -
    const char * method
    Definition: libwebsockets.h:1870
    +
    const char * method
    Definition: libwebsockets.h:1880
    LWS_VISIBLE LWS_EXTERN const char * lws_spa_get_string(struct lws_spa *spa, int n)
    Definition: libwebsockets.h:1085
    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:836
    -
    const struct lws_extension * client_exts
    Definition: libwebsockets.h:1868
    -
    unsigned char origin_protocol
    Definition: libwebsockets.h:1831
    -
    const char * log_filepath
    Definition: libwebsockets.h:1561
    +
    const struct lws_extension * client_exts
    Definition: libwebsockets.h:1878
    +
    unsigned char origin_protocol
    Definition: libwebsockets.h:1830
    +
    const char * log_filepath
    Definition: libwebsockets.h:1560
    Definition: libwebsockets.h:676
    -
    unsigned int max_content_size
    Definition: libwebsockets.h:3905
    +
    unsigned int max_content_size
    Definition: libwebsockets.h:3915
    int option_index
    Definition: libwebsockets.h:1013
    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:672
    -
    const char * uri_replace_to
    Definition: libwebsockets.h:1880
    -
    struct lws * parent_wsi
    Definition: libwebsockets.h:1873
    +
    const char * uri_replace_to
    Definition: libwebsockets.h:1890
    +
    struct lws * parent_wsi
    Definition: libwebsockets.h:1883
    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:3928
    +
    enum lwsgs_smtp_states estate
    Definition: libwebsockets.h:3938
    LWS_VISIBLE LWS_EXTERN int lws_spa_finalize(struct lws_spa *spa)
    Definition: libwebsockets.h:572
    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:1552
    +
    const char *const * plugin_dirs
    Definition: libwebsockets.h:1551
    char name[64]
    Definition: libwebsockets.h:1304
    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:3932
    +
    char email_buf[256]
    Definition: libwebsockets.h:3942
    LWS_VISIBLE LWS_EXTERN int lws_is_ssl(struct lws *wsi)
    Definition: libwebsockets.h:1393
    -
    int(* close)(struct lws *wsi, lws_filefd_type fd)
    Definition: libwebsockets.h:3749
    +
    int(* close)(struct lws *wsi, lws_filefd_type fd)
    Definition: libwebsockets.h:3759
    uv_lib_t lib
    Definition: libwebsockets.h:1300
    x509_crt certificate
    Definition: libwebsockets.h:236
    LWS_VISIBLE LWS_EXTERN void lws_get_peer_addresses(struct lws *wsi, lws_sockfd_type fd, char *name, int name_len, char *rip, int rip_len)
    -
    Definition: libwebsockets.h:3883
    +
    Definition: libwebsockets.h:3893
    LWS_VISIBLE LWS_EXTERN int lws_is_cgi(struct lws *wsi)
    -
    int ssl_connection
    Definition: libwebsockets.h:1854
    +
    int ssl_connection
    Definition: libwebsockets.h:1864
    Definition: libwebsockets.h:1352
    -
    SSL_CTX * provided_client_ssl_ctx
    Definition: libwebsockets.h:1516
    +
    SSL_CTX * provided_client_ssl_ctx
    Definition: libwebsockets.h:1515
    LWS_VISIBLE LWS_EXTERN int lws_rx_flow_control(struct lws *wsi, int enable)
    -
    Definition: libwebsockets.h:2231
    +
    Definition: libwebsockets.h:2241
    LWS_VISIBLE LWS_EXTERN struct lws_plat_file_ops *LWS_WARN_UNUSED_RESULT lws_get_fops(struct lws_context *context)
    Definition: libwebsockets.h:438
    -
    const struct lws_protocol_vhost_options * cgienv
    Definition: libwebsockets.h:1811
    -
    const char * name
    Definition: libwebsockets.h:1777
    -
    unsigned char mountpoint_len
    Definition: libwebsockets.h:1832
    -
    Definition: libwebsockets.h:2967
    +
    const struct lws_protocol_vhost_options * cgienv
    Definition: libwebsockets.h:1810
    +
    const char * name
    Definition: libwebsockets.h:1776
    +
    unsigned char mountpoint_len
    Definition: libwebsockets.h:1831
    +
    Definition: libwebsockets.h:2977
    Definition: libwebsockets.h:1411
    lws_sockfd_type fd
    Definition: libwebsockets.h:398
    -
    Definition: libwebsockets.h:1788
    +
    Definition: libwebsockets.h:1787
    LWS_VISIBLE LWS_EXTERN int lws_is_final_fragment(struct lws *wsi)
    -
    const struct lws_extension * extensions
    Definition: libwebsockets.h:1467
    +
    const struct lws_extension * extensions
    Definition: libwebsockets.h:1466
    Definition: libwebsockets.h:1395
    LWS_VISIBLE LWS_EXTERN void * lws_protocol_vh_priv_zalloc(struct lws_vhost *vhost, const struct lws_protocols *prot, int size)
    Definition: libwebsockets.h:1400
    lws_ext_options_types
    Definition: libwebsockets.h:989
    -
    const struct lws_protocols * protocols
    Definition: libwebsockets.h:1463
    +
    const struct lws_protocols * protocols
    Definition: libwebsockets.h:1462
    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:1014
    -
    const char * ssl_cipher_list
    Definition: libwebsockets.h:1487
    +
    const char * ssl_cipher_list
    Definition: libwebsockets.h:1486
    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:1802
    -
    const char * http_proxy_address
    Definition: libwebsockets.h:1491
    +
    const char * mountpoint
    Definition: libwebsockets.h:1801
    +
    const char * http_proxy_address
    Definition: libwebsockets.h:1490
    rsa_context key
    Definition: libwebsockets.h:237
    -
    const char * ssl_cert_filepath
    Definition: libwebsockets.h:1475
    -
    const char * ecdh_curve
    Definition: libwebsockets.h:1546
    -
    int cgi_timeout
    Definition: libwebsockets.h:1820
    -
    Definition: libwebsockets.h:1790
    +
    const char * ssl_cert_filepath
    Definition: libwebsockets.h:1474
    +
    const char * ecdh_curve
    Definition: libwebsockets.h:1545
    +
    int cgi_timeout
    Definition: libwebsockets.h:1819
    +
    Definition: libwebsockets.h:1789
    Definition: libwebsockets.h:1337
    Definition: libwebsockets.h:409
    Definition: libwebsockets.h:495
    @@ -304,96 +304,96 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
    LWS_VISIBLE LWS_EXTERN struct lws *LWS_WARN_UNUSED_RESULT lws_client_connect(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) LWS_WARN_DEPRECATED
    Definition: libwebsockets.h:674
    LWS_VISIBLE LWS_EXTERN int lwsws_get_config_vhosts(struct lws_context *context, struct lws_context_creation_info *info, const char *d, char **config_strings, int *len)
    -
    Definition: libwebsockets.h:1421
    +
    Definition: libwebsockets.h:1420
    LWS_VISIBLE LWS_EXTERN int lwsl_timestamp(int level, char *p, int len)
    -
    Definition: libwebsockets.h:1433
    -
    uv_timer_t timeout_email
    Definition: libwebsockets.h:3927
    +
    Definition: libwebsockets.h:1432
    +
    uv_timer_t timeout_email
    Definition: libwebsockets.h:3937
    Definition: libwebsockets.h:1402
    -
    short max_http_header_pool
    Definition: libwebsockets.h:1528
    +
    short max_http_header_pool
    Definition: libwebsockets.h:1527
    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:2232
    +
    char * p
    Definition: libwebsockets.h:2242
    x509_crt ca
    Definition: libwebsockets.h:235
    size_t per_session_data_size
    Definition: libwebsockets.h:1183
    Definition: libwebsockets.h:479
    -
    lwsgs_smtp_states
    Definition: libwebsockets.h:3881
    +
    lwsgs_smtp_states
    Definition: libwebsockets.h:3891
    Definition: libwebsockets.h:1414
    Definition: libwebsockets.h:752
    Definition: libwebsockets.h:638
    Definition: libwebsockets.h:1175
    Definition: libwebsockets.h:484
    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:1535
    +
    unsigned int count_threads
    Definition: libwebsockets.h:1534
    const char * email
    Definition: libwebsockets.h:1360
    LWS_VISIBLE LWS_EXTERN int lws_get_random(struct lws_context *context, void *buf, int len)
    Definition: libwebsockets.h:466
    -
    uv_connect_t email_connect_req
    Definition: libwebsockets.h:3929
    -
    const char * server_string
    Definition: libwebsockets.h:1566
    -
    Definition: libwebsockets.h:1426
    +
    uv_connect_t email_connect_req
    Definition: libwebsockets.h:3939
    +
    const char * server_string
    Definition: libwebsockets.h:1565
    +
    Definition: libwebsockets.h:1425
    SHORT events
    Definition: libwebsockets.h:399
    Definition: libwebsockets.h:643
    Definition: libwebsockets.h:1409
    -
    const char * vhost_name
    Definition: libwebsockets.h:1548
    -
    Definition: libwebsockets.h:1791
    +
    const char * vhost_name
    Definition: libwebsockets.h:1547
    +
    Definition: libwebsockets.h:1790
    LWS_VISIBLE LWS_EXTERN const struct lws_protocols * lws_get_protocol(struct lws *wsi)
    Definition: libwebsockets.h:1335
    Definition: libwebsockets.h:1357
    -
    unsigned int fd_limit_per_thread
    Definition: libwebsockets.h:1537
    +
    unsigned int fd_limit_per_thread
    Definition: libwebsockets.h:1536
    LWS_VISIBLE LWS_EXTERN int lws_cgi_write_split_stdout_headers(struct lws *wsi)
    lws_gs_event
    Definition: libwebsockets.h:1351
    LWS_VISIBLE LWS_EXTERN int lws_finalize_startup(struct lws_context *context)
    -
    int ka_interval
    Definition: libwebsockets.h:1512
    +
    int ka_interval
    Definition: libwebsockets.h:1511
    Definition: libwebsockets.h:1334
    -
    int uid
    Definition: libwebsockets.h:1498
    -
    Definition: libwebsockets.h:2623
    +
    int uid
    Definition: libwebsockets.h:1497
    +
    Definition: libwebsockets.h:2633
    LWS_VISIBLE LWS_EXTERN int lws_b64_encode_string(const char *in, int in_len, char *out, int out_size)
    LWS_VISIBLE LWS_EXTERN void * lws_context_user(struct lws_context *context)
    const char * name
    Definition: libwebsockets.h:1176
    LWS_VISIBLE LWS_EXTERN int lws_init_vhost_client_ssl(const struct lws_context_creation_info *info, struct lws_vhost *vhost)
    -
    Definition: libwebsockets.h:3887
    -
    unsigned int http_proxy_port
    Definition: libwebsockets.h:1494
    +
    Definition: libwebsockets.h:3897
    +
    unsigned int http_proxy_port
    Definition: libwebsockets.h:1493
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_partial_buffered(struct lws *wsi)
    -
    unsigned int timeout_secs
    Definition: libwebsockets.h:1541
    -
    int port
    Definition: libwebsockets.h:1451
    +
    unsigned int timeout_secs
    Definition: libwebsockets.h:1540
    +
    int port
    Definition: libwebsockets.h:1450
    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:1500
    +
    unsigned int options
    Definition: libwebsockets.h:1499
    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:1776
    +
    const struct lws_protocol_vhost_options * options
    Definition: libwebsockets.h:1775
    int prev_events
    Definition: libwebsockets.h:441
    -
    int keepalive_timeout
    Definition: libwebsockets.h:1558
    +
    int keepalive_timeout
    Definition: libwebsockets.h:1557
    Definition: libwebsockets.h:1341
    Definition: libwebsockets.h:1002
    -
    Definition: libwebsockets.h:2420
    +
    Definition: libwebsockets.h:2430
    LWS_VISIBLE LWS_EXTERN int lws_write(struct lws *wsi, unsigned char *buf, size_t len, enum lws_write_protocol protocol)
    -
    const struct lws_protocol_vhost_options * pvo
    Definition: libwebsockets.h:1555
    -
    const char * host
    Definition: libwebsockets.h:1858
    +
    const struct lws_protocol_vhost_options * pvo
    Definition: libwebsockets.h:1554
    +
    const char * host
    Definition: libwebsockets.h:1868
    Definition: libwebsockets.h:1011
    Definition: libwebsockets.h:505
    LWS_VISIBLE LWS_EXTERN const struct lws_protocols * lws_vhost_name_to_protocol(struct lws_vhost *vh, const char *name)
    -
    int len
    Definition: libwebsockets.h:3684
    -
    struct lws_http_mount * mount_next
    Definition: libwebsockets.h:1800
    +
    int len
    Definition: libwebsockets.h:3694
    +
    struct lws_http_mount * mount_next
    Definition: libwebsockets.h:1799
    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:1456
    -
    Definition: libwebsockets.h:3743
    +
    const char * iface
    Definition: libwebsockets.h:1455
    +
    Definition: libwebsockets.h:3753
    LWS_VISIBLE LWS_EXTERN void lwsl_hexdump(void *buf, size_t len)
    -
    lws_spa_fileupload_states
    Definition: libwebsockets.h:2618
    +
    lws_spa_fileupload_states
    Definition: libwebsockets.h:2628
    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:463
    Definition: libwebsockets.h:472
    LWS_VISIBLE LWS_EXTERN const char * lws_sql_purify(char *escaped, const char *string, int len)
    -
    uv_tcp_t email_client
    Definition: libwebsockets.h:3930
    +
    uv_tcp_t email_client
    Definition: libwebsockets.h:3940
    LWS_VISIBLE LWS_EXTERN int lws_json_dump_context(const struct lws_context *context, char *buf, int len)
    Definition: libwebsockets.h:397
    Definition: libwebsockets.h:576
    -
    lws_filefd_type(* open)(struct lws *wsi, const char *filename, unsigned long *filelen, int flags)
    Definition: libwebsockets.h:3744
    -
    lws_write_protocol
    Definition: libwebsockets.h:2959
    +
    lws_filefd_type(* open)(struct lws *wsi, const char *filename, unsigned long *filelen, int flags)
    Definition: libwebsockets.h:3754
    +
    lws_write_protocol
    Definition: libwebsockets.h:2969
    const char * client_offer
    Definition: libwebsockets.h:1088
    -
    int(* read)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount, unsigned char *buf, unsigned long len)
    Definition: libwebsockets.h:3754
    +
    int(* read)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount, unsigned char *buf, unsigned long len)
    Definition: libwebsockets.h:3764
    LWS_VISIBLE LWS_EXTERN void lws_cancel_service(struct lws_context *context)
    -
    Definition: libwebsockets.h:2619
    +
    Definition: libwebsockets.h:2629
    Definition: libwebsockets.h:477
    -
    const char * origin
    Definition: libwebsockets.h:1804
    +
    const char * origin
    Definition: libwebsockets.h:1803
    const char * name
    Definition: libwebsockets.h:1003
    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)
    @@ -402,72 +402,73 @@ $(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:653
    const char * name
    Definition: libwebsockets.h:1086
    -
    Definition: libwebsockets.h:3886
    +
    Definition: libwebsockets.h:3896
    short revents
    Definition: libwebsockets.h:412
    lws_extension_callback_function * callback
    Definition: libwebsockets.h:1087
    -
    long ssl_options_set
    Definition: libwebsockets.h:1580
    +
    long ssl_options_set
    Definition: libwebsockets.h:1579
    Definition: libwebsockets.h:915
    LWS_VISIBLE LWS_EXTERN const struct lws_protocols * lws_protocol_get(struct lws *wsi) LWS_WARN_DEPRECATED
    unsigned int mask
    Definition: libwebsockets.h:1345
    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:1785
    +
    lws_mount_protocols
    Definition: libwebsockets.h:1784
    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:410
    -
    unsigned int max_http_header_data2
    Definition: libwebsockets.h:1575
    -
    Definition: libwebsockets.h:1786
    +
    unsigned int max_http_header_data2
    Definition: libwebsockets.h:1574
    +
    Definition: libwebsockets.h:1785
    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:1817
    +
    const struct lws_protocol_vhost_options * interpret
    Definition: libwebsockets.h:1816
    LWS_VISIBLE LWS_EXTERN int lws_service(struct lws_context *context, int timeout_ms)
    Definition: libwebsockets.h:1407
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_http_transaction_completed(struct lws *wsi)
    -
    int count_vars
    Definition: libwebsockets.h:2246
    +
    int count_vars
    Definition: libwebsockets.h:2256
    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:2300
    +
    Definition: libwebsockets.h:2310
    LWS_VISIBLE LWS_EXTERN struct lws_context * lws_create_context(struct lws_context_creation_info *info)
    Definition: libwebsockets.h:632
    -
    void * data
    Definition: libwebsockets.h:2244
    -
    char * content
    Definition: libwebsockets.h:3933
    +
    void * data
    Definition: libwebsockets.h:2254
    +
    char * content
    Definition: libwebsockets.h:3943
    LWS_VISIBLE LWS_EXTERN int lws_interface_to_sa(int ipv6, const char *ifname, struct sockaddr_in *addr, size_t addrlen)
    -
    const struct lws_token_limits * token_limits
    Definition: libwebsockets.h:1470
    -
    lws_process_html_state_cb replace
    Definition: libwebsockets.h:2248
    -
    Definition: libwebsockets.h:3894
    -
    const char * address
    Definition: libwebsockets.h:1850
    -
    unsigned long(* seek_cur)(struct lws *wsi, lws_filefd_type fd, long offset_from_cur_pos)
    Definition: libwebsockets.h:3751
    +
    const struct lws_token_limits * token_limits
    Definition: libwebsockets.h:1469
    +
    lws_process_html_state_cb replace
    Definition: libwebsockets.h:2258
    +
    Definition: libwebsockets.h:3904
    +
    const char * address
    Definition: libwebsockets.h:1860
    +
    unsigned long(* seek_cur)(struct lws *wsi, lws_filefd_type fd, long offset_from_cur_pos)
    Definition: libwebsockets.h:3761
    void * user
    Definition: libwebsockets.h:1204
    int events
    Definition: libwebsockets.h:440
    -
    int(* on_get_body)(struct lws_email *email, char *buf, int len)
    Definition: libwebsockets.h:3920
    -
    Definition: libwebsockets.h:1792
    -
    void * user
    Definition: libwebsockets.h:1502
    -
    Definition: libwebsockets.h:3890
    -
    Definition: libwebsockets.h:2982
    -
    char * token
    Definition: libwebsockets.h:2301
    +
    int(* on_get_body)(struct lws_email *email, char *buf, int len)
    Definition: libwebsockets.h:3930
    +
    Definition: libwebsockets.h:1791
    +
    void * user
    Definition: libwebsockets.h:1501
    +
    Definition: libwebsockets.h:3900
    +
    Definition: libwebsockets.h:2992
    +
    char * token
    Definition: libwebsockets.h:2311
    LWS_VISIBLE LWS_EXTERN void * lws_protocol_vh_priv_get(struct lws_vhost *vhost, const struct lws_protocols *prot)
    int count_protocols
    Definition: libwebsockets.h:1287
    void * l
    Definition: libwebsockets.h:1302
    -
    const char * ssl_private_key_filepath
    Definition: libwebsockets.h:1479
    -
    int max_len
    Definition: libwebsockets.h:2234
    +
    const char * ssl_private_key_filepath
    Definition: libwebsockets.h:1478
    +
    int max_len
    Definition: libwebsockets.h:2244
    Definition: libwebsockets.h:634
    -
    const struct lws_protocol_vhost_options * next
    Definition: libwebsockets.h:1775
    +
    const struct lws_protocol_vhost_options * next
    Definition: libwebsockets.h:1774
    Definition: libwebsockets.h:645
    LWS_VISIBLE LWS_EXTERN void lws_rx_flow_allow_all_protocol(const struct lws_context *context, const struct lws_protocols *protocol)
    -
    Definition: libwebsockets.h:2240
    +
    Definition: libwebsockets.h:2250
    LWS_VISIBLE LWS_EXTERN const char *LWS_WARN_UNUSED_RESULT lws_canonical_hostname(struct lws_context *context)
    Definition: libwebsockets.h:844
    -
    const char * ssl_ca_filepath
    Definition: libwebsockets.h:1485
    -
    int gid
    Definition: libwebsockets.h:1496
    -
    struct lws_vhost * vhost
    Definition: libwebsockets.h:1882
    +
    const char * ssl_ca_filepath
    Definition: libwebsockets.h:1484
    +
    lws_client_connect_ssl_connection_flags
    Definition: libwebsockets.h:1848
    +
    int gid
    Definition: libwebsockets.h:1495
    +
    struct lws_vhost * vhost
    Definition: libwebsockets.h:1892
    int lws_callback_function(struct lws *wsi, enum lws_callback_reasons reason, void *user, void *in, size_t len)
    Definition: libwebsockets.h:937
    LWS_VISIBLE LWS_EXTERN void lws_cancel_service_pt(struct lws *wsi)
    -
    Definition: libwebsockets.h:1428
    +
    Definition: libwebsockets.h:1427
    Definition: libwebsockets.h:513
    -
    Definition: libwebsockets.h:3885
    +
    Definition: libwebsockets.h:3895
    unsigned int api_magic
    Definition: libwebsockets.h:1285
    -
    Definition: libwebsockets.h:1431
    +
    Definition: libwebsockets.h:1430
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_send_pipe_choked(struct lws *wsi)
    -
    Definition: libwebsockets.h:3888
    -
    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:2640
    +
    Definition: libwebsockets.h:3898
    +
    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:2650
    diff --git a/doc/html/navtreedata.js b/doc/html/navtreedata.js index ecc526ed..5f232002 100644 --- a/doc/html/navtreedata.js +++ b/doc/html/navtreedata.js @@ -35,9 +35,9 @@ var NAVTREE = var NAVTREEINDEX = [ "annotated.html", -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5accc9d0d11d1124a21659586164b0962e", -"group__smtp.html#ga116be79bf44f9dc2a97f46e051fe4dc0", -"libwebsockets_8h.html#a9032a3062641d334161c29adcc4fa15d" +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5ac962efd35abf6c402f9fb14aa14f5016", +"group__sha.html#ga7b09ab74646266f0b555103b3bb8dfe5", +"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedbad9cdc12a796e6c7d912278834d9c7dde" ]; var SYNCONMSG = 'click to disable panel synchronisation'; diff --git a/doc/html/navtreeindex0.js b/doc/html/navtreeindex0.js index d3d94eb8..f6f1e694 100644 --- a/doc/html/navtreeindex0.js +++ b/doc/html/navtreeindex0.js @@ -37,217 +37,217 @@ var NAVTREEINDEX0 = "globals_l.html":[9,1,0,1], "globals_type.html":[9,1,2], "group__HTTP-headers-create.html":[7,6,3], -"group__HTTP-headers-create.html#ga29b7d6d2ddfdbaff3d8b607e7e3151b6":[9,0,0,0,40], +"group__HTTP-headers-create.html#ga29b7d6d2ddfdbaff3d8b607e7e3151b6":[9,0,0,0,41], "group__HTTP-headers-create.html#ga29b7d6d2ddfdbaff3d8b607e7e3151b6":[7,6,3,3], -"group__HTTP-headers-create.html#ga2b36bf44405755ff51c1939303b995a8":[9,0,0,0,37], +"group__HTTP-headers-create.html#ga2b36bf44405755ff51c1939303b995a8":[9,0,0,0,38], "group__HTTP-headers-create.html#ga2b36bf44405755ff51c1939303b995a8":[7,6,3,0], +"group__HTTP-headers-create.html#ga4887605ff2242a54db3a7fa01f6f864b":[9,0,0,0,76], "group__HTTP-headers-create.html#ga4887605ff2242a54db3a7fa01f6f864b":[7,6,3,4], -"group__HTTP-headers-create.html#ga4887605ff2242a54db3a7fa01f6f864b":[9,0,0,0,75], +"group__HTTP-headers-create.html#gacc76a5babcb4dce1b01b1955aa7a2faf":[9,0,0,0,40], "group__HTTP-headers-create.html#gacc76a5babcb4dce1b01b1955aa7a2faf":[7,6,3,2], -"group__HTTP-headers-create.html#gacc76a5babcb4dce1b01b1955aa7a2faf":[9,0,0,0,39], -"group__HTTP-headers-create.html#gaf74adb761b22566ad70004882712dce1":[9,0,0,0,38], "group__HTTP-headers-create.html#gaf74adb761b22566ad70004882712dce1":[7,6,3,1], +"group__HTTP-headers-create.html#gaf74adb761b22566ad70004882712dce1":[9,0,0,0,39], "group__HTTP-headers-read.html":[7,6,4], "group__HTTP-headers-read.html#ga2c0597b2ef1d2cee35736c338bcbd17b":[7,6,4,7], -"group__HTTP-headers-read.html#ga2c0597b2ef1d2cee35736c338bcbd17b":[9,0,0,0,142], -"group__HTTP-headers-read.html#ga594f3d0ece5b09c2ccf9f98ea533bb4e":[9,0,0,0,96], +"group__HTTP-headers-read.html#ga2c0597b2ef1d2cee35736c338bcbd17b":[9,0,0,0,143], +"group__HTTP-headers-read.html#ga594f3d0ece5b09c2ccf9f98ea533bb4e":[9,0,0,0,97], "group__HTTP-headers-read.html#ga594f3d0ece5b09c2ccf9f98ea533bb4e":[7,6,4,5], -"group__HTTP-headers-read.html#ga6ce6aa1c0155ea42b7708bed271d1c77":[9,0,0,0,94], +"group__HTTP-headers-read.html#ga6ce6aa1c0155ea42b7708bed271d1c77":[9,0,0,0,95], "group__HTTP-headers-read.html#ga6ce6aa1c0155ea42b7708bed271d1c77":[7,6,4,3], -"group__HTTP-headers-read.html#ga6e747906f9d76532ec118d6ef418b82e":[9,0,0,0,30], -"group__HTTP-headers-read.html#ga84e9ce5e71a77501a0998ac403a984c2":[9,0,0,0,92], +"group__HTTP-headers-read.html#ga6e747906f9d76532ec118d6ef418b82e":[9,0,0,0,31], +"group__HTTP-headers-read.html#ga84e9ce5e71a77501a0998ac403a984c2":[9,0,0,0,93], "group__HTTP-headers-read.html#ga84e9ce5e71a77501a0998ac403a984c2":[7,6,4,2], -"group__HTTP-headers-read.html#ga8ade0e1ffb0da7e62b989d8d867bf6c8":[9,0,0,0,97], +"group__HTTP-headers-read.html#ga8ade0e1ffb0da7e62b989d8d867bf6c8":[9,0,0,0,98], "group__HTTP-headers-read.html#ga8ade0e1ffb0da7e62b989d8d867bf6c8":[7,6,4,6], -"group__HTTP-headers-read.html#gaa427cad61a9a5e3004afd65c4527b5e9":[9,0,0,0,95], "group__HTTP-headers-read.html#gaa427cad61a9a5e3004afd65c4527b5e9":[7,6,4,4], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea03293996964a8bb617215508908048d4":[9,0,0,0,30,42], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea05c73ad09f25570a50068de13333e41a":[9,0,0,0,30,57], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea0784fa0e5bdbacd1e14c2d6ba0c42992":[9,0,0,0,30,27], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea0830a0c1c62c444ade7cf15599e92345":[9,0,0,0,30,47], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea0a3c723f67cb6d95dba0c0ccc7d898f8":[9,0,0,0,30,69], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea0dd5ce6fa8932e0d378b86c393d8f726":[9,0,0,0,30,11], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea11ed9b0cc3b4525c830de7185fd8d7df":[9,0,0,0,30,62], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea1347e093d73e88489ba3ebda56a393a5":[9,0,0,0,30,32], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea138fedfdb81765272d22b0eca9aec22b":[9,0,0,0,30,9], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea157c1db7d8edd3cd3b649e7756a559c8":[9,0,0,0,30,80], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea166e60d6689436c1fb9169438d5db1b9":[9,0,0,0,30,13], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea1d41be78df2704c54b906f7f0abbaa30":[9,0,0,0,30,51], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea1ee866e12a483229599f4e3cfc358b36":[9,0,0,0,30,53], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea21ac48d2a499f6afa44cee92cebd8ae3":[9,0,0,0,30,82], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea220975eeb65cac57691adb3761a492bb":[9,0,0,0,30,50], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea228ece9e187ddbb80236851e9a09145c":[9,0,0,0,30,83], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea277d11b0d5e7fdfc6b5fb45470e6f63e":[9,0,0,0,30,39], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea2be8537e80387a88197d3ed62ac3b954":[9,0,0,0,30,45], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea2efae4ba6646ba040c371706f7f3a125":[9,0,0,0,30,56], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea3733863fb466c1df6b00c9384a53e544":[9,0,0,0,30,85], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea385f0e1933f81529307fff61eb08ff8d":[9,0,0,0,30,54], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea3ac4744411849aff89001ee0350aed75":[9,0,0,0,30,60], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea3cf47b821d473b717002b22619a9814e":[9,0,0,0,30,7], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea3ef26b531c1c2416850ebd539f08ba5e":[9,0,0,0,30,17], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea3fd7c7c9587953adc8f317a615df6b83":[9,0,0,0,30,14], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea400831fe4ba52d4c454364a81ea3bfe4":[9,0,0,0,30,91], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea428409a7aaea6446b660574e4097c0bd":[9,0,0,0,30,90], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea439ada24e20de209e08e7dd398ca61ac":[9,0,0,0,30,66], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea525ee6d2330fca0929df75ffb8dec68e":[9,0,0,0,30,33], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea52a30bd1a5ca619ab19bb8178138e42f":[9,0,0,0,30,58], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea549fcdd8300f0c7434289db6326ec06a":[9,0,0,0,30,22], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea56913c617d46273743bb187bcd8e90c2":[9,0,0,0,30,65], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea569588399651cdd6b81de40be4b73fd8":[9,0,0,0,30,46], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea57ff348ebbae88bf904bc64ef284d83b":[9,0,0,0,30,20], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea598578cda71fe6ca34320bbd6ba1e887":[9,0,0,0,30,55], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea5dcd48b2643d8a82a97b7abbc3928ea8":[9,0,0,0,30,81], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea5e005569744e3246ba40d524f9a84fe4":[9,0,0,0,30,44], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea6164d17e9598f89c822b4be55814de0a":[9,0,0,0,30,48], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea63e1e08da7555313caf632a819db27d4":[9,0,0,0,30,41], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea669e4eea57595f569f329bfba900a15d":[9,0,0,0,30,3], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea693a74f3cd695016120bfdae3d3ced1a":[9,0,0,0,30,68], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea70b452bb6ce670e32c30fa237bceb731":[9,0,0,0,30,15], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea7460d076c52a9fae65c9e00bac05ef19":[9,0,0,0,30,76], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea751322eb9f58fa33bf1f6e4923ff9abb":[9,0,0,0,30,1], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea7708c82134391d257d6c354ae7bf1429":[9,0,0,0,30,31], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea78834452a5833032294abe1aa42055c6":[9,0,0,0,30,64], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea7892390328672ed812b3b68bc3e0fe40":[9,0,0,0,30,52], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea78fbb32e1809d5767e55de3181d454b0":[9,0,0,0,30,19], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea7e80eff7eefa68741f0a776d6d8feeae":[9,0,0,0,30,78], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea832a110c8b9eb42890f252a756c81bde":[9,0,0,0,30,36], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea86b3c4cf71dc5c5b441243db99ca696a":[9,0,0,0,30,61], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea883a86db0c05266214affd78d37e871f":[9,0,0,0,30,86], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea8913c5b1378b1ffad7e2da975c454d15":[9,0,0,0,30,26], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea8d7393b324a076186bbde01a2cfe6b62":[9,0,0,0,30,49], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea8d9809cf381705f73af48d8f6809412b":[9,0,0,0,30,24], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea8f6a44a37c29cb5ade4c5989467a880b":[9,0,0,0,30,75], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea8ff0b2f6666e008de14d9b9721b87ead":[9,0,0,0,30,89], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea9004d6ff6b16b8877f760545a3c7be60":[9,0,0,0,30,63], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaa0cad0c7a20ac23945a33dbc3d726718":[9,0,0,0,30,30], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaa566f2c37d9a459ca95eee347cca68d0":[9,0,0,0,30,67], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaa76ea751f1ee86567d27e9e30075d6db":[9,0,0,0,30,40], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaa84e4902ebeb7ab468e3a4bd4acf4f90":[9,0,0,0,30,84], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaa8c8eb9b32feb43ec214d8469655a0df":[9,0,0,0,30,87], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaab4585e187936b4f2abf22e9138ee271":[9,0,0,0,30,5], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaae70d627de34f9c881445f6fbcfcc2dd":[9,0,0,0,30,38], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eab0926aa28ea9bb73d2b0124c05c30a78":[9,0,0,0,30,88], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eab2339b9e75c79dae3547255d1fb046cd":[9,0,0,0,30,2], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eab460c34b18e1ae54219c3fb9e60544ef":[9,0,0,0,30,4], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaba11ed0aa8c8c7bd71d971a234df0a72":[9,0,0,0,30,21], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eabfb2738a1148ec7c039f2af640b28430":[9,0,0,0,30,71], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eac7157acd472d24de05aee3de57b8dc8a":[9,0,0,0,30,12], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eac9a937e393da4c3a77cf82463265dcee":[9,0,0,0,30,6], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ead32022a286b9cc6fbe60b1a0411370a7":[9,0,0,0,30,28], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ead603502e2545c533c4c01ba39e35a2b0":[9,0,0,0,30,16], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eadb08a1c7b1f76e2962d44149bf488bf8":[9,0,0,0,30,34], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eadbb64ba8a29fee913ded2163a5d16615":[9,0,0,0,30,10], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eadff4760ab45fc182ab1e1fb68afa6714":[9,0,0,0,30,70], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eae215f7e72fea4458fd971cdcb45d8e04":[9,0,0,0,30,18], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eae24b2d70918c70e034ff574a516e0023":[9,0,0,0,30,59], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eae5d5ca0131fbea1df03d7ad6d69ebfbd":[9,0,0,0,30,25], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eae6286060884d4c80a88fa94fec58dda3":[9,0,0,0,30,0], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eae898ee2a1e374f7d98aa483940c91511":[9,0,0,0,30,73], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eae9d2323ce213a112ac90361f04a1ee5a":[9,0,0,0,30,43], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaec69fb61493d1c67316c02259b86bdc2":[9,0,0,0,30,35], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaec821397393facee38ddd4119473b992":[9,0,0,0,30,29], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaee14b94fcd4ab788e313e0789bec0cdc":[9,0,0,0,30,77], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaeef14469c992ebb09a43a8548db37401":[9,0,0,0,30,23], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaf2b7eac7ff98aea6d9b240f6f51995c3":[9,0,0,0,30,72], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaf48e3b9c89dba34054ea0833dbad4b57":[9,0,0,0,30,8], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaf567d4d400062fab44f1b96c64cb93ac":[9,0,0,0,30,37], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaf64cb8232e172aaa019c38b398d0a0bb":[9,0,0,0,30,74], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eafc1e8568187b2de76e2ddd5cc692908e":[9,0,0,0,30,79], +"group__HTTP-headers-read.html#gaa427cad61a9a5e3004afd65c4527b5e9":[9,0,0,0,96], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea03293996964a8bb617215508908048d4":[9,0,0,0,31,42], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea05c73ad09f25570a50068de13333e41a":[9,0,0,0,31,57], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea0784fa0e5bdbacd1e14c2d6ba0c42992":[9,0,0,0,31,27], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea0830a0c1c62c444ade7cf15599e92345":[9,0,0,0,31,47], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea0a3c723f67cb6d95dba0c0ccc7d898f8":[9,0,0,0,31,69], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea0dd5ce6fa8932e0d378b86c393d8f726":[9,0,0,0,31,11], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea11ed9b0cc3b4525c830de7185fd8d7df":[9,0,0,0,31,62], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea1347e093d73e88489ba3ebda56a393a5":[9,0,0,0,31,32], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea138fedfdb81765272d22b0eca9aec22b":[9,0,0,0,31,9], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea157c1db7d8edd3cd3b649e7756a559c8":[9,0,0,0,31,80], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea166e60d6689436c1fb9169438d5db1b9":[9,0,0,0,31,13], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea1d41be78df2704c54b906f7f0abbaa30":[9,0,0,0,31,51], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea1ee866e12a483229599f4e3cfc358b36":[9,0,0,0,31,53], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea21ac48d2a499f6afa44cee92cebd8ae3":[9,0,0,0,31,82], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea220975eeb65cac57691adb3761a492bb":[9,0,0,0,31,50], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea228ece9e187ddbb80236851e9a09145c":[9,0,0,0,31,83], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea277d11b0d5e7fdfc6b5fb45470e6f63e":[9,0,0,0,31,39], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea2be8537e80387a88197d3ed62ac3b954":[9,0,0,0,31,45], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea2efae4ba6646ba040c371706f7f3a125":[9,0,0,0,31,56], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea3733863fb466c1df6b00c9384a53e544":[9,0,0,0,31,85], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea385f0e1933f81529307fff61eb08ff8d":[9,0,0,0,31,54], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea3ac4744411849aff89001ee0350aed75":[9,0,0,0,31,60], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea3cf47b821d473b717002b22619a9814e":[9,0,0,0,31,7], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea3ef26b531c1c2416850ebd539f08ba5e":[9,0,0,0,31,17], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea3fd7c7c9587953adc8f317a615df6b83":[9,0,0,0,31,14], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea400831fe4ba52d4c454364a81ea3bfe4":[9,0,0,0,31,91], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea428409a7aaea6446b660574e4097c0bd":[9,0,0,0,31,90], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea439ada24e20de209e08e7dd398ca61ac":[9,0,0,0,31,66], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea525ee6d2330fca0929df75ffb8dec68e":[9,0,0,0,31,33], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea52a30bd1a5ca619ab19bb8178138e42f":[9,0,0,0,31,58], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea549fcdd8300f0c7434289db6326ec06a":[9,0,0,0,31,22], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea56913c617d46273743bb187bcd8e90c2":[9,0,0,0,31,65], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea569588399651cdd6b81de40be4b73fd8":[9,0,0,0,31,46], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea57ff348ebbae88bf904bc64ef284d83b":[9,0,0,0,31,20], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea598578cda71fe6ca34320bbd6ba1e887":[9,0,0,0,31,55], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea5dcd48b2643d8a82a97b7abbc3928ea8":[9,0,0,0,31,81], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea5e005569744e3246ba40d524f9a84fe4":[9,0,0,0,31,44], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea6164d17e9598f89c822b4be55814de0a":[9,0,0,0,31,48], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea63e1e08da7555313caf632a819db27d4":[9,0,0,0,31,41], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea669e4eea57595f569f329bfba900a15d":[9,0,0,0,31,3], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea693a74f3cd695016120bfdae3d3ced1a":[9,0,0,0,31,68], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea70b452bb6ce670e32c30fa237bceb731":[9,0,0,0,31,15], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea7460d076c52a9fae65c9e00bac05ef19":[9,0,0,0,31,76], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea751322eb9f58fa33bf1f6e4923ff9abb":[9,0,0,0,31,1], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea7708c82134391d257d6c354ae7bf1429":[9,0,0,0,31,31], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea78834452a5833032294abe1aa42055c6":[9,0,0,0,31,64], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea7892390328672ed812b3b68bc3e0fe40":[9,0,0,0,31,52], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea78fbb32e1809d5767e55de3181d454b0":[9,0,0,0,31,19], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea7e80eff7eefa68741f0a776d6d8feeae":[9,0,0,0,31,78], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea832a110c8b9eb42890f252a756c81bde":[9,0,0,0,31,36], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea86b3c4cf71dc5c5b441243db99ca696a":[9,0,0,0,31,61], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea883a86db0c05266214affd78d37e871f":[9,0,0,0,31,86], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea8913c5b1378b1ffad7e2da975c454d15":[9,0,0,0,31,26], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea8d7393b324a076186bbde01a2cfe6b62":[9,0,0,0,31,49], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea8d9809cf381705f73af48d8f6809412b":[9,0,0,0,31,24], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea8f6a44a37c29cb5ade4c5989467a880b":[9,0,0,0,31,75], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea8ff0b2f6666e008de14d9b9721b87ead":[9,0,0,0,31,89], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea9004d6ff6b16b8877f760545a3c7be60":[9,0,0,0,31,63], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaa0cad0c7a20ac23945a33dbc3d726718":[9,0,0,0,31,30], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaa566f2c37d9a459ca95eee347cca68d0":[9,0,0,0,31,67], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaa76ea751f1ee86567d27e9e30075d6db":[9,0,0,0,31,40], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaa84e4902ebeb7ab468e3a4bd4acf4f90":[9,0,0,0,31,84], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaa8c8eb9b32feb43ec214d8469655a0df":[9,0,0,0,31,87], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaab4585e187936b4f2abf22e9138ee271":[9,0,0,0,31,5], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaae70d627de34f9c881445f6fbcfcc2dd":[9,0,0,0,31,38], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eab0926aa28ea9bb73d2b0124c05c30a78":[9,0,0,0,31,88], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eab2339b9e75c79dae3547255d1fb046cd":[9,0,0,0,31,2], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eab460c34b18e1ae54219c3fb9e60544ef":[9,0,0,0,31,4], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaba11ed0aa8c8c7bd71d971a234df0a72":[9,0,0,0,31,21], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eabfb2738a1148ec7c039f2af640b28430":[9,0,0,0,31,71], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eac7157acd472d24de05aee3de57b8dc8a":[9,0,0,0,31,12], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eac9a937e393da4c3a77cf82463265dcee":[9,0,0,0,31,6], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ead32022a286b9cc6fbe60b1a0411370a7":[9,0,0,0,31,28], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ead603502e2545c533c4c01ba39e35a2b0":[9,0,0,0,31,16], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eadb08a1c7b1f76e2962d44149bf488bf8":[9,0,0,0,31,34], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eadbb64ba8a29fee913ded2163a5d16615":[9,0,0,0,31,10], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eadff4760ab45fc182ab1e1fb68afa6714":[9,0,0,0,31,70], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eae215f7e72fea4458fd971cdcb45d8e04":[9,0,0,0,31,18], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eae24b2d70918c70e034ff574a516e0023":[9,0,0,0,31,59], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eae5d5ca0131fbea1df03d7ad6d69ebfbd":[9,0,0,0,31,25], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eae6286060884d4c80a88fa94fec58dda3":[9,0,0,0,31,0], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eae898ee2a1e374f7d98aa483940c91511":[9,0,0,0,31,73], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eae9d2323ce213a112ac90361f04a1ee5a":[9,0,0,0,31,43], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaec69fb61493d1c67316c02259b86bdc2":[9,0,0,0,31,35], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaec821397393facee38ddd4119473b992":[9,0,0,0,31,29], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaee14b94fcd4ab788e313e0789bec0cdc":[9,0,0,0,31,77], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaeef14469c992ebb09a43a8548db37401":[9,0,0,0,31,23], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaf2b7eac7ff98aea6d9b240f6f51995c3":[9,0,0,0,31,72], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaf48e3b9c89dba34054ea0833dbad4b57":[9,0,0,0,31,8], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaf567d4d400062fab44f1b96c64cb93ac":[9,0,0,0,31,37], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaf64cb8232e172aaa019c38b398d0a0bb":[9,0,0,0,31,74], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eafc1e8568187b2de76e2ddd5cc692908e":[9,0,0,0,31,79], "group__Protocols-and-Plugins.html":[7,10], "group__Protocols-and-Plugins.html#ga106b37ae9c247e84d191ab09441adc43":[7,10,4], -"group__Protocols-and-Plugins.html#ga106b37ae9c247e84d191ab09441adc43":[9,0,0,0,76], +"group__Protocols-and-Plugins.html#ga106b37ae9c247e84d191ab09441adc43":[9,0,0,0,77], "group__Protocols-and-Plugins.html#ga25754726d97c5f519d313e691a9fe29d":[7,10,9], -"group__Protocols-and-Plugins.html#ga25754726d97c5f519d313e691a9fe29d":[9,0,0,0,150], +"group__Protocols-and-Plugins.html#ga25754726d97c5f519d313e691a9fe29d":[9,0,0,0,151], "group__Protocols-and-Plugins.html#ga40994491e1567f91f579d2b444775266":[9,0,0,0,12], "group__Protocols-and-Plugins.html#ga72ad550786ca7976463589d347e62112":[7,10,5], -"group__Protocols-and-Plugins.html#ga72ad550786ca7976463589d347e62112":[9,0,0,0,88], +"group__Protocols-and-Plugins.html#ga72ad550786ca7976463589d347e62112":[9,0,0,0,89], "group__Protocols-and-Plugins.html#ga83f7a924ba790fa273476075a59f08b0":[9,0,0,0,11], "group__Protocols-and-Plugins.html#ga8bbe5e65faca068845704bab911a5030":[7,10,6], -"group__Protocols-and-Plugins.html#ga8bbe5e65faca068845704bab911a5030":[9,0,0,0,114], +"group__Protocols-and-Plugins.html#ga8bbe5e65faca068845704bab911a5030":[9,0,0,0,115], "group__Protocols-and-Plugins.html#gaec0c0477288ff3f83aff38d357b883d1":[7,10,8], -"group__Protocols-and-Plugins.html#gaec0c0477288ff3f83aff38d357b883d1":[9,0,0,0,116], +"group__Protocols-and-Plugins.html#gaec0c0477288ff3f83aff38d357b883d1":[9,0,0,0,117], "group__Protocols-and-Plugins.html#gaf3be4243443baac0f8be1fcfb4d25129":[7,10,7], -"group__Protocols-and-Plugins.html#gaf3be4243443baac0f8be1fcfb4d25129":[9,0,0,0,115], +"group__Protocols-and-Plugins.html#gaf3be4243443baac0f8be1fcfb4d25129":[9,0,0,0,116], "group__callback-when-writeable.html":[7,1], "group__callback-when-writeable.html#ga13c984d8c5a44a745fd02bc2fba36053":[7,1,1], -"group__callback-when-writeable.html#ga13c984d8c5a44a745fd02bc2fba36053":[9,0,0,0,46], -"group__callback-when-writeable.html#ga60939cf0c073d933fde3d17f3591caf5":[9,0,0,0,50], +"group__callback-when-writeable.html#ga13c984d8c5a44a745fd02bc2fba36053":[9,0,0,0,47], "group__callback-when-writeable.html#ga60939cf0c073d933fde3d17f3591caf5":[7,1,5], +"group__callback-when-writeable.html#ga60939cf0c073d933fde3d17f3591caf5":[9,0,0,0,51], "group__callback-when-writeable.html#ga8570860e191b62db264f2bac67354ea8":[7,1,4], -"group__callback-when-writeable.html#ga8570860e191b62db264f2bac67354ea8":[9,0,0,0,49], +"group__callback-when-writeable.html#ga8570860e191b62db264f2bac67354ea8":[9,0,0,0,50], "group__callback-when-writeable.html#ga941caaa468bc507b1cae52275f58800d":[7,1,2], -"group__callback-when-writeable.html#ga941caaa468bc507b1cae52275f58800d":[9,0,0,0,47], +"group__callback-when-writeable.html#ga941caaa468bc507b1cae52275f58800d":[9,0,0,0,48], "group__callback-when-writeable.html#gaa709e02a10558753c851e58f1e2c16ba":[7,1,7], -"group__callback-when-writeable.html#gaa709e02a10558753c851e58f1e2c16ba":[9,0,0,0,91], +"group__callback-when-writeable.html#gaa709e02a10558753c851e58f1e2c16ba":[9,0,0,0,92], "group__callback-when-writeable.html#gabbe4655c7eeb3eb1671b2323ec6b3107":[7,1,3], -"group__callback-when-writeable.html#gabbe4655c7eeb3eb1671b2323ec6b3107":[9,0,0,0,48], +"group__callback-when-writeable.html#gabbe4655c7eeb3eb1671b2323ec6b3107":[9,0,0,0,49], "group__callback-when-writeable.html#gac4643fe16b0940ae5b68b4ee6195cbde":[7,1,6], -"group__callback-when-writeable.html#gac4643fe16b0940ae5b68b4ee6195cbde":[9,0,0,0,87], +"group__callback-when-writeable.html#gac4643fe16b0940ae5b68b4ee6195cbde":[9,0,0,0,88], "group__callback-when-writeable.html#gacf04bbe089f47c971c6408c5efe2ac70":[7,1,0], -"group__callback-when-writeable.html#gacf04bbe089f47c971c6408c5efe2ac70":[9,0,0,0,45], +"group__callback-when-writeable.html#gacf04bbe089f47c971c6408c5efe2ac70":[9,0,0,0,46], "group__cgi.html":[7,19], "group__client.html":[7,2], -"group__client.html#ga0c966136905f467816307cfba6deb5fd":[7,2,3], -"group__client.html#ga0c966136905f467816307cfba6deb5fd":[9,0,0,0,60], -"group__client.html#ga4450c34200bf9dab3beb90ef23221870":[9,0,0,0,98], -"group__client.html#ga4af0a20108a95e8b6d94dd4d80055ff3":[7,2,1], -"group__client.html#ga4af0a20108a95e8b6d94dd4d80055ff3":[9,0,0,0,58], -"group__client.html#ga4f44b8230e6732816ca5cd8d1aaaf340":[7,2,4], -"group__client.html#ga4f44b8230e6732816ca5cd8d1aaaf340":[9,0,0,0,101], -"group__client.html#gac6a8558b4410961a880241c2ac1271e2":[7,2,2], -"group__client.html#gac6a8558b4410961a880241c2ac1271e2":[9,0,0,0,59], +"group__client.html#ga0c966136905f467816307cfba6deb5fd":[7,2,4], +"group__client.html#ga0c966136905f467816307cfba6deb5fd":[9,0,0,0,61], +"group__client.html#ga4450c34200bf9dab3beb90ef23221870":[9,0,0,0,99], +"group__client.html#ga4af0a20108a95e8b6d94dd4d80055ff3":[7,2,2], +"group__client.html#ga4af0a20108a95e8b6d94dd4d80055ff3":[9,0,0,0,59], +"group__client.html#ga4f44b8230e6732816ca5cd8d1aaaf340":[7,2,5], +"group__client.html#ga4f44b8230e6732816ca5cd8d1aaaf340":[9,0,0,0,102], +"group__client.html#ga96f3dbad54b2853969cfa933d66871ce":[9,0,0,0,21], +"group__client.html#ga96f3dbad54b2853969cfa933d66871ce":[7,2,1], +"group__client.html#gac6a8558b4410961a880241c2ac1271e2":[9,0,0,0,60], +"group__client.html#gac6a8558b4410961a880241c2ac1271e2":[7,2,3], +"group__client.html#gga96f3dbad54b2853969cfa933d66871cea7051e79bb97b69862f2ff00ae5298ec7":[9,0,0,0,21,0], +"group__client.html#gga96f3dbad54b2853969cfa933d66871cea89866ab6a749aaa1684158c55f826b35":[9,0,0,0,21,2], +"group__client.html#gga96f3dbad54b2853969cfa933d66871ceafc72c0ffbc7462bdddd4ce7bd99ac092":[9,0,0,0,21,1], "group__context-and-vhost.html":[7,4], "group__context-and-vhost.html#ga06e77ce2916f8bc9826ef8d9d68e3932":[7,4,8], -"group__context-and-vhost.html#ga06e77ce2916f8bc9826ef8d9d68e3932":[9,0,0,0,93], +"group__context-and-vhost.html#ga06e77ce2916f8bc9826ef8d9d68e3932":[9,0,0,0,94], "group__context-and-vhost.html#ga0c54c667ccd9b8b3dddcd123ca72f87c":[7,4,7], -"group__context-and-vhost.html#ga0c54c667ccd9b8b3dddcd123ca72f87c":[9,0,0,0,65], +"group__context-and-vhost.html#ga0c54c667ccd9b8b3dddcd123ca72f87c":[9,0,0,0,66], "group__context-and-vhost.html#ga341064721add2618ae1b29717493a212":[7,4,14], -"group__context-and-vhost.html#ga341064721add2618ae1b29717493a212":[9,0,0,0,157], +"group__context-and-vhost.html#ga341064721add2618ae1b29717493a212":[9,0,0,0,158], "group__context-and-vhost.html#ga41c2d763f78cc248df3b9f8645dbd2a5":[7,4,3], -"group__context-and-vhost.html#ga41c2d763f78cc248df3b9f8645dbd2a5":[9,0,0,0,22], +"group__context-and-vhost.html#ga41c2d763f78cc248df3b9f8645dbd2a5":[9,0,0,0,23], "group__context-and-vhost.html#ga7e9d5405547a457d86e0b4f0ae2bb1c4":[7,4,11], -"group__context-and-vhost.html#ga7e9d5405547a457d86e0b4f0ae2bb1c4":[9,0,0,0,132], +"group__context-and-vhost.html#ga7e9d5405547a457d86e0b4f0ae2bb1c4":[9,0,0,0,133], "group__context-and-vhost.html#ga8db03e19a372e34ac25cf21af894a02c":[7,4,12], -"group__context-and-vhost.html#ga8db03e19a372e34ac25cf21af894a02c":[9,0,0,0,149], +"group__context-and-vhost.html#ga8db03e19a372e34ac25cf21af894a02c":[9,0,0,0,150], "group__context-and-vhost.html#ga8ee0314028755f1ddfa9428e09b4fddb":[7,4,4], -"group__context-and-vhost.html#ga8ee0314028755f1ddfa9428e09b4fddb":[9,0,0,0,62], +"group__context-and-vhost.html#ga8ee0314028755f1ddfa9428e09b4fddb":[9,0,0,0,63], "group__context-and-vhost.html#ga94e6cc2223c4eec316b13bcebc3628b6":[7,4,10], -"group__context-and-vhost.html#ga94e6cc2223c4eec316b13bcebc3628b6":[9,0,0,0,107], +"group__context-and-vhost.html#ga94e6cc2223c4eec316b13bcebc3628b6":[9,0,0,0,108], "group__context-and-vhost.html#ga98d88c9080fd89c37114363a6474ea73":[7,4,13], -"group__context-and-vhost.html#ga98d88c9080fd89c37114363a6474ea73":[9,0,0,0,156], +"group__context-and-vhost.html#ga98d88c9080fd89c37114363a6474ea73":[9,0,0,0,157], "group__context-and-vhost.html#gae2134657cdd2ea7a59e13ad314e4c50d":[7,4,9], -"group__context-and-vhost.html#gae2134657cdd2ea7a59e13ad314e4c50d":[9,0,0,0,106], +"group__context-and-vhost.html#gae2134657cdd2ea7a59e13ad314e4c50d":[9,0,0,0,107], "group__context-and-vhost.html#gaeb12f934bfd178bd2132a9e73fc641da":[7,4,5], -"group__context-and-vhost.html#gaeb12f934bfd178bd2132a9e73fc641da":[9,0,0,0,63], +"group__context-and-vhost.html#gaeb12f934bfd178bd2132a9e73fc641da":[9,0,0,0,64], "group__context-and-vhost.html#gaf2fff58562caab7510c41eeac85a8648":[7,4,6], -"group__context-and-vhost.html#gaf2fff58562caab7510c41eeac85a8648":[9,0,0,0,64], +"group__context-and-vhost.html#gaf2fff58562caab7510c41eeac85a8648":[9,0,0,0,65], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a1b2f8bde0f62adc7ebe81b2043f34c0c":[7,4,3,8], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a1b2f8bde0f62adc7ebe81b2043f34c0c":[9,0,0,0,22,8], +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a1b2f8bde0f62adc7ebe81b2043f34c0c":[9,0,0,0,23,8], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a1cc4562d05cba52a6dfa0697a65ade0d":[7,4,3,2], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a1cc4562d05cba52a6dfa0697a65ade0d":[9,0,0,0,22,2], +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a1cc4562d05cba52a6dfa0697a65ade0d":[9,0,0,0,23,2], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a273d9975675130de0c6dc937dde7c8a6":[7,4,3,3], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a273d9975675130de0c6dc937dde7c8a6":[9,0,0,0,22,3], +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a273d9975675130de0c6dc937dde7c8a6":[9,0,0,0,23,3], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a274ed462a1a9239eb6ddf9007f5b7092":[7,4,3,0], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a274ed462a1a9239eb6ddf9007f5b7092":[9,0,0,0,22,0], +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a274ed462a1a9239eb6ddf9007f5b7092":[9,0,0,0,23,0], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a34ab36e68c0d593b6f19b8d5ef1240a9":[7,4,3,4], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a34ab36e68c0d593b6f19b8d5ef1240a9":[9,0,0,0,22,4], +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a34ab36e68c0d593b6f19b8d5ef1240a9":[9,0,0,0,23,4], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a4832187186c4d130c68051214cd42ada":[7,4,3,10], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a4832187186c4d130c68051214cd42ada":[9,0,0,0,22,10], +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a4832187186c4d130c68051214cd42ada":[9,0,0,0,23,10], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a4933347a821e73c3f1e13fb6bfc7ad93":[7,4,3,5], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a4933347a821e73c3f1e13fb6bfc7ad93":[9,0,0,0,22,5], +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a4933347a821e73c3f1e13fb6bfc7ad93":[9,0,0,0,23,5], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a6582c985ee0ceaadc1d277030eae2d7c":[7,4,3,1], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a6582c985ee0ceaadc1d277030eae2d7c":[9,0,0,0,22,1], +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a6582c985ee0ceaadc1d277030eae2d7c":[9,0,0,0,23,1], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a7fed6a527c8d5e0acac1b4179644583a":[7,4,3,11], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a7fed6a527c8d5e0acac1b4179644583a":[9,0,0,0,22,11], +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a7fed6a527c8d5e0acac1b4179644583a":[9,0,0,0,23,11], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a9637e9001d8c8b2521086bcafbd8a941":[7,4,3,13], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a9637e9001d8c8b2521086bcafbd8a941":[9,0,0,0,22,13], +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a9637e9001d8c8b2521086bcafbd8a941":[9,0,0,0,23,13], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aa0158b4e85420811e6b0f1378c6ded0f":[7,4,3,7], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aa0158b4e85420811e6b0f1378c6ded0f":[9,0,0,0,22,7], +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aa0158b4e85420811e6b0f1378c6ded0f":[9,0,0,0,23,7], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5ac56a8a6590e74a8016d0fae09fb404fc":[7,4,3,6], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5ac56a8a6590e74a8016d0fae09fb404fc":[9,0,0,0,22,6], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5ac962efd35abf6c402f9fb14aa14f5016":[7,4,3,14], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5ac962efd35abf6c402f9fb14aa14f5016":[9,0,0,0,22,14], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aca5d42820b65eac5618ec3f0bd8a1160":[7,4,3,16], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aca5d42820b65eac5618ec3f0bd8a1160":[9,0,0,0,22,16], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5accc9d0d11d1124a21659586164b0962e":[7,4,3,12] +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5ac56a8a6590e74a8016d0fae09fb404fc":[9,0,0,0,23,6] }; diff --git a/doc/html/navtreeindex1.js b/doc/html/navtreeindex1.js index cc8bf20b..f707c949 100644 --- a/doc/html/navtreeindex1.js +++ b/doc/html/navtreeindex1.js @@ -1,106 +1,111 @@ var NAVTREEINDEX1 = { -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5accc9d0d11d1124a21659586164b0962e":[9,0,0,0,22,12], +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5ac962efd35abf6c402f9fb14aa14f5016":[7,4,3,14], +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5ac962efd35abf6c402f9fb14aa14f5016":[9,0,0,0,23,14], +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aca5d42820b65eac5618ec3f0bd8a1160":[7,4,3,16], +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aca5d42820b65eac5618ec3f0bd8a1160":[9,0,0,0,23,16], +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5accc9d0d11d1124a21659586164b0962e":[7,4,3,12], +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5accc9d0d11d1124a21659586164b0962e":[9,0,0,0,23,12], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5af62887536e25e053e68741006dba46d8":[7,4,3,15], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5af62887536e25e053e68741006dba46d8":[9,0,0,0,22,15], +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5af62887536e25e053e68741006dba46d8":[9,0,0,0,23,15], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aff121db04a10cf8b2c5df9d4f2b89f1e":[7,4,3,9], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aff121db04a10cf8b2c5df9d4f2b89f1e":[9,0,0,0,22,9], +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aff121db04a10cf8b2c5df9d4f2b89f1e":[9,0,0,0,23,9], "group__ev.html":[7,21], "group__ev.html#ga3b0ffd4d2b4fa791c0fd75353a330208":[9,0,0,0,8], -"group__ev.html#ga3fdd23ded693b21853356dc9eaef5ccc":[9,0,0,0,70], -"group__ev.html#ga5caf14a420a2a0bd687a1fc952f8d64e":[9,0,0,0,72], -"group__ev.html#gaabfc0880d6a98133550c61aa01ef3563":[9,0,0,0,71], +"group__ev.html#ga3fdd23ded693b21853356dc9eaef5ccc":[9,0,0,0,71], +"group__ev.html#ga5caf14a420a2a0bd687a1fc952f8d64e":[9,0,0,0,73], +"group__ev.html#gaabfc0880d6a98133550c61aa01ef3563":[9,0,0,0,72], "group__extensions.html":[7,5], "group__extensions.html#ga4cdbe42d872e21a448a947714d6c607e":[7,5,6], -"group__extensions.html#ga4cdbe42d872e21a448a947714d6c607e":[9,0,0,0,74], +"group__extensions.html#ga4cdbe42d872e21a448a947714d6c607e":[9,0,0,0,75], "group__extensions.html#ga6fb3e2c3dfb9d64dc87026a4e99c128b":[7,5,5], -"group__extensions.html#ga6fb3e2c3dfb9d64dc87026a4e99c128b":[9,0,0,0,73], +"group__extensions.html#ga6fb3e2c3dfb9d64dc87026a4e99c128b":[9,0,0,0,74], "group__extensions.html#gaae7169b2cd346b34fa33d0250db2afd0":[7,5,3], "group__extensions.html#gaae7169b2cd346b34fa33d0250db2afd0":[9,0,0,0,9], -"group__extensions.html#gacc9f55936dc165257a2e1f7d47bce89e":[9,0,0,0,24], +"group__extensions.html#gacc9f55936dc165257a2e1f7d47bce89e":[9,0,0,0,25], "group__extensions.html#gacc9f55936dc165257a2e1f7d47bce89e":[7,5,4], "group__extensions.html#gae0e24e1768f83a7fb07896ce975704b9":[7,5,7], -"group__extensions.html#gae0e24e1768f83a7fb07896ce975704b9":[9,0,0,0,130], -"group__extensions.html#gae9993815eee72c6070300a0ae2f022d7":[9,0,0,0,25], -"group__extensions.html#ggacc9f55936dc165257a2e1f7d47bce89ea1c86adf924c8786a12bee9687094673e":[9,0,0,0,24,1], +"group__extensions.html#gae0e24e1768f83a7fb07896ce975704b9":[9,0,0,0,131], +"group__extensions.html#gae9993815eee72c6070300a0ae2f022d7":[9,0,0,0,26], +"group__extensions.html#ggacc9f55936dc165257a2e1f7d47bce89ea1c86adf924c8786a12bee9687094673e":[9,0,0,0,25,1], "group__extensions.html#ggacc9f55936dc165257a2e1f7d47bce89ea1c86adf924c8786a12bee9687094673e":[7,5,4,1], -"group__extensions.html#ggacc9f55936dc165257a2e1f7d47bce89ea5265abe3e1c3f64412f2affe7bffd880":[9,0,0,0,24,2], +"group__extensions.html#ggacc9f55936dc165257a2e1f7d47bce89ea5265abe3e1c3f64412f2affe7bffd880":[9,0,0,0,25,2], "group__extensions.html#ggacc9f55936dc165257a2e1f7d47bce89ea5265abe3e1c3f64412f2affe7bffd880":[7,5,4,2], -"group__extensions.html#ggacc9f55936dc165257a2e1f7d47bce89eaabcf56c456c1ff6e81dc82586a16f14c":[9,0,0,0,24,0], +"group__extensions.html#ggacc9f55936dc165257a2e1f7d47bce89eaabcf56c456c1ff6e81dc82586a16f14c":[9,0,0,0,25,0], "group__extensions.html#ggacc9f55936dc165257a2e1f7d47bce89eaabcf56c456c1ff6e81dc82586a16f14c":[7,5,4,0], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a05b74161bfab0f815d7fd47b85e20bfc":[9,0,0,0,25,9], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a0b220da55b7d7a9579175f1ec81579fb":[9,0,0,0,25,17], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a22a8130d0db03d62154d0502b1737a48":[9,0,0,0,25,22], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a246b82fadb41dc04cf4d40fd42987458":[9,0,0,0,25,19], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a25ceebb1ee06c2f0963b44165065efb9":[9,0,0,0,25,26], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a270b950562f97510ec06b02dbcbace11":[9,0,0,0,25,23], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a5a4cacc86ebddc8cb5a3f4ec91ba3fba":[9,0,0,0,25,12], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a648e8e3988ca8bdf20ddcfd2a14e3f10":[9,0,0,0,25,13], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a6cbdd5cfd6d39e3cacd4ca02e2ae54e3":[9,0,0,0,25,8], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a741d5d795895b192cbde6adbc851a822":[9,0,0,0,25,11], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a7fe88715ded486af17228050a1d05e90":[9,0,0,0,25,2], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a83dff5bb6cd4c6e0cc85cb12fb9c0178":[9,0,0,0,25,5], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a862b122e8f17a50f5ab6e7b56087c09c":[9,0,0,0,25,20], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a866a849e7d59a3a44c92ecdfb1393e4e":[9,0,0,0,25,0], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a8e4e3c201d029c8d78457fb4fdddef4a":[9,0,0,0,25,7], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7aa2901960832871f606354d58e58b6453":[9,0,0,0,25,4], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7aa4eb48182ed8bd10d257df5a8b154cc2":[9,0,0,0,25,24], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7aa6d94d15f31176a4e1214c4c31edd5f8":[9,0,0,0,25,18], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7aaf81548db378fa156a7cf290abff87ad":[9,0,0,0,25,21], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7abb36b02569c81df4509f58f964a8155b":[9,0,0,0,25,3], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7abc92c2b16b0d54b3a9736e62a520a446":[9,0,0,0,25,10], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7ac2af19277affbbc731379ddfb38f820e":[9,0,0,0,25,16], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7ac5d7be02c676c836bb8ec448803dd606":[9,0,0,0,25,14], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7ad113e96df806fb20fd4f02dbe19e4f4b":[9,0,0,0,25,6], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7ad426ef79eec1b6e036118f64e6fa62f5":[9,0,0,0,25,25], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7ae57bedd24d5a29f5f381f8155c2ab3b8":[9,0,0,0,25,15], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7afa4a8739f6424c4dac3eead479628002":[9,0,0,0,25,1], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a05b74161bfab0f815d7fd47b85e20bfc":[9,0,0,0,26,9], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a0b220da55b7d7a9579175f1ec81579fb":[9,0,0,0,26,17], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a22a8130d0db03d62154d0502b1737a48":[9,0,0,0,26,22], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a246b82fadb41dc04cf4d40fd42987458":[9,0,0,0,26,19], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a25ceebb1ee06c2f0963b44165065efb9":[9,0,0,0,26,26], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a270b950562f97510ec06b02dbcbace11":[9,0,0,0,26,23], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a5a4cacc86ebddc8cb5a3f4ec91ba3fba":[9,0,0,0,26,12], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a648e8e3988ca8bdf20ddcfd2a14e3f10":[9,0,0,0,26,13], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a6cbdd5cfd6d39e3cacd4ca02e2ae54e3":[9,0,0,0,26,8], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a741d5d795895b192cbde6adbc851a822":[9,0,0,0,26,11], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a7fe88715ded486af17228050a1d05e90":[9,0,0,0,26,2], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a83dff5bb6cd4c6e0cc85cb12fb9c0178":[9,0,0,0,26,5], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a862b122e8f17a50f5ab6e7b56087c09c":[9,0,0,0,26,20], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a866a849e7d59a3a44c92ecdfb1393e4e":[9,0,0,0,26,0], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a8e4e3c201d029c8d78457fb4fdddef4a":[9,0,0,0,26,7], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7aa2901960832871f606354d58e58b6453":[9,0,0,0,26,4], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7aa4eb48182ed8bd10d257df5a8b154cc2":[9,0,0,0,26,24], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7aa6d94d15f31176a4e1214c4c31edd5f8":[9,0,0,0,26,18], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7aaf81548db378fa156a7cf290abff87ad":[9,0,0,0,26,21], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7abb36b02569c81df4509f58f964a8155b":[9,0,0,0,26,3], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7abc92c2b16b0d54b3a9736e62a520a446":[9,0,0,0,26,10], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7ac2af19277affbbc731379ddfb38f820e":[9,0,0,0,26,16], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7ac5d7be02c676c836bb8ec448803dd606":[9,0,0,0,26,14], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7ad113e96df806fb20fd4f02dbe19e4f4b":[9,0,0,0,26,6], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7ad426ef79eec1b6e036118f64e6fa62f5":[9,0,0,0,26,25], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7ae57bedd24d5a29f5f381f8155c2ab3b8":[9,0,0,0,26,15], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7afa4a8739f6424c4dac3eead479628002":[9,0,0,0,26,1], "group__fops.html":[7,20], "group__fops.html#gac08aef64c4c34647ed699b24759b6b0e":[7,20,1], -"group__fops.html#gac08aef64c4c34647ed699b24759b6b0e":[9,0,0,0,81], +"group__fops.html#gac08aef64c4c34647ed699b24759b6b0e":[9,0,0,0,82], "group__form-parsing.html":[7,6,0], "group__form-parsing.html#ga162f86762173a2bc8c28497941d74815":[7,6,0,2], -"group__form-parsing.html#ga162f86762173a2bc8c28497941d74815":[9,0,0,0,135], +"group__form-parsing.html#ga162f86762173a2bc8c28497941d74815":[9,0,0,0,136], "group__form-parsing.html#ga2da476217166da02704b90d3a8d4f3cd":[7,6,0,6], -"group__form-parsing.html#ga2da476217166da02704b90d3a8d4f3cd":[9,0,0,0,139], +"group__form-parsing.html#ga2da476217166da02704b90d3a8d4f3cd":[9,0,0,0,140], "group__form-parsing.html#ga3fbe378632f85ec9a14cc2c1687bf05f":[7,6,0,5], -"group__form-parsing.html#ga3fbe378632f85ec9a14cc2c1687bf05f":[9,0,0,0,138], -"group__form-parsing.html#ga41a74a822771d3dce89751aa3bce28ae":[9,0,0,0,29], +"group__form-parsing.html#ga3fbe378632f85ec9a14cc2c1687bf05f":[9,0,0,0,139], +"group__form-parsing.html#ga41a74a822771d3dce89751aa3bce28ae":[9,0,0,0,30], "group__form-parsing.html#ga41a74a822771d3dce89751aa3bce28ae":[7,6,0,1], "group__form-parsing.html#ga5a70527c0861c2ffa3d29333a6aa7f8e":[7,6,0,0], "group__form-parsing.html#ga5a70527c0861c2ffa3d29333a6aa7f8e":[9,0,0,0,15], "group__form-parsing.html#ga83835bf250ee3d4a60f36a182f2b8d24":[7,6,0,4], -"group__form-parsing.html#ga83835bf250ee3d4a60f36a182f2b8d24":[9,0,0,0,137], +"group__form-parsing.html#ga83835bf250ee3d4a60f36a182f2b8d24":[9,0,0,0,138], "group__form-parsing.html#ga9ad9ebf5ea1a7108415ed7e04cb231d2":[7,6,0,7], -"group__form-parsing.html#ga9ad9ebf5ea1a7108415ed7e04cb231d2":[9,0,0,0,140], +"group__form-parsing.html#ga9ad9ebf5ea1a7108415ed7e04cb231d2":[9,0,0,0,141], "group__form-parsing.html#gaaa482f07dad3f04b391cccf0a814e13b":[7,6,0,3], -"group__form-parsing.html#gaaa482f07dad3f04b391cccf0a814e13b":[9,0,0,0,136], -"group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea2d25de44865bd44e5a3903a2bab9ca83":[9,0,0,0,29,2], +"group__form-parsing.html#gaaa482f07dad3f04b391cccf0a814e13b":[9,0,0,0,137], +"group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea2d25de44865bd44e5a3903a2bab9ca83":[9,0,0,0,30,2], "group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea2d25de44865bd44e5a3903a2bab9ca83":[7,6,0,1,2], -"group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea6ce2a55a4c3695cdb640c893d95bd3a7":[9,0,0,0,29,1], +"group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea6ce2a55a4c3695cdb640c893d95bd3a7":[9,0,0,0,30,1], "group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea6ce2a55a4c3695cdb640c893d95bd3a7":[7,6,0,1,1], -"group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aead3a958e7719ac273c3ba4f684f00c87f":[9,0,0,0,29,0], +"group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aead3a958e7719ac273c3ba4f684f00c87f":[9,0,0,0,30,0], "group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aead3a958e7719ac273c3ba4f684f00c87f":[7,6,0,1,0], "group__generic-sessions.html":[7,10,0], "group__generic-sessions.html#ga7c2dc7bfb4ccb91c5d771f9e9ea237e1":[7,10,0,5], -"group__generic-sessions.html#ga7c2dc7bfb4ccb91c5d771f9e9ea237e1":[9,0,0,0,32], +"group__generic-sessions.html#ga7c2dc7bfb4ccb91c5d771f9e9ea237e1":[9,0,0,0,33], "group__generic-sessions.html#gaa93946b3d921072209d5cd8cdfa5332e":[7,10,0,4], -"group__generic-sessions.html#gaa93946b3d921072209d5cd8cdfa5332e":[9,0,0,0,26], +"group__generic-sessions.html#gaa93946b3d921072209d5cd8cdfa5332e":[9,0,0,0,27], "group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a0657a9e846814781b128c397fe4b10bf":[7,10,0,5,1], -"group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a0657a9e846814781b128c397fe4b10bf":[9,0,0,0,32,1], +"group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a0657a9e846814781b128c397fe4b10bf":[9,0,0,0,33,1], "group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a2cd8fb86e3b85c106e7711c03f0ddd0a":[7,10,0,5,3], -"group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a2cd8fb86e3b85c106e7711c03f0ddd0a":[9,0,0,0,32,3], +"group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a2cd8fb86e3b85c106e7711c03f0ddd0a":[9,0,0,0,33,3], "group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a5a607e4668d20cadada62c4b8007f887":[7,10,0,5,2], -"group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a5a607e4668d20cadada62c4b8007f887":[9,0,0,0,32,2], +"group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a5a607e4668d20cadada62c4b8007f887":[9,0,0,0,33,2], "group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a81e63075115dedd150265d81b8f7fa57":[7,10,0,5,0], -"group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a81e63075115dedd150265d81b8f7fa57":[9,0,0,0,32,0], +"group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a81e63075115dedd150265d81b8f7fa57":[9,0,0,0,33,0], "group__generic-sessions.html#ggaa93946b3d921072209d5cd8cdfa5332ea596010a165bf13473c5eea3a34cd4308":[7,10,0,4,0], -"group__generic-sessions.html#ggaa93946b3d921072209d5cd8cdfa5332ea596010a165bf13473c5eea3a34cd4308":[9,0,0,0,26,0], +"group__generic-sessions.html#ggaa93946b3d921072209d5cd8cdfa5332ea596010a165bf13473c5eea3a34cd4308":[9,0,0,0,27,0], "group__generic-sessions.html#ggaa93946b3d921072209d5cd8cdfa5332ead908cdc5689c5d22c9d3c8934e94dcde":[7,10,0,4,1], -"group__generic-sessions.html#ggaa93946b3d921072209d5cd8cdfa5332ead908cdc5689c5d22c9d3c8934e94dcde":[9,0,0,0,26,1], +"group__generic-sessions.html#ggaa93946b3d921072209d5cd8cdfa5332ead908cdc5689c5d22c9d3c8934e94dcde":[9,0,0,0,27,1], "group__html-chunked-substitution.html":[7,6,1], "group__html-chunked-substitution.html#ga643073f918c0a7016b690aae9793fd60":[7,6,1,2], -"group__html-chunked-substitution.html#ga643073f918c0a7016b690aae9793fd60":[9,0,0,0,57], +"group__html-chunked-substitution.html#ga643073f918c0a7016b690aae9793fd60":[9,0,0,0,58], "group__html-chunked-substitution.html#ga669d3d7ce2d5f193473f649a89b3e7ac":[9,0,0,0,13], "group__html-chunked-substitution.html#gabc3b93f68c8bdd857ad32913628dfa8d":[9,0,0,0,18], "group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da08107f6b0e1d7c9e2ca100700cc7200f":[9,0,0,0,18,22], @@ -133,121 +138,116 @@ var NAVTREEINDEX1 = "group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8daf06c31278cb67d7eec4b2b8157b9ad25":[9,0,0,0,18,9], "group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dafac24097912a70f224166528ce44b83b":[9,0,0,0,18,7], "group__http.html":[7,6], -"group__http.html#ga8fbf01e473ac421fc33ad9f8da8b8a25":[9,0,0,0,99], +"group__http.html#ga8fbf01e473ac421fc33ad9f8da8b8a25":[9,0,0,0,100], "group__http.html#ga8fbf01e473ac421fc33ad9f8da8b8a25":[7,6,7], -"group__http.html#gac8a4a71240857dc6b2ed70456b6923f4":[9,0,0,0,119], +"group__http.html#gac8a4a71240857dc6b2ed70456b6923f4":[9,0,0,0,120], "group__http.html#gac8a4a71240857dc6b2ed70456b6923f4":[7,6,9], -"group__http.html#gad27aed6c66a41b2b89ffe4da2a309e8a":[9,0,0,0,100], +"group__http.html#gad27aed6c66a41b2b89ffe4da2a309e8a":[9,0,0,0,101], "group__http.html#gad27aed6c66a41b2b89ffe4da2a309e8a":[7,6,8], "group__httpft.html":[7,6,2], -"group__httpft.html#ga29e1123f6d56cd777b3e5bf9ca40f9e5":[9,0,0,0,124], +"group__httpft.html#ga29e1123f6d56cd777b3e5bf9ca40f9e5":[9,0,0,0,125], "group__httpft.html#gab393a06d3d2722af4c3f8b06842c80d7":[7,6,2,1], -"group__httpft.html#gab393a06d3d2722af4c3f8b06842c80d7":[9,0,0,0,123], +"group__httpft.html#gab393a06d3d2722af4c3f8b06842c80d7":[9,0,0,0,124], "group__httpft.html#gab4da87a4800413f15e7aba649fb1d77c":[7,6,2,0], -"group__httpft.html#gab4da87a4800413f15e7aba649fb1d77c":[9,0,0,0,83], +"group__httpft.html#gab4da87a4800413f15e7aba649fb1d77c":[9,0,0,0,84], "group__log.html":[7,7], -"group__log.html#ga14542b84d2c76efa7814124bb10f9c5f":[9,0,0,0,27], -"group__log.html#ga244647f9e1bf0097ccdde66d74f41e26":[9,0,0,0,131], +"group__log.html#ga14542b84d2c76efa7814124bb10f9c5f":[9,0,0,0,28], +"group__log.html#ga244647f9e1bf0097ccdde66d74f41e26":[9,0,0,0,132], "group__log.html#ga244647f9e1bf0097ccdde66d74f41e26":[7,7,0], -"group__log.html#ga42e39775c6b69b7251bdbf5a2cdd5dcd":[9,0,0,0,155], +"group__log.html#ga42e39775c6b69b7251bdbf5a2cdd5dcd":[9,0,0,0,156], "group__log.html#ga42e39775c6b69b7251bdbf5a2cdd5dcd":[7,7,3], -"group__log.html#ga74eb146969f0595e12ea835851b4588e":[9,0,0,0,36], -"group__log.html#ga898b1f03872ad019f507d4e35bbefa90":[9,0,0,0,154], +"group__log.html#ga74eb146969f0595e12ea835851b4588e":[9,0,0,0,37], +"group__log.html#ga898b1f03872ad019f507d4e35bbefa90":[9,0,0,0,155], "group__log.html#ga898b1f03872ad019f507d4e35bbefa90":[7,7,2], -"group__log.html#gab7c0fc936cc9f1eb58e2bb234c15147c":[9,0,0,0,153], "group__log.html#gab7c0fc936cc9f1eb58e2bb234c15147c":[7,7,1], -"group__log.html#gaf5f07837692b2f231a79da8a058288aa":[9,0,0,0,35], -"group__log.html#gga14542b84d2c76efa7814124bb10f9c5fa083a44e71966a0e768426e477e1bc358":[9,0,0,0,27,8], -"group__log.html#gga14542b84d2c76efa7814124bb10f9c5fa2be9c1d50d05756078e9abc72c9e50cc":[9,0,0,0,27,5], -"group__log.html#gga14542b84d2c76efa7814124bb10f9c5fa52e5cd60bbb85f30ec0078a2c4be0c59":[9,0,0,0,27,3], -"group__log.html#gga14542b84d2c76efa7814124bb10f9c5fa6353ac9650d35e8958981eebcb4b67a9":[9,0,0,0,27,7], -"group__log.html#gga14542b84d2c76efa7814124bb10f9c5faa12195bd6dd442763a8321c463a2c906":[9,0,0,0,27,1], -"group__log.html#gga14542b84d2c76efa7814124bb10f9c5faacc8fe5891eba3cf4537bee50eaaa8fa":[9,0,0,0,27,10], -"group__log.html#gga14542b84d2c76efa7814124bb10f9c5facef27c02b70f1bc9140685bdfafe0942":[9,0,0,0,27,6], -"group__log.html#gga14542b84d2c76efa7814124bb10f9c5fad0b18841adbb4792c39981ec05702744":[9,0,0,0,27,4], -"group__log.html#gga14542b84d2c76efa7814124bb10f9c5fad40a82f6c94e6408dd003cf3f0231212":[9,0,0,0,27,2], -"group__log.html#gga14542b84d2c76efa7814124bb10f9c5fae4235ca28326353e283bc7dd1b39bd86":[9,0,0,0,27,9], -"group__log.html#gga14542b84d2c76efa7814124bb10f9c5faff4895280366d59ef0c5e9f4578241af":[9,0,0,0,27,0], +"group__log.html#gab7c0fc936cc9f1eb58e2bb234c15147c":[9,0,0,0,154], +"group__log.html#gaf5f07837692b2f231a79da8a058288aa":[9,0,0,0,36], +"group__log.html#gga14542b84d2c76efa7814124bb10f9c5fa083a44e71966a0e768426e477e1bc358":[9,0,0,0,28,8], +"group__log.html#gga14542b84d2c76efa7814124bb10f9c5fa2be9c1d50d05756078e9abc72c9e50cc":[9,0,0,0,28,5], +"group__log.html#gga14542b84d2c76efa7814124bb10f9c5fa52e5cd60bbb85f30ec0078a2c4be0c59":[9,0,0,0,28,3], +"group__log.html#gga14542b84d2c76efa7814124bb10f9c5fa6353ac9650d35e8958981eebcb4b67a9":[9,0,0,0,28,7], +"group__log.html#gga14542b84d2c76efa7814124bb10f9c5faa12195bd6dd442763a8321c463a2c906":[9,0,0,0,28,1], +"group__log.html#gga14542b84d2c76efa7814124bb10f9c5faacc8fe5891eba3cf4537bee50eaaa8fa":[9,0,0,0,28,10], +"group__log.html#gga14542b84d2c76efa7814124bb10f9c5facef27c02b70f1bc9140685bdfafe0942":[9,0,0,0,28,6], +"group__log.html#gga14542b84d2c76efa7814124bb10f9c5fad0b18841adbb4792c39981ec05702744":[9,0,0,0,28,4], +"group__log.html#gga14542b84d2c76efa7814124bb10f9c5fad40a82f6c94e6408dd003cf3f0231212":[9,0,0,0,28,2], +"group__log.html#gga14542b84d2c76efa7814124bb10f9c5fae4235ca28326353e283bc7dd1b39bd86":[9,0,0,0,28,9], +"group__log.html#gga14542b84d2c76efa7814124bb10f9c5faff4895280366d59ef0c5e9f4578241af":[9,0,0,0,28,0], "group__misc.html":[7,8], -"group__misc.html#ga0af4f7d2dd375aeedcfa7eb0e1101c4b":[9,0,0,0,79], +"group__misc.html#ga0af4f7d2dd375aeedcfa7eb0e1101c4b":[9,0,0,0,80], "group__misc.html#ga0af4f7d2dd375aeedcfa7eb0e1101c4b":[7,8,2], -"group__misc.html#ga0e705d498e8c8500649a26ba30a1e106":[9,0,0,0,117], -"group__misc.html#ga1ec0d9faac5d3a5824d765c287c043aa":[9,0,0,0,112], +"group__misc.html#ga0e705d498e8c8500649a26ba30a1e106":[9,0,0,0,118], +"group__misc.html#ga1ec0d9faac5d3a5824d765c287c043aa":[9,0,0,0,113], "group__misc.html#ga1ec0d9faac5d3a5824d765c287c043aa":[7,8,8], -"group__misc.html#ga33bf2635033710b25f931b57ed663e1e":[9,0,0,0,111], +"group__misc.html#ga33bf2635033710b25f931b57ed663e1e":[9,0,0,0,112], "group__misc.html#ga33bf2635033710b25f931b57ed663e1e":[7,8,7], -"group__misc.html#ga58f906c6be0ca80efd813f694569dd4a":[9,0,0,0,89], +"group__misc.html#ga58f906c6be0ca80efd813f694569dd4a":[9,0,0,0,90], "group__misc.html#ga58f906c6be0ca80efd813f694569dd4a":[7,8,6], -"group__misc.html#ga629f48268fd1856b54b11172991b97d9":[9,0,0,0,80], +"group__misc.html#ga629f48268fd1856b54b11172991b97d9":[9,0,0,0,81], "group__misc.html#ga629f48268fd1856b54b11172991b97d9":[7,8,3], -"group__misc.html#ga8930fe36a3f3eefe4a6a4fd499d8e899":[9,0,0,0,84], +"group__misc.html#ga8930fe36a3f3eefe4a6a4fd499d8e899":[9,0,0,0,85], "group__misc.html#ga8930fe36a3f3eefe4a6a4fd499d8e899":[7,8,5], -"group__misc.html#gaa194584fff9698f3b280658f770ccd0f":[9,0,0,0,152], +"group__misc.html#gaa194584fff9698f3b280658f770ccd0f":[9,0,0,0,153], "group__misc.html#gaa194584fff9698f3b280658f770ccd0f":[7,8,10], -"group__misc.html#gab321ed812f46f6dc7ef9e3ca6f00cf1b":[9,0,0,0,129], +"group__misc.html#gab321ed812f46f6dc7ef9e3ca6f00cf1b":[9,0,0,0,130], "group__misc.html#gab321ed812f46f6dc7ef9e3ca6f00cf1b":[7,8,9], -"group__misc.html#gac6abfc0b2bd5b2f09281a4432bb2f5f0":[9,0,0,0,82], +"group__misc.html#gac6abfc0b2bd5b2f09281a4432bb2f5f0":[9,0,0,0,83], "group__misc.html#gac6abfc0b2bd5b2f09281a4432bb2f5f0":[7,8,4], -"group__misc.html#gacae4d7b6a8d22e4c2d82ff8b12c1e234":[9,0,0,0,78], +"group__misc.html#gacae4d7b6a8d22e4c2d82ff8b12c1e234":[9,0,0,0,79], "group__misc.html#gacae4d7b6a8d22e4c2d82ff8b12c1e234":[7,8,1], -"group__misc.html#gace5171b1dbbc03ec89a98f8afdb5c9af":[9,0,0,0,66], +"group__misc.html#gace5171b1dbbc03ec89a98f8afdb5c9af":[9,0,0,0,67], "group__misc.html#gace5171b1dbbc03ec89a98f8afdb5c9af":[7,8,0], "group__net.html":[7,9], "group__net.html#ga092e5f473b3347f03ffeef8a950080f3":[7,9,1], -"group__net.html#ga092e5f473b3347f03ffeef8a950080f3":[9,0,0,0,85], +"group__net.html#ga092e5f473b3347f03ffeef8a950080f3":[9,0,0,0,86], "group__net.html#ga869d8bdffb0f2a7ce08e3ce10d6be3d8":[7,9,3], -"group__net.html#ga869d8bdffb0f2a7ce08e3ce10d6be3d8":[9,0,0,0,102], +"group__net.html#ga869d8bdffb0f2a7ce08e3ce10d6be3d8":[9,0,0,0,103], "group__net.html#gad01014fed09759741b6d23afccfdaacc":[7,9,2], -"group__net.html#gad01014fed09759741b6d23afccfdaacc":[9,0,0,0,86], +"group__net.html#gad01014fed09759741b6d23afccfdaacc":[9,0,0,0,87], "group__net.html#gad0df22db2be9fc65a667a1e83f9a92a4":[7,9,0], -"group__net.html#gad0df22db2be9fc65a667a1e83f9a92a4":[9,0,0,0,53], +"group__net.html#gad0df22db2be9fc65a667a1e83f9a92a4":[9,0,0,0,54], "group__pur.html":[7,12], "group__pur.html#ga9cc82f06e5ae7e71458626d7a39a5865":[7,12,1], -"group__pur.html#ga9cc82f06e5ae7e71458626d7a39a5865":[9,0,0,0,141], +"group__pur.html#ga9cc82f06e5ae7e71458626d7a39a5865":[9,0,0,0,142], "group__pur.html#gab15187efcfa256b7c928562c182b92a3":[7,12,0], -"group__pur.html#gab15187efcfa256b7c928562c182b92a3":[9,0,0,0,108], +"group__pur.html#gab15187efcfa256b7c928562c182b92a3":[9,0,0,0,109], "group__sending-data.html":[7,13], "group__sending-data.html#ga98b099cf8c1c7e38ad78501f270e193d":[7,13,0], -"group__sending-data.html#ga98b099cf8c1c7e38ad78501f270e193d":[9,0,0,0,31], +"group__sending-data.html#ga98b099cf8c1c7e38ad78501f270e193d":[9,0,0,0,32], "group__sending-data.html#gafd5fdd285a0e25ba7e3e1051deec1001":[7,13,1], -"group__sending-data.html#gafd5fdd285a0e25ba7e3e1051deec1001":[9,0,0,0,151], +"group__sending-data.html#gafd5fdd285a0e25ba7e3e1051deec1001":[9,0,0,0,152], "group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da10047eb05b5e1c298151dc47a5b44826":[7,13,0,2], -"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da10047eb05b5e1c298151dc47a5b44826":[9,0,0,0,31,2], +"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da10047eb05b5e1c298151dc47a5b44826":[9,0,0,0,32,2], "group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da115440f272a5d55518adfc8099acfee3":[7,13,0,5], -"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da115440f272a5d55518adfc8099acfee3":[9,0,0,0,31,8], +"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da115440f272a5d55518adfc8099acfee3":[9,0,0,0,32,8], +"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da220d8e8652d9b97fb66e476e2a60ffce":[9,0,0,0,32,9], "group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da220d8e8652d9b97fb66e476e2a60ffce":[7,13,0,6], -"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da220d8e8652d9b97fb66e476e2a60ffce":[9,0,0,0,31,9], -"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da6e556322ff8f205bf311608f7f6e6559":[9,0,0,0,31,4], +"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da6e556322ff8f205bf311608f7f6e6559":[9,0,0,0,32,4], "group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da80e8f169fda236c56bfb795ed62903db":[7,13,0,0], -"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da80e8f169fda236c56bfb795ed62903db":[9,0,0,0,31,0], -"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dab7e7a62cf6f456c09c21dff24dad9039":[9,0,0,0,31,5], +"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da80e8f169fda236c56bfb795ed62903db":[9,0,0,0,32,0], +"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dab7e7a62cf6f456c09c21dff24dad9039":[9,0,0,0,32,5], "group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dabb6705e1d1327cdda5025be28f07712e":[7,13,0,3], -"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dabb6705e1d1327cdda5025be28f07712e":[9,0,0,0,31,3], -"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dae7d8a025a65524652fe9e24c2654c935":[9,0,0,0,31,6], +"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dabb6705e1d1327cdda5025be28f07712e":[9,0,0,0,32,3], +"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dae7d8a025a65524652fe9e24c2654c935":[9,0,0,0,32,6], "group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193daf6486c0dba50c44198100717721d9ab2":[7,13,0,1], -"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193daf6486c0dba50c44198100717721d9ab2":[9,0,0,0,31,1], +"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193daf6486c0dba50c44198100717721d9ab2":[9,0,0,0,32,1], "group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917":[7,13,0,4], -"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917":[9,0,0,0,31,7], +"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917":[9,0,0,0,32,7], "group__service.html":[7,0], "group__service.html#ga29c246707997ab7a466aa709aecd2d7b":[7,0,1], -"group__service.html#ga29c246707997ab7a466aa709aecd2d7b":[9,0,0,0,52], -"group__service.html#ga53e3d0801dfda7960a7249dd559e68a2":[9,0,0,0,51], +"group__service.html#ga29c246707997ab7a466aa709aecd2d7b":[9,0,0,0,53], "group__service.html#ga53e3d0801dfda7960a7249dd559e68a2":[7,0,0], +"group__service.html#ga53e3d0801dfda7960a7249dd559e68a2":[9,0,0,0,52], "group__service.html#ga9b3cc4473fd8848e5bbee7f310712939":[7,0,5], -"group__service.html#ga9b3cc4473fd8848e5bbee7f310712939":[9,0,0,0,128], +"group__service.html#ga9b3cc4473fd8848e5bbee7f310712939":[9,0,0,0,129], +"group__service.html#gad82efa5466d14a9f05aa06416375b28d":[9,0,0,0,127], "group__service.html#gad82efa5466d14a9f05aa06416375b28d":[7,0,3], -"group__service.html#gad82efa5466d14a9f05aa06416375b28d":[9,0,0,0,126], "group__service.html#gaebf426eda371ba23642fc11d8e0ace6b":[7,0,4], -"group__service.html#gaebf426eda371ba23642fc11d8e0ace6b":[9,0,0,0,127], -"group__service.html#gaf95bd0c663d6516a0c80047d9b1167a8":[9,0,0,0,125], +"group__service.html#gaebf426eda371ba23642fc11d8e0ace6b":[9,0,0,0,128], +"group__service.html#gaf95bd0c663d6516a0c80047d9b1167a8":[9,0,0,0,126], "group__service.html#gaf95bd0c663d6516a0c80047d9b1167a8":[7,0,2], "group__sha.html":[7,11], "group__sha.html#ga66316e6a5a0644a09d5a10e919dfdd8d":[7,11,0], -"group__sha.html#ga66316e6a5a0644a09d5a10e919dfdd8d":[9,0,0,0,43], -"group__sha.html#ga7b09ab74646266f0b555103b3bb8dfe5":[7,11,2], -"group__sha.html#ga7b09ab74646266f0b555103b3bb8dfe5":[9,0,0,0,134], -"group__sha.html#gaf39765e4a3b413efb65e4698b2ec3575":[7,11,1], -"group__sha.html#gaf39765e4a3b413efb65e4698b2ec3575":[9,0,0,0,44], -"group__smtp.html":[7,14], -"group__smtp.html#ga116be79bf44f9dc2a97f46e051fe4dc0":[7,14,1] +"group__sha.html#ga66316e6a5a0644a09d5a10e919dfdd8d":[9,0,0,0,44], +"group__sha.html#ga7b09ab74646266f0b555103b3bb8dfe5":[7,11,2] }; diff --git a/doc/html/navtreeindex2.js b/doc/html/navtreeindex2.js index e5efbf9d..d7c5e55b 100644 --- a/doc/html/navtreeindex2.js +++ b/doc/html/navtreeindex2.js @@ -1,60 +1,65 @@ var NAVTREEINDEX2 = { -"group__smtp.html#ga116be79bf44f9dc2a97f46e051fe4dc0":[9,0,0,0,33], +"group__sha.html#ga7b09ab74646266f0b555103b3bb8dfe5":[9,0,0,0,135], +"group__sha.html#gaf39765e4a3b413efb65e4698b2ec3575":[7,11,1], +"group__sha.html#gaf39765e4a3b413efb65e4698b2ec3575":[9,0,0,0,45], +"group__smtp.html":[7,14], +"group__smtp.html#ga116be79bf44f9dc2a97f46e051fe4dc0":[7,14,1], +"group__smtp.html#ga116be79bf44f9dc2a97f46e051fe4dc0":[9,0,0,0,34], "group__smtp.html#ga25298a5afc1074e13b2d5711a86432b2":[7,14,3], -"group__smtp.html#ga25298a5afc1074e13b2d5711a86432b2":[9,0,0,0,68], +"group__smtp.html#ga25298a5afc1074e13b2d5711a86432b2":[9,0,0,0,69], "group__smtp.html#ga5e535e346d92a9daf00be33abf79d4eb":[7,14,2], -"group__smtp.html#ga5e535e346d92a9daf00be33abf79d4eb":[9,0,0,0,67], +"group__smtp.html#ga5e535e346d92a9daf00be33abf79d4eb":[9,0,0,0,68], "group__smtp.html#ga77fc9b56a1bb39484844981ec375fc29":[7,14,4], -"group__smtp.html#ga77fc9b56a1bb39484844981ec375fc29":[9,0,0,0,69], +"group__smtp.html#ga77fc9b56a1bb39484844981ec375fc29":[9,0,0,0,70], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad":[7,14,1,3], -"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad":[9,0,0,0,33,3], +"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad":[9,0,0,0,34,3], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c":[7,14,1,0], -"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c":[9,0,0,0,33,0], +"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c":[9,0,0,0,34,0], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5":[7,14,1,8], -"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5":[9,0,0,0,33,8], +"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5":[9,0,0,0,34,8], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69":[7,14,1,7], -"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69":[9,0,0,0,33,7], +"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69":[9,0,0,0,34,7], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14":[7,14,1,6], -"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14":[9,0,0,0,33,6], +"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14":[9,0,0,0,34,6], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab":[7,14,1,4], -"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab":[9,0,0,0,33,4], +"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab":[9,0,0,0,34,4], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83":[7,14,1,5], -"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83":[9,0,0,0,33,5], +"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83":[9,0,0,0,34,5], +"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d":[9,0,0,0,34,2], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d":[7,14,1,2], -"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d":[9,0,0,0,33,2], -"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933":[9,0,0,0,33,1], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933":[7,14,1,1], +"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933":[9,0,0,0,34,1], "group__sock-adopt.html":[7,15], "group__sock-adopt.html#gab2d045df0f81afe00891aaed312d552b":[7,15,1], -"group__sock-adopt.html#gab2d045df0f81afe00891aaed312d552b":[9,0,0,0,42], +"group__sock-adopt.html#gab2d045df0f81afe00891aaed312d552b":[9,0,0,0,43], "group__sock-adopt.html#gabe71b7462afb21c767bdc67334f305af":[7,15,0], -"group__sock-adopt.html#gabe71b7462afb21c767bdc67334f305af":[9,0,0,0,41], +"group__sock-adopt.html#gabe71b7462afb21c767bdc67334f305af":[9,0,0,0,42], "group__timeout.html":[7,3], -"group__timeout.html#ga2c0aa4b9c3c55bae7b35cbfac3246c87":[9,0,0,0,34], +"group__timeout.html#ga2c0aa4b9c3c55bae7b35cbfac3246c87":[9,0,0,0,35], +"group__timeout.html#gaced9f9237f6172fed9f730a2af51345a":[9,0,0,0,134], "group__timeout.html#gaced9f9237f6172fed9f730a2af51345a":[7,3,0], -"group__timeout.html#gaced9f9237f6172fed9f730a2af51345a":[9,0,0,0,133], -"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a0d6b956db11acb6d263af3ea054a914e":[9,0,0,0,34,12], -"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a0eef059426f37d00b75142d4dc3e25e3":[9,0,0,0,34,3], -"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a1104c39d0177378713a9332ab7a9d7fe":[9,0,0,0,34,4], -"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a11292263c9eccd090294e7e316200d7f":[9,0,0,0,34,13], -"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a13527b2b1f61d9b2709eb432acd0a248":[9,0,0,0,34,7], -"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a211dd9910c37aa3a3a45fd532c76bf6e":[9,0,0,0,34,5], -"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a44feda6cc9507a8613b9263b1acc8ce1":[9,0,0,0,34,8], -"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a52236b42ec5ffe65d4cdbadeb6c4fcb0":[9,0,0,0,34,2], -"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a5fe48ea6f3f5363cca55d39b78490b45":[9,0,0,0,34,15], -"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a65785467c0b560bead865231fdd405d7":[9,0,0,0,34,0], -"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a73f61afae387e16f7ab8a4f299aca8d2":[9,0,0,0,34,14], -"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a7d5b3bcc88ccbddfa57674e174a78c2d":[9,0,0,0,34,9], -"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87aaf69f440c2e000787efae5ad6f39e74c":[9,0,0,0,34,11], -"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87ab20463ee983bcd68cd8a501319da56d3":[9,0,0,0,34,6], -"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87ad7ebebb506afd30c48e1e5e3a578cd30":[9,0,0,0,34,1], -"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87ae8b3de955cec5da5ea52fe040f914501":[9,0,0,0,34,10], +"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a0d6b956db11acb6d263af3ea054a914e":[9,0,0,0,35,12], +"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a0eef059426f37d00b75142d4dc3e25e3":[9,0,0,0,35,3], +"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a1104c39d0177378713a9332ab7a9d7fe":[9,0,0,0,35,4], +"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a11292263c9eccd090294e7e316200d7f":[9,0,0,0,35,13], +"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a13527b2b1f61d9b2709eb432acd0a248":[9,0,0,0,35,7], +"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a211dd9910c37aa3a3a45fd532c76bf6e":[9,0,0,0,35,5], +"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a44feda6cc9507a8613b9263b1acc8ce1":[9,0,0,0,35,8], +"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a52236b42ec5ffe65d4cdbadeb6c4fcb0":[9,0,0,0,35,2], +"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a5fe48ea6f3f5363cca55d39b78490b45":[9,0,0,0,35,15], +"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a65785467c0b560bead865231fdd405d7":[9,0,0,0,35,0], +"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a73f61afae387e16f7ab8a4f299aca8d2":[9,0,0,0,35,14], +"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a7d5b3bcc88ccbddfa57674e174a78c2d":[9,0,0,0,35,9], +"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87aaf69f440c2e000787efae5ad6f39e74c":[9,0,0,0,35,11], +"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87ab20463ee983bcd68cd8a501319da56d3":[9,0,0,0,35,6], +"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87ad7ebebb506afd30c48e1e5e3a578cd30":[9,0,0,0,35,1], +"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87ae8b3de955cec5da5ea52fe040f914501":[9,0,0,0,35,10], "group__urlendec.html":[7,6,5], "group__urlendec.html#gaa373a9c16acdd96c395af61ab915ece3":[7,6,5,0], -"group__urlendec.html#gaa373a9c16acdd96c395af61ab915ece3":[9,0,0,0,143], +"group__urlendec.html#gaa373a9c16acdd96c395af61ab915ece3":[9,0,0,0,144], "group__urlendec.html#gabc2888476e50e001c875c1a8abf455b7":[7,6,5,1], -"group__urlendec.html#gabc2888476e50e001c875c1a8abf455b7":[9,0,0,0,144], +"group__urlendec.html#gabc2888476e50e001c875c1a8abf455b7":[9,0,0,0,145], "group__usercb.html":[7,16], "group__usercb.html#gad4fcb82e68d60ffacca61a3f783a0a2f":[7,16,0], "group__usercb.html#gad4fcb82e68d60ffacca61a3f783a0a2f":[9,0,0,0,7], @@ -98,8 +103,8 @@ var NAVTREEINDEX2 = "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7e12418eec9bce85735e6460176ab604":[7,16,1,3], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7ec8e2e9557ee02a4fc9f7dec7e2babc":[9,0,0,0,19,11], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7ec8e2e9557ee02a4fc9f7dec7e2babc":[7,16,1,11], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a838b18d255c1b94a533287ba302a2eba":[7,16,1,5], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a838b18d255c1b94a533287ba302a2eba":[9,0,0,0,19,5], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a838b18d255c1b94a533287ba302a2eba":[7,16,1,5], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8909732521d379179003d97ab7a05428":[9,0,0,0,19,35], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8909732521d379179003d97ab7a05428":[7,16,1,35], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a89862929a72bff65257ca1d51a0fce4d":[9,0,0,0,19,52], @@ -109,10 +114,10 @@ var NAVTREEINDEX2 = "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a909cc2a7018864b0b71abacc4058fd8f":[7,16,1,24], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a982579753e70e59a9ea13ce628ac891a":[9,0,0,0,19,56], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a982579753e70e59a9ea13ce628ac891a":[7,16,1,39], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa46f705dcf97502e95627ffde614f98b":[9,0,0,0,19,37], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa46f705dcf97502e95627ffde614f98b":[7,16,1,37], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa536e574a642ff3ab9e12bff7ba2c6a2":[9,0,0,0,19,2], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa46f705dcf97502e95627ffde614f98b":[9,0,0,0,19,37], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa536e574a642ff3ab9e12bff7ba2c6a2":[7,16,1,2], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa536e574a642ff3ab9e12bff7ba2c6a2":[9,0,0,0,19,2], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa627548e1296e654fcfab463ec3c9587":[9,0,0,0,19,15], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa627548e1296e654fcfab463ec3c9587":[7,16,1,15], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa87d2e82fffa42c3680c7403ef94216e":[9,0,0,0,19,34], @@ -135,119 +140,114 @@ var NAVTREEINDEX2 = "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aca834dc035b7f7486f9ce40fde54fe9e":[7,16,1,30], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7accd8753672d319a30b4b4c2fb775e84d":[9,0,0,0,19,20], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7accd8753672d319a30b4b4c2fb775e84d":[7,16,1,20], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad5d34583e3556e153eda91620b48cc49":[9,0,0,0,19,27], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad5d34583e3556e153eda91620b48cc49":[7,16,1,27], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad5d34583e3556e153eda91620b48cc49":[9,0,0,0,19,27], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad724974204d51d688f569c5d387b967d":[9,0,0,0,19,43], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad87774f1c7784cf632e1e2f5b51036e1":[9,0,0,0,19,48], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad8c6207b0c4e732f3d507f0fb79370e8":[9,0,0,0,19,1], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad8c6207b0c4e732f3d507f0fb79370e8":[7,16,1,1], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7adfb41c92e2522712207ef7f2462b5e34":[7,16,1,31], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7adfb41c92e2522712207ef7f2462b5e34":[9,0,0,0,19,31], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7adfb41c92e2522712207ef7f2462b5e34":[7,16,1,31], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae4986291b7a810fe290851d73bebeb1c":[9,0,0,0,19,21], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae4986291b7a810fe290851d73bebeb1c":[7,16,1,21], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae5ad65d779b7eab32ab67ceff91a3bac":[9,0,0,0,19,23], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae5ad65d779b7eab32ab67ceff91a3bac":[7,16,1,23], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae8d1de0bb56e03aa58cb4d44b18edd2e":[7,16,1,12], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae8d1de0bb56e03aa58cb4d44b18edd2e":[9,0,0,0,19,12], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae8d1de0bb56e03aa58cb4d44b18edd2e":[7,16,1,12], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae9734e1d7af2abf291665ce9e4a728d3":[9,0,0,0,19,19], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae9734e1d7af2abf291665ce9e4a728d3":[7,16,1,19], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7af6cf80e57aae8ba0a57a5c456b1fe026":[9,0,0,0,19,55], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afc4b2f72cc9e424a750b506ce0cc4310":[9,0,0,0,19,51], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afd8fd77a1cc9405fcb4f26915d7f2d01":[9,0,0,0,19,29], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afd8fd77a1cc9405fcb4f26915d7f2d01":[7,16,1,29], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afd8fd77a1cc9405fcb4f26915d7f2d01":[9,0,0,0,19,29], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afedadfb3cde37a8ea4c84ed535f26d09":[9,0,0,0,19,16], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afedadfb3cde37a8ea4c84ed535f26d09":[7,16,1,16], "group__uv.html":[7,22], -"group__uv.html#ga097c89497824d4de225a85a00661fc89":[9,0,0,0,109], -"group__uv.html#ga3c75cd6ec3f80fc0a0c8ead4c4e71a15":[9,0,0,0,110], -"group__uv.html#ga99099e045993383f251a8026e1e40414":[9,0,0,0,148], -"group__uv.html#gaa5e3593c94f91910d9d928dfa0c18f6c":[9,0,0,0,145], -"group__uv.html#gac5f60dba13a45e5d554b4fb7df7b9610":[9,0,0,0,147], -"group__uv.html#gad85ce3bfc53ff754988d36bf5de39e21":[9,0,0,0,146], +"group__uv.html#ga097c89497824d4de225a85a00661fc89":[9,0,0,0,110], +"group__uv.html#ga3c75cd6ec3f80fc0a0c8ead4c4e71a15":[9,0,0,0,111], +"group__uv.html#ga99099e045993383f251a8026e1e40414":[9,0,0,0,149], +"group__uv.html#gaa5e3593c94f91910d9d928dfa0c18f6c":[9,0,0,0,146], +"group__uv.html#gac5f60dba13a45e5d554b4fb7df7b9610":[9,0,0,0,148], +"group__uv.html#gad85ce3bfc53ff754988d36bf5de39e21":[9,0,0,0,147], "group__vhost-mounts.html":[7,4,0], "group__vhost-mounts.html#ga31eca18e50cb4357480f2fcad36ff437":[7,4,0,2], -"group__vhost-mounts.html#ga31eca18e50cb4357480f2fcad36ff437":[9,0,0,0,28], +"group__vhost-mounts.html#ga31eca18e50cb4357480f2fcad36ff437":[9,0,0,0,29], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a13ab58b01ac6e05f595977f1e0f0db69":[7,4,0,2,3], -"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a13ab58b01ac6e05f595977f1e0f0db69":[9,0,0,0,28,3], +"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a13ab58b01ac6e05f595977f1e0f0db69":[9,0,0,0,29,3], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a1e9f0842b0e85db50fe648ed4ba9a4b0":[7,4,0,2,0], -"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a1e9f0842b0e85db50fe648ed4ba9a4b0":[9,0,0,0,28,0], +"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a1e9f0842b0e85db50fe648ed4ba9a4b0":[9,0,0,0,29,0], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2":[7,4,0,2,2], -"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2":[9,0,0,0,28,2], +"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2":[9,0,0,0,29,2], +"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67":[9,0,0,0,29,5], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67":[7,4,0,2,5], -"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67":[9,0,0,0,28,5], -"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da":[9,0,0,0,28,6], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da":[7,4,0,2,6], +"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da":[9,0,0,0,29,6], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437aec137a2434851bd856ceebfb697b9970":[7,4,0,2,4], -"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437aec137a2434851bd856ceebfb697b9970":[9,0,0,0,28,4], +"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437aec137a2434851bd856ceebfb697b9970":[9,0,0,0,29,4], +"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437afbd10eb4777517ed1f6bfdcf3b9ea1d1":[9,0,0,0,29,1], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437afbd10eb4777517ed1f6bfdcf3b9ea1d1":[7,4,0,2,1], -"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437afbd10eb4777517ed1f6bfdcf3b9ea1d1":[9,0,0,0,28,1], "group__wsclose.html":[7,17], +"group__wsclose.html#gaa1c863415d1783cd8de7938aa6efa262":[9,0,0,0,62], "group__wsclose.html#gaa1c863415d1783cd8de7938aa6efa262":[7,17,1], -"group__wsclose.html#gaa1c863415d1783cd8de7938aa6efa262":[9,0,0,0,61], -"group__wsclose.html#gae399c571df32ba532c0ca67da9284985":[9,0,0,0,21], +"group__wsclose.html#gae399c571df32ba532c0ca67da9284985":[9,0,0,0,22], "group__wsclose.html#gae399c571df32ba532c0ca67da9284985":[7,17,0], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a1bb501d212fa4d57053db681b1dfab98":[9,0,0,0,21,3], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a1bb501d212fa4d57053db681b1dfab98":[9,0,0,0,22,3], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a1bb501d212fa4d57053db681b1dfab98":[7,17,0,2], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a2e1f0113494a58e762eed3d22e7080d8":[9,0,0,0,22,10], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a2e1f0113494a58e762eed3d22e7080d8":[7,17,0,9], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a2e1f0113494a58e762eed3d22e7080d8":[9,0,0,0,21,10], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a32c38edab10d1379febac0c479ab2e9c":[9,0,0,0,21,14], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a3ffa38d5081b85fb739e02a747ccf2c4":[9,0,0,0,21,1], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a32c38edab10d1379febac0c479ab2e9c":[9,0,0,0,22,14], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a3ffa38d5081b85fb739e02a747ccf2c4":[9,0,0,0,22,1], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a3ffa38d5081b85fb739e02a747ccf2c4":[7,17,0,0], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a462c99b05459df700919cfd3f53c8276":[9,0,0,0,21,4], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a462c99b05459df700919cfd3f53c8276":[9,0,0,0,22,4], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a462c99b05459df700919cfd3f53c8276":[7,17,0,3], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a4b8a3b7ce6f731e5248e4b0fb64a5044":[9,0,0,0,22,6], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a4b8a3b7ce6f731e5248e4b0fb64a5044":[7,17,0,5], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a4b8a3b7ce6f731e5248e4b0fb64a5044":[9,0,0,0,21,6], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a68b3d34bebd88547dcfa5cadba0acd6c":[9,0,0,0,21,7], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a68b3d34bebd88547dcfa5cadba0acd6c":[9,0,0,0,22,7], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a68b3d34bebd88547dcfa5cadba0acd6c":[7,17,0,6], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a7aef2da0062da606eeb35aaca5cf9050":[9,0,0,0,21,8], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a7aef2da0062da606eeb35aaca5cf9050":[7,17,0,7], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a9737a68759e739856b150ff9dfa30218":[9,0,0,0,21,2], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a7aef2da0062da606eeb35aaca5cf9050":[9,0,0,0,22,8], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a9737a68759e739856b150ff9dfa30218":[9,0,0,0,22,2], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a9737a68759e739856b150ff9dfa30218":[7,17,0,1], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ac6a161822783ee873be1c66f48d14e0e":[9,0,0,0,22,11], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ac6a161822783ee873be1c66f48d14e0e":[7,17,0,10], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ac6a161822783ee873be1c66f48d14e0e":[9,0,0,0,21,11], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985acc9a317c70363dd88e823e066b2c73b7":[9,0,0,0,21,0], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad0869604d79e13700ae5d196a431b350":[9,0,0,0,21,12], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985acc9a317c70363dd88e823e066b2c73b7":[9,0,0,0,22,0], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad0869604d79e13700ae5d196a431b350":[7,17,0,11], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad09e68295eabdddcba4e332fbea70ae5":[9,0,0,0,21,9], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad0869604d79e13700ae5d196a431b350":[9,0,0,0,22,12], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad09e68295eabdddcba4e332fbea70ae5":[7,17,0,8], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad2b477a91c8445bf34ecd43977f9b390":[9,0,0,0,21,13], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad09e68295eabdddcba4e332fbea70ae5":[9,0,0,0,22,9], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad2b477a91c8445bf34ecd43977f9b390":[7,17,0,12], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985af90cb98d983ad3d4c79df9b6f3d4a4d2":[9,0,0,0,21,5], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad2b477a91c8445bf34ecd43977f9b390":[9,0,0,0,22,13], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985af90cb98d983ad3d4c79df9b6f3d4a4d2":[9,0,0,0,22,5], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985af90cb98d983ad3d4c79df9b6f3d4a4d2":[7,17,0,4], "group__wsstatus.html":[7,18], +"group__wsstatus.html#ga08e9ee165fca503fd9427d55cfecac37":[9,0,0,0,105], "group__wsstatus.html#ga08e9ee165fca503fd9427d55cfecac37":[7,18,3], -"group__wsstatus.html#ga08e9ee165fca503fd9427d55cfecac37":[9,0,0,0,104], -"group__wsstatus.html#ga26a140623d202dd2bf2004deb6994baa":[9,0,0,0,105], +"group__wsstatus.html#ga26a140623d202dd2bf2004deb6994baa":[9,0,0,0,106], "group__wsstatus.html#ga26a140623d202dd2bf2004deb6994baa":[7,18,4], "group__wsstatus.html#ga2bb3655329b4651cd06f79ee3a764421":[7,18,6], -"group__wsstatus.html#ga2bb3655329b4651cd06f79ee3a764421":[9,0,0,0,122], +"group__wsstatus.html#ga2bb3655329b4651cd06f79ee3a764421":[9,0,0,0,123], +"group__wsstatus.html#ga3df5045656dfb6b0e63a38de2dca79d2":[9,0,0,0,91], "group__wsstatus.html#ga3df5045656dfb6b0e63a38de2dca79d2":[7,18,1], -"group__wsstatus.html#ga3df5045656dfb6b0e63a38de2dca79d2":[9,0,0,0,90], "group__wsstatus.html#ga4ad226d5e01024b4046f4a5a37199aa1":[7,18,2], -"group__wsstatus.html#ga4ad226d5e01024b4046f4a5a37199aa1":[9,0,0,0,103], +"group__wsstatus.html#ga4ad226d5e01024b4046f4a5a37199aa1":[9,0,0,0,104], "group__wsstatus.html#gaccd9c59336efad8af0554f79cc5966fd":[7,18,0], -"group__wsstatus.html#gaccd9c59336efad8af0554f79cc5966fd":[9,0,0,0,77], +"group__wsstatus.html#gaccd9c59336efad8af0554f79cc5966fd":[9,0,0,0,78], "group__wsstatus.html#gaeca4afc94b1f026034f99cbba37e2f85":[7,18,5], -"group__wsstatus.html#gaeca4afc94b1f026034f99cbba37e2f85":[9,0,0,0,113], +"group__wsstatus.html#gaeca4afc94b1f026034f99cbba37e2f85":[9,0,0,0,114], "hierarchy.html":[8,2], -"index.html":[], "index.html":[0], +"index.html":[], "libwebsockets_8h.html":[9,0,0,0], -"libwebsockets_8h.html#a0b056fdcf949a838ff82209b4a627dd9":[9,0,0,0,158], -"libwebsockets_8h.html#a2271141d8be8d72b47ba327130b4905f":[9,0,0,0,23], -"libwebsockets_8h.html#a2271141d8be8d72b47ba327130b4905fa7741c12fc97574fa73a810fedae2be76":[9,0,0,0,23,1], -"libwebsockets_8h.html#a2271141d8be8d72b47ba327130b4905fa9ce9c65d4229d1d168fca3cc12e7f535":[9,0,0,0,23,2], -"libwebsockets_8h.html#a2271141d8be8d72b47ba327130b4905fafdb6cf2797a3ea957c690ad6edff25d6":[9,0,0,0,23,0], -"libwebsockets_8h.html#a27bb0b3cdcd0af839c928c253b521ff4":[9,0,0,0,55], +"libwebsockets_8h.html#a0b056fdcf949a838ff82209b4a627dd9":[9,0,0,0,159], +"libwebsockets_8h.html#a2271141d8be8d72b47ba327130b4905f":[9,0,0,0,24], +"libwebsockets_8h.html#a2271141d8be8d72b47ba327130b4905fa7741c12fc97574fa73a810fedae2be76":[9,0,0,0,24,1], +"libwebsockets_8h.html#a2271141d8be8d72b47ba327130b4905fa9ce9c65d4229d1d168fca3cc12e7f535":[9,0,0,0,24,2], +"libwebsockets_8h.html#a2271141d8be8d72b47ba327130b4905fafdb6cf2797a3ea957c690ad6edff25d6":[9,0,0,0,24,0], +"libwebsockets_8h.html#a27bb0b3cdcd0af839c928c253b521ff4":[9,0,0,0,56], "libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedb":[9,0,0,0,20], "libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedba35cf2bed9944faa062d9310197489b2f":[9,0,0,0,20,4], "libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedba60ac587febc583475c185e1409a0210c":[9,0,0,0,20,1], "libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedbaa424646e067c6266bcb4f0190b026d66":[9,0,0,0,20,0], "libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedbac8f5f992c6615324108cdf931da903be":[9,0,0,0,20,2], -"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedbad655f0eecc9e94be37b8ed07348716ef":[9,0,0,0,20,6], -"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedbad9cdc12a796e6c7d912278834d9c7dde":[9,0,0,0,20,3], -"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedbada3dca91d96bcde5df08a67b5a66e972":[9,0,0,0,20,5], -"libwebsockets_8h.html#a5326d3402af8429a166dd991dc65c4a2":[9,0,0,0,56], -"libwebsockets_8h.html#a5e627dbf1db48170ef486edbaf268672":[9,0,0,0,120], -"libwebsockets_8h.html#a72fe65e83b8bb03f904a1a256c673536":[9,0,0,0,118] +"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedbad655f0eecc9e94be37b8ed07348716ef":[9,0,0,0,20,6] }; diff --git a/doc/html/navtreeindex3.js b/doc/html/navtreeindex3.js index b6ffc936..6acf7ad2 100644 --- a/doc/html/navtreeindex3.js +++ b/doc/html/navtreeindex3.js @@ -1,13 +1,18 @@ var NAVTREEINDEX3 = { -"libwebsockets_8h.html#a9032a3062641d334161c29adcc4fa15d":[9,0,0,0,160], -"libwebsockets_8h.html#a9f2a8506fd963db95a5103823c60fb0a":[9,0,0,0,161], +"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedbad9cdc12a796e6c7d912278834d9c7dde":[9,0,0,0,20,3], +"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedbada3dca91d96bcde5df08a67b5a66e972":[9,0,0,0,20,5], +"libwebsockets_8h.html#a5326d3402af8429a166dd991dc65c4a2":[9,0,0,0,57], +"libwebsockets_8h.html#a5e627dbf1db48170ef486edbaf268672":[9,0,0,0,121], +"libwebsockets_8h.html#a72fe65e83b8bb03f904a1a256c673536":[9,0,0,0,119], +"libwebsockets_8h.html#a9032a3062641d334161c29adcc4fa15d":[9,0,0,0,161], +"libwebsockets_8h.html#a9f2a8506fd963db95a5103823c60fb0a":[9,0,0,0,162], "libwebsockets_8h.html#abddb8d337fb2692586d892b494739003":[9,0,0,0,17], "libwebsockets_8h.html#ac3abb8b7e6d29a0292797230e4031681":[9,0,0,0,16], "libwebsockets_8h.html#adedbc79528b71a5c7f27cde87100c9aa":[9,0,0,0,14], -"libwebsockets_8h.html#adf4abd01e8c43f07c6e498ce13590c3e":[9,0,0,0,121], -"libwebsockets_8h.html#aefb2f20fe5bb29d79701a399838ef4ce":[9,0,0,0,159], -"libwebsockets_8h.html#af52923473c59e643a974d65e12290831":[9,0,0,0,54], +"libwebsockets_8h.html#adf4abd01e8c43f07c6e498ce13590c3e":[9,0,0,0,122], +"libwebsockets_8h.html#aefb2f20fe5bb29d79701a399838ef4ce":[9,0,0,0,160], +"libwebsockets_8h.html#af52923473c59e643a974d65e12290831":[9,0,0,0,55], "libwebsockets_8h.html#aff42d53861afdc1a6edfb999ba688ecb":[9,0,0,0,10], "libwebsockets_8h_source.html":[9,0,0,0], "md_README.build.html":[1], @@ -176,16 +181,16 @@ var NAVTREEINDEX3 = "structlws__process__html__state.html#adcafd17704775b4bbeea9561fb340968":[7,6,1,1,0], "structlws__process__html__state.html#af0732884ef891e24fe5fa237ebaa21a3":[7,6,1,1,4], "structlws__process__html__state.html#af21119890fdfebe28fb5c4dabfc1bdf5":[7,6,1,1,1], -"structlws__protocol__vhost__options.html":[7,4,0,0], "structlws__protocol__vhost__options.html":[7,4,2], -"structlws__protocol__vhost__options.html#a0640a92513c70ee6b9b295a9ad1658e7":[7,4,2,3], +"structlws__protocol__vhost__options.html":[7,4,0,0], "structlws__protocol__vhost__options.html#a0640a92513c70ee6b9b295a9ad1658e7":[7,4,0,0,3], -"structlws__protocol__vhost__options.html#abc714ddb4171756fc8196e9823a1e21c":[7,4,2,1], +"structlws__protocol__vhost__options.html#a0640a92513c70ee6b9b295a9ad1658e7":[7,4,2,3], "structlws__protocol__vhost__options.html#abc714ddb4171756fc8196e9823a1e21c":[7,4,0,0,1], -"structlws__protocol__vhost__options.html#acf9db77f8eb64cd4e314be9b43d8a8b9":[7,4,0,0,0], +"structlws__protocol__vhost__options.html#abc714ddb4171756fc8196e9823a1e21c":[7,4,2,1], "structlws__protocol__vhost__options.html#acf9db77f8eb64cd4e314be9b43d8a8b9":[7,4,2,0], -"structlws__protocol__vhost__options.html#afd99fbc90be51ea2465b550c2ec47822":[7,4,2,2], +"structlws__protocol__vhost__options.html#acf9db77f8eb64cd4e314be9b43d8a8b9":[7,4,0,0,0], "structlws__protocol__vhost__options.html#afd99fbc90be51ea2465b550c2ec47822":[7,4,0,0,2], +"structlws__protocol__vhost__options.html#afd99fbc90be51ea2465b550c2ec47822":[7,4,2,2], "structlws__protocols.html":[7,10,1], "structlws__protocols.html#a0d1d4996d81b2f5e125bcec981e461c5":[7,10,1,4], "structlws__protocols.html#a0e63edb457a613c3fa4271e0a8f19624":[7,10,1,2], @@ -201,8 +206,8 @@ var NAVTREEINDEX3 = "structlws__session__info.html#afb924864b70f40372920688a5c1c895e":[7,10,0,2,2], "structlws__token__limits.html":[7,6,4,1], "structlws__token__limits.html#a6ec712306cbf8585bce7a56758a3ceff":[7,6,4,1,0], -"structlws__tokens.html":[7,6,4,0], "structlws__tokens.html":[7,6,6], +"structlws__tokens.html":[7,6,4,0], "structlws__tokens.html#a855b7375d1d58516c0ecd4b60e9a7766":[7,6,4,0,1], "structlws__tokens.html#a855b7375d1d58516c0ecd4b60e9a7766":[7,6,6,1], "structlws__tokens.html#a9f3635412bc71a5cb78e9862b55f10cd":[7,6,4,0,0], diff --git a/doc/latex/group__client.tex b/doc/latex/group__client.tex index 6ddc7a08..4541e8f3 100644 --- a/doc/latex/group__client.tex +++ b/doc/latex/group__client.tex @@ -5,6 +5,14 @@ \item struct \hyperlink{structlws__client__connect__info}{lws\+\_\+client\+\_\+connect\+\_\+info} \end{DoxyCompactItemize} +\subsection*{Enumerations} +\begin{DoxyCompactItemize} +\item +enum \hyperlink{group__client_ga96f3dbad54b2853969cfa933d66871ce}{lws\+\_\+client\+\_\+connect\+\_\+ssl\+\_\+connection\+\_\+flags} \{ {\bfseries L\+C\+C\+S\+C\+F\+\_\+\+U\+S\+E\+\_\+\+S\+SL} = (1 $<$$<$ 0), +{\bfseries L\+C\+C\+S\+C\+F\+\_\+\+A\+L\+L\+O\+W\+\_\+\+S\+E\+L\+F\+S\+I\+G\+N\+ED} = (1 $<$$<$ 1), +{\bfseries L\+C\+C\+S\+C\+F\+\_\+\+S\+K\+I\+P\+\_\+\+S\+E\+R\+V\+E\+R\+\_\+\+C\+E\+R\+T\+\_\+\+H\+O\+S\+T\+N\+A\+M\+E\+\_\+\+C\+H\+E\+CK} = (1 $<$$<$ 2) + \} +\end{DoxyCompactItemize} \subsection*{Functions} \begin{DoxyCompactItemize} \item @@ -24,6 +32,24 @@ L\+W\+S\+\_\+\+V\+I\+S\+I\+B\+LE L\+W\+S\+\_\+\+E\+X\+T\+E\+RN int {\bfseries lw \subsection{Detailed Description} \subsubsection*{Client releated functions} +\subsection{Enumeration Type Documentation} +\index{Client@{Client}!lws\+\_\+client\+\_\+connect\+\_\+ssl\+\_\+connection\+\_\+flags@{lws\+\_\+client\+\_\+connect\+\_\+ssl\+\_\+connection\+\_\+flags}} +\index{lws\+\_\+client\+\_\+connect\+\_\+ssl\+\_\+connection\+\_\+flags@{lws\+\_\+client\+\_\+connect\+\_\+ssl\+\_\+connection\+\_\+flags}!Client@{Client}} +\subsubsection[{\texorpdfstring{lws\+\_\+client\+\_\+connect\+\_\+ssl\+\_\+connection\+\_\+flags}{lws\_client\_connect\_ssl\_connection\_flags}}]{\setlength{\rightskip}{0pt plus 5cm}enum {\bf lws\+\_\+client\+\_\+connect\+\_\+ssl\+\_\+connection\+\_\+flags}}\hypertarget{group__client_ga96f3dbad54b2853969cfa933d66871ce}{}\label{group__client_ga96f3dbad54b2853969cfa933d66871ce} + + +{\ttfamily \#include $<$\hyperlink{libwebsockets_8h}{lib/libwebsockets.\+h}$>$} + +enum lws\+\_\+client\+\_\+connect\+\_\+ssl\+\_\+connection\+\_\+flags -\/ flags that may be used with struct \hyperlink{structlws__client__connect__info}{lws\+\_\+client\+\_\+connect\+\_\+info} ssl\+\_\+connection member to control if and how S\+SL checks apply to the client connection being created +\begin{DoxyCode} +1848 \{ +1849 LCCSCF\_USE\_SSL = (1 << 0), +1850 LCCSCF\_ALLOW\_SELFSIGNED = (1 << 1), +1851 LCCSCF\_SKIP\_SERVER\_CERT\_HOSTNAME\_CHECK = (1 << 2) +1852 \}; +\end{DoxyCode} + + \subsection{Function Documentation} \index{Client@{Client}!lws\+\_\+client\+\_\+connect@{lws\+\_\+client\+\_\+connect}} \index{lws\+\_\+client\+\_\+connect@{lws\+\_\+client\+\_\+connect}!Client@{Client}} diff --git a/doc/latex/group__context-and-vhost.tex b/doc/latex/group__context-and-vhost.tex index 15a74574..3b4cc9e7 100644 --- a/doc/latex/group__context-and-vhost.tex +++ b/doc/latex/group__context-and-vhost.tex @@ -143,20 +143,19 @@ L\+W\+S\+\_\+\+S\+E\+R\+V\+E\+R\+\_\+\+O\+P\+T\+I\+O\+N\+\_\+\+I\+P\+V6\+\_\+\+V 1414 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5aff121db04a10cf8b2c5df9d4f2b89f1e}{LWS\_SERVER\_OPTION\_LIBUV} = (1 << 10), 1416 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a4832187186c4d130c68051214cd42ada}{LWS\_SERVER\_OPTION\_REDIRECT\_HTTP\_TO\_HTTPS} = ( 1 << 11) | -1417 (1 << 3) | -1418 (1 << 12), -1421 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a7fed6a527c8d5e0acac1b4179644583a}{LWS\_SERVER\_OPTION\_DO\_SSL\_GLOBAL\_INIT} = ( +1417 (1 << 12), +1420 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a7fed6a527c8d5e0acac1b4179644583a}{LWS\_SERVER\_OPTION\_DO\_SSL\_GLOBAL\_INIT} = ( 1 << 12), -1423 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5accc9d0d11d1124a21659586164b0962e}{LWS\_SERVER\_OPTION\_EXPLICIT\_VHOSTS} = (1 << 13) +1422 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5accc9d0d11d1124a21659586164b0962e}{LWS\_SERVER\_OPTION\_EXPLICIT\_VHOSTS} = (1 << 13) , -1426 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a9637e9001d8c8b2521086bcafbd8a941}{LWS\_SERVER\_OPTION\_UNIX\_SOCK} = (1 << 14), -1428 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5ac962efd35abf6c402f9fb14aa14f5016}{LWS\_SERVER\_OPTION\_STS} = (1 << 15), -1431 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5af62887536e25e053e68741006dba46d8}{LWS\_SERVER\_OPTION\_IPV6\_V6ONLY\_MODIFY} = ( +1425 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a9637e9001d8c8b2521086bcafbd8a941}{LWS\_SERVER\_OPTION\_UNIX\_SOCK} = (1 << 14), +1427 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5ac962efd35abf6c402f9fb14aa14f5016}{LWS\_SERVER\_OPTION\_STS} = (1 << 15), +1430 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5af62887536e25e053e68741006dba46d8}{LWS\_SERVER\_OPTION\_IPV6\_V6ONLY\_MODIFY} = ( 1 << 16), -1433 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5aca5d42820b65eac5618ec3f0bd8a1160}{LWS\_SERVER\_OPTION\_IPV6\_V6ONLY\_VALUE} = (1 << 17) +1432 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5aca5d42820b65eac5618ec3f0bd8a1160}{LWS\_SERVER\_OPTION\_IPV6\_V6ONLY\_VALUE} = (1 << 17) , -1436 \textcolor{comment}{/****** add new things just above ---^ ******/} -1437 \}; +1435 \textcolor{comment}{/****** add new things just above ---^ ******/} +1436 \}; \end{DoxyCode} diff --git a/doc/latex/group__form-parsing.tex b/doc/latex/group__form-parsing.tex index db54f682..9fa04e3c 100644 --- a/doc/latex/group__form-parsing.tex +++ b/doc/latex/group__form-parsing.tex @@ -89,11 +89,11 @@ L\+W\+S\+\_\+\+U\+F\+S\+\_\+\+O\+P\+EN\hypertarget{group__form-parsing_gga41a74a \end{Desc} \begin{DoxyCode} -2618 \{ -2619 \hyperlink{group__form-parsing_gga41a74a822771d3dce89751aa3bce28aead3a958e7719ac273c3ba4f684f00c87f}{LWS\_UFS\_CONTENT}, -2621 \hyperlink{group__form-parsing_gga41a74a822771d3dce89751aa3bce28aea6ce2a55a4c3695cdb640c893d95bd3a7}{LWS\_UFS\_FINAL\_CONTENT}, -2623 \hyperlink{group__form-parsing_gga41a74a822771d3dce89751aa3bce28aea2d25de44865bd44e5a3903a2bab9ca83}{LWS\_UFS\_OPEN} -2625 \}; +2628 \{ +2629 \hyperlink{group__form-parsing_gga41a74a822771d3dce89751aa3bce28aead3a958e7719ac273c3ba4f684f00c87f}{LWS\_UFS\_CONTENT}, +2631 \hyperlink{group__form-parsing_gga41a74a822771d3dce89751aa3bce28aea6ce2a55a4c3695cdb640c893d95bd3a7}{LWS\_UFS\_FINAL\_CONTENT}, +2633 \hyperlink{group__form-parsing_gga41a74a822771d3dce89751aa3bce28aea2d25de44865bd44e5a3903a2bab9ca83}{LWS\_UFS\_OPEN} +2635 \}; \end{DoxyCode} diff --git a/doc/latex/group__sending-data.tex b/doc/latex/group__sending-data.tex index cc54a8c6..d80adc68 100644 --- a/doc/latex/group__sending-data.tex +++ b/doc/latex/group__sending-data.tex @@ -57,28 +57,28 @@ L\+W\+S\+\_\+\+W\+R\+I\+T\+E\+\_\+\+C\+L\+I\+E\+N\+T\+\_\+\+I\+G\+N\+O\+R\+E\+\_ \end{Desc} \begin{DoxyCode} -2959 \{ -2960 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193da80e8f169fda236c56bfb795ed62903db}{LWS\_WRITE\_TEXT} = 0, -2964 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193daf6486c0dba50c44198100717721d9ab2}{LWS\_WRITE\_BINARY} = 1, -2967 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193da10047eb05b5e1c298151dc47a5b44826}{LWS\_WRITE\_CONTINUATION} = 2, -2970 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193dabb6705e1d1327cdda5025be28f07712e}{LWS\_WRITE\_HTTP} = 3, -2973 \textcolor{comment}{/* LWS\_WRITE\_CLOSE is handled by lws\_close\_reason() */} -2974 LWS\_WRITE\_PING = 5, -2975 LWS\_WRITE\_PONG = 6, -2976 -2977 \textcolor{comment}{/* Same as write\_http but we know this write ends the transaction */} -2978 LWS\_WRITE\_HTTP\_FINAL = 7, -2979 -2980 \textcolor{comment}{/* HTTP2 */} -2981 -2982 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917}{LWS\_WRITE\_HTTP\_HEADERS} = 8, -2989 \textcolor{comment}{/****** add new things just above ---^ ******/} -2990 -2991 \textcolor{comment}{/* flags */} -2992 -2993 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193da115440f272a5d55518adfc8099acfee3}{LWS\_WRITE\_NO\_FIN} = 0x40, -2996 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193da220d8e8652d9b97fb66e476e2a60ffce}{LWS\_WRITE\_CLIENT\_IGNORE\_XOR\_MASK} = 0x80 -3000 \}; +2969 \{ +2970 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193da80e8f169fda236c56bfb795ed62903db}{LWS\_WRITE\_TEXT} = 0, +2974 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193daf6486c0dba50c44198100717721d9ab2}{LWS\_WRITE\_BINARY} = 1, +2977 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193da10047eb05b5e1c298151dc47a5b44826}{LWS\_WRITE\_CONTINUATION} = 2, +2980 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193dabb6705e1d1327cdda5025be28f07712e}{LWS\_WRITE\_HTTP} = 3, +2983 \textcolor{comment}{/* LWS\_WRITE\_CLOSE is handled by lws\_close\_reason() */} +2984 LWS\_WRITE\_PING = 5, +2985 LWS\_WRITE\_PONG = 6, +2986 +2987 \textcolor{comment}{/* Same as write\_http but we know this write ends the transaction */} +2988 LWS\_WRITE\_HTTP\_FINAL = 7, +2989 +2990 \textcolor{comment}{/* HTTP2 */} +2991 +2992 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917}{LWS\_WRITE\_HTTP\_HEADERS} = 8, +2999 \textcolor{comment}{/****** add new things just above ---^ ******/} +3000 +3001 \textcolor{comment}{/* flags */} +3002 +3003 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193da115440f272a5d55518adfc8099acfee3}{LWS\_WRITE\_NO\_FIN} = 0x40, +3006 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193da220d8e8652d9b97fb66e476e2a60ffce}{LWS\_WRITE\_CLIENT\_IGNORE\_XOR\_MASK} = 0x80 +3010 \}; \end{DoxyCode} diff --git a/doc/latex/group__smtp.tex b/doc/latex/group__smtp.tex index fd2b5aa9..eda7436d 100644 --- a/doc/latex/group__smtp.tex +++ b/doc/latex/group__smtp.tex @@ -88,17 +88,17 @@ L\+G\+S\+S\+M\+T\+P\+\_\+\+S\+E\+N\+T\+\_\+\+Q\+U\+IT\hypertarget{group__smtp_gg \end{Desc} \begin{DoxyCode} -3881 \{ -3882 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c}{LGSSMTP\_IDLE}, -3883 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933}{LGSSMTP\_CONNECTING}, -3884 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d}{LGSSMTP\_CONNECTED}, -3885 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad}{LGSSMTP\_SENT\_HELO}, -3886 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab}{LGSSMTP\_SENT\_FROM}, -3887 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83}{LGSSMTP\_SENT\_TO}, -3888 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14}{LGSSMTP\_SENT\_DATA}, -3889 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69}{LGSSMTP\_SENT\_BODY}, -3890 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5}{LGSSMTP\_SENT\_QUIT}, -3891 \}; +3891 \{ +3892 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c}{LGSSMTP\_IDLE}, +3893 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933}{LGSSMTP\_CONNECTING}, +3894 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d}{LGSSMTP\_CONNECTED}, +3895 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad}{LGSSMTP\_SENT\_HELO}, +3896 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab}{LGSSMTP\_SENT\_FROM}, +3897 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83}{LGSSMTP\_SENT\_TO}, +3898 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14}{LGSSMTP\_SENT\_DATA}, +3899 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69}{LGSSMTP\_SENT\_BODY}, +3900 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5}{LGSSMTP\_SENT\_QUIT}, +3901 \}; \end{DoxyCode} diff --git a/doc/latex/group__vhost-mounts.tex b/doc/latex/group__vhost-mounts.tex index 691a57ce..c060d661 100644 --- a/doc/latex/group__vhost-mounts.tex +++ b/doc/latex/group__vhost-mounts.tex @@ -55,13 +55,13 @@ L\+W\+S\+M\+P\+R\+O\+\_\+\+C\+A\+L\+L\+B\+A\+CK\hypertarget{group__vhost-mounts_ \end{Desc} \begin{DoxyCode} -1785 \{ -1786 \hyperlink{group__vhost-mounts_gga31eca18e50cb4357480f2fcad36ff437a1e9f0842b0e85db50fe648ed4ba9a4b0}{LWSMPRO\_HTTP} = 0, -1787 \hyperlink{group__vhost-mounts_gga31eca18e50cb4357480f2fcad36ff437afbd10eb4777517ed1f6bfdcf3b9ea1d1}{LWSMPRO\_HTTPS} = 1, -1788 \hyperlink{group__vhost-mounts_gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2}{LWSMPRO\_FILE} = 2, -1789 \hyperlink{group__vhost-mounts_gga31eca18e50cb4357480f2fcad36ff437a13ab58b01ac6e05f595977f1e0f0db69}{LWSMPRO\_CGI} = 3, -1790 \hyperlink{group__vhost-mounts_gga31eca18e50cb4357480f2fcad36ff437aec137a2434851bd856ceebfb697b9970}{LWSMPRO\_REDIR\_HTTP} = 4, -1791 \hyperlink{group__vhost-mounts_gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67}{LWSMPRO\_REDIR\_HTTPS} = 5, -1792 \hyperlink{group__vhost-mounts_gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da}{LWSMPRO\_CALLBACK} = 6, -1793 \}; +1784 \{ +1785 \hyperlink{group__vhost-mounts_gga31eca18e50cb4357480f2fcad36ff437a1e9f0842b0e85db50fe648ed4ba9a4b0}{LWSMPRO\_HTTP} = 0, +1786 \hyperlink{group__vhost-mounts_gga31eca18e50cb4357480f2fcad36ff437afbd10eb4777517ed1f6bfdcf3b9ea1d1}{LWSMPRO\_HTTPS} = 1, +1787 \hyperlink{group__vhost-mounts_gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2}{LWSMPRO\_FILE} = 2, +1788 \hyperlink{group__vhost-mounts_gga31eca18e50cb4357480f2fcad36ff437a13ab58b01ac6e05f595977f1e0f0db69}{LWSMPRO\_CGI} = 3, +1789 \hyperlink{group__vhost-mounts_gga31eca18e50cb4357480f2fcad36ff437aec137a2434851bd856ceebfb697b9970}{LWSMPRO\_REDIR\_HTTP} = 4, +1790 \hyperlink{group__vhost-mounts_gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67}{LWSMPRO\_REDIR\_HTTPS} = 5, +1791 \hyperlink{group__vhost-mounts_gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da}{LWSMPRO\_CALLBACK} = 6, +1792 \}; \end{DoxyCode} diff --git a/doc/latex/libwebsockets_8h.tex b/doc/latex/libwebsockets_8h.tex index 48b1326b..c4bfa59e 100644 --- a/doc/latex/libwebsockets_8h.tex +++ b/doc/latex/libwebsockets_8h.tex @@ -288,6 +288,11 @@ enum \hyperlink{group__vhost-mounts_ga31eca18e50cb4357480f2fcad36ff437}{lws\+\_\ \hyperlink{group__vhost-mounts_gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da}{L\+W\+S\+M\+P\+R\+O\+\_\+\+C\+A\+L\+L\+B\+A\+CK} = 6 \} \item +enum \hyperlink{group__client_ga96f3dbad54b2853969cfa933d66871ce}{lws\+\_\+client\+\_\+connect\+\_\+ssl\+\_\+connection\+\_\+flags} \{ {\bfseries L\+C\+C\+S\+C\+F\+\_\+\+U\+S\+E\+\_\+\+S\+SL} = (1 $<$$<$ 0), +{\bfseries L\+C\+C\+S\+C\+F\+\_\+\+A\+L\+L\+O\+W\+\_\+\+S\+E\+L\+F\+S\+I\+G\+N\+ED} = (1 $<$$<$ 1), +{\bfseries L\+C\+C\+S\+C\+F\+\_\+\+S\+K\+I\+P\+\_\+\+S\+E\+R\+V\+E\+R\+\_\+\+C\+E\+R\+T\+\_\+\+H\+O\+S\+T\+N\+A\+M\+E\+\_\+\+C\+H\+E\+CK} = (1 $<$$<$ 2) + \} +\item enum {\bfseries http\+\_\+status} \{ \\* {\bfseries H\+T\+T\+P\+\_\+\+S\+T\+A\+T\+U\+S\+\_\+\+OK} = 200, {\bfseries H\+T\+T\+P\+\_\+\+S\+T\+A\+T\+U\+S\+\_\+\+N\+O\+\_\+\+C\+O\+N\+T\+E\+NT} = 204, diff --git a/lib/libwebsockets.h b/lib/libwebsockets.h index ba55ea3c..63836bbc 100644 --- a/lib/libwebsockets.h +++ b/lib/libwebsockets.h @@ -1414,7 +1414,6 @@ enum lws_context_options { LWS_SERVER_OPTION_LIBUV = (1 << 10), /**< (CTX) Use libuv event loop */ LWS_SERVER_OPTION_REDIRECT_HTTP_TO_HTTPS = (1 << 11) | - (1 << 3) | (1 << 12), /**< (VH) Use http redirect to force http to https * (deprecated: use mount redirection) */ @@ -1841,6 +1840,17 @@ struct lws_http_mount { * */ ///@{ +/** 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 + */ + +enum lws_client_connect_ssl_connection_flags { + LCCSCF_USE_SSL = (1 << 0), + LCCSCF_ALLOW_SELFSIGNED = (1 << 1), + LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK = (1 << 2) +}; + /** struct lws_client_connect_info - parameters to connect with when using * lws_client_connect_via_info() */ diff --git a/lib/private-libwebsockets.h b/lib/private-libwebsockets.h index 6cdfdd54..2b8e8ae3 100644 --- a/lib/private-libwebsockets.h +++ b/lib/private-libwebsockets.h @@ -1275,7 +1275,7 @@ struct lws { unsigned int extension_data_pending:1; #endif #ifdef LWS_OPENSSL_SUPPORT - unsigned int use_ssl:2; + unsigned int use_ssl:3; unsigned int upgraded:1; #endif #ifdef _WIN32 diff --git a/lib/ssl-client.c b/lib/ssl-client.c index 79e947fe..be1ee3d5 100644 --- a/lib/ssl-client.c +++ b/lib/ssl-client.c @@ -47,13 +47,15 @@ lws_ssl_client_bio_create(struct lws *wsi) wsi->ssl = SSL_new(wsi->vhost->ssl_client_ctx); #if defined LWS_HAVE_X509_VERIFY_PARAM_set1_host - param = SSL_get0_param(wsi->ssl); - /* Enable automatic hostname checks */ - X509_VERIFY_PARAM_set_hostflags(param, - X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS); - X509_VERIFY_PARAM_set1_host(param, hostname, 0); - /* Configure a non-zero callback if desired */ - SSL_set_verify(wsi->ssl, SSL_VERIFY_PEER, 0); + if (!(wsi->use_ssl & LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK)) { + param = SSL_get0_param(wsi->ssl); + /* Enable automatic hostname checks */ + X509_VERIFY_PARAM_set_hostflags(param, + X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS); + X509_VERIFY_PARAM_set1_host(param, hostname, 0); + /* Configure a non-zero callback if desired */ + SSL_set_verify(wsi->ssl, SSL_VERIFY_PEER, 0); + } #endif #ifndef USE_WOLFSSL @@ -280,12 +282,12 @@ lws_ssl_client_connect2(struct lws *wsi) lws_latency_pre(context, wsi); n = SSL_get_verify_result(wsi->ssl); lws_latency(context, wsi, - "SSL_get_verify_result LWS_CONNMODE..HANDSHAKE", - n, n > 0); + "SSL_get_verify_result LWS_CONNMODE..HANDSHAKE", n, n > 0); if (n != X509_V_OK) { if ((n == X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT || - n == X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN) && wsi->use_ssl == 2) { + n == X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN) && + wsi->use_ssl & LCCSCF_ALLOW_SELFSIGNED) { lwsl_notice("accepting self-signed certificate\n"); } else { lwsl_err("server's cert didn't look good, X509_V_ERR = %d: %s\n", diff --git a/test-server/test-client.c b/test-server/test-client.c index 828e2a21..1377a77a 100644 --- a/test-server/test-client.c +++ b/test-server/test-client.c @@ -311,6 +311,7 @@ static struct option options[] = { { "debug", required_argument, NULL, 'd' }, { "port", required_argument, NULL, 'p' }, { "ssl", no_argument, NULL, 's' }, + { "strict-ssl", no_argument, NULL, 'S' }, { "version", required_argument, NULL, 'v' }, { "undeflated", no_argument, NULL, 'u' }, { "nomux", no_argument, NULL, 'n' }, @@ -359,15 +360,20 @@ int main(int argc, char **argv) goto usage; while (n >= 0) { - n = getopt_long(argc, argv, "nuv:hsp:d:lC:K:A:", options, NULL); + n = getopt_long(argc, argv, "Snuv:hsp:d:lC:K:A:", options, NULL); if (n < 0) continue; switch (n) { case 'd': lws_set_log_level(atoi(optarg), NULL); break; - case 's': - use_ssl = 2; /* 2 = allow selfsigned */ + case 's': /* lax SSL, allow selfsigned, skip checking hostname */ + use_ssl = LCCSCF_USE_SSL | + LCCSCF_ALLOW_SELFSIGNED | + LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK; + break; + case 'S': /* Strict SSL, no selfsigned, check server hostname */ + use_ssl = LCCSCF_USE_SSL; break; case 'p': port = atoi(optarg); @@ -434,7 +440,7 @@ int main(int argc, char **argv) use_ssl = 0; if (!strcmp(prot, "https") || !strcmp(prot, "wss")) if (!use_ssl) - use_ssl = 1; + use_ssl = LCCSCF_USE_SSL; /* * create the websockets context. This tracks open connections and @@ -477,13 +483,21 @@ int main(int argc, char **argv) #endif #endif #endif - - if (use_ssl == 1) - lwsl_notice(" Cert must validate correctly (use -s to allow selfsigned)\n"); - else - lwsl_notice(" Selfsigned certs allowed\n"); } + if (use_ssl & LCCSCF_USE_SSL) + lwsl_notice(" Using SSL\n"); + else + lwsl_notice(" SSL disabled\n"); + if (use_ssl & LCCSCF_ALLOW_SELFSIGNED) + lwsl_notice(" Selfsigned certs allowed\n"); + else + lwsl_notice(" Cert must validate correctly (use -s to allow selfsigned)\n"); + if (use_ssl & LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK) + lwsl_notice(" Skipping peer cert hostname check\n"); + else + lwsl_notice(" Requiring peer cert hostname matches\n"); + context = lws_create_context(&info); if (context == NULL) { fprintf(stderr, "Creating libwebsocket context failed\n");