diff --git a/README.coding.md b/README.coding.md index 054c11ce..aab6d772 100644 --- a/README.coding.md +++ b/README.coding.md @@ -202,6 +202,18 @@ If **libwebsocket** handled it, it zeros the pollfd `revents` field before retur So you can let **libwebsockets** try and if `pollfd->revents` is nonzero on return, you know it needs handling by your code. +Also note that when integrating a foreign event loop like libev or libuv where +it doesn't natively use poll() semantics, and you must return a fake pollfd +reflecting the real event: + + - be sure you set .events to .revents value as well in the synthesized pollfd + + - check the built-in support for the event loop if possible (eg, ./lib/libuv.c) + to see how it interfaces to lws + + - use LWS_POLLHUP / LWS_POLLIN / LWS_POLLOUT from libwebsockets.h to avoid + losing windows compatibility + Using with in c++ apps ---------------------- diff --git a/doc/html/group__client.html b/doc/html/group__client.html index 2de83739..65594e08 100644 --- a/doc/html/group__client.html +++ b/doc/html/group__client.html @@ -112,7 +112,7 @@ LWS_VISIBLE LWS_EXTERN int #include <lib/libwebsockets.h>

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

-
1848  {
1849  LCCSCF_USE_SSL = (1 << 0),
1850  LCCSCF_ALLOW_SELFSIGNED = (1 << 1),
1851  LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK = (1 << 2)
1852 };
+
1854  {
1855  LCCSCF_USE_SSL = (1 << 0),
1856  LCCSCF_ALLOW_SELFSIGNED = (1 << 1),
1857  LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK = (1 << 2)
1858 };

Function Documentation

diff --git a/doc/html/group__context-and-vhost.html b/doc/html/group__context-and-vhost.html index 953dd9eb..f4000612 100644 --- a/doc/html/group__context-and-vhost.html +++ b/doc/html/group__context-and-vhost.html @@ -206,23 +206,23 @@ Functions

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

-
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:1422
-
Definition: libwebsockets.h:1393
-
Definition: libwebsockets.h:1411
-
Definition: libwebsockets.h:1395
-
Definition: libwebsockets.h:1400
-
Definition: libwebsockets.h:1420
-
Definition: libwebsockets.h:1432
-
Definition: libwebsockets.h:1402
-
Definition: libwebsockets.h:1414
-
Definition: libwebsockets.h:1425
-
Definition: libwebsockets.h:1409
-
Definition: libwebsockets.h:1407
-
Definition: libwebsockets.h:1427
-
Definition: libwebsockets.h:1430
+
1393  {
1395  (1 << 12),
1402  (1 << 12),
1406  LWS_SERVER_OPTION_LIBEV = (1 << 4),
1408  LWS_SERVER_OPTION_DISABLE_IPV6 = (1 << 5),
1417  LWS_SERVER_OPTION_SSL_ECDH = (1 << 9) |
1418  (1 << 12),
1420  LWS_SERVER_OPTION_LIBUV = (1 << 10),
1423  (1 << 12),
1431  LWS_SERVER_OPTION_UNIX_SOCK = (1 << 14),
1433  LWS_SERVER_OPTION_STS = (1 << 15),
1441  /****** add new things just above ---^ ******/
1442 };
+
Definition: libwebsockets.h:1410
+
Definition: libwebsockets.h:1422
+
Definition: libwebsockets.h:1428
+
Definition: libwebsockets.h:1399
+
Definition: libwebsockets.h:1417
+
Definition: libwebsockets.h:1401
+
Definition: libwebsockets.h:1406
+
Definition: libwebsockets.h:1426
+
Definition: libwebsockets.h:1438
+
Definition: libwebsockets.h:1408
+
Definition: libwebsockets.h:1420
+
Definition: libwebsockets.h:1431
+
Definition: libwebsockets.h:1415
+
Definition: libwebsockets.h:1413
+
Definition: libwebsockets.h:1433
+
Definition: libwebsockets.h:1436
diff --git a/doc/html/group__extensions.html b/doc/html/group__extensions.html index aba469ad..4a94bbf8 100644 --- a/doc/html/group__extensions.html +++ b/doc/html/group__extensions.html @@ -242,9 +242,9 @@ Functions

may have an optional decimal argument

-
989  {
990  EXTARG_NONE,
991  EXTARG_DEC,
994  /* Add new things just above here ---^
995  * This is part of the ABI, don't needlessly break compatibility */
996 };
Definition: libwebsockets.h:992
-
Definition: libwebsockets.h:990
-
Definition: libwebsockets.h:991
+
995  {
996  EXTARG_NONE,
997  EXTARG_DEC,
1000  /* Add new things just above here ---^
1001  * This is part of the ABI, don't needlessly break compatibility */
1002 };
Definition: libwebsockets.h:998
+
Definition: libwebsockets.h:996
+
Definition: libwebsockets.h:997
diff --git a/doc/html/group__form-parsing.html b/doc/html/group__form-parsing.html index 6cad333a..2a748b77 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

-
2628  {
2633  LWS_UFS_OPEN
2635 };
Definition: libwebsockets.h:2631
-
Definition: libwebsockets.h:2633
-
Definition: libwebsockets.h:2629
+
2634  {
2639  LWS_UFS_OPEN
2641 };
Definition: libwebsockets.h:2637
+
Definition: libwebsockets.h:2639
+
Definition: libwebsockets.h:2635
diff --git a/doc/html/group__generic-sessions.html b/doc/html/group__generic-sessions.html index 91850ba3..80c4eb58 100644 --- a/doc/html/group__generic-sessions.html +++ b/doc/html/group__generic-sessions.html @@ -117,8 +117,8 @@ Enumerations

an existing user was deleted

-
1351  {
1352  LWSGSE_CREATED,
1354 };
Definition: libwebsockets.h:1353
-
Definition: libwebsockets.h:1352
+
1357  {
1358  LWSGSE_CREATED,
1360 };
Definition: libwebsockets.h:1359
+
Definition: libwebsockets.h:1358
@@ -148,10 +148,10 @@ Enumerations

he just completed "forgot password" flow

-
1333  {
1334  LWSGS_AUTH_LOGGED_IN = 1,
1335  LWSGS_AUTH_ADMIN = 2,
1336  LWSGS_AUTH_VERIFIED = 4,
1338 };
Definition: libwebsockets.h:1336
-
Definition: libwebsockets.h:1337
-
Definition: libwebsockets.h:1335
-
Definition: libwebsockets.h:1334
+
1339  {
1340  LWSGS_AUTH_LOGGED_IN = 1,
1341  LWSGS_AUTH_ADMIN = 2,
1342  LWSGS_AUTH_VERIFIED = 4,
1344 };
Definition: libwebsockets.h:1342
+
Definition: libwebsockets.h:1343
+
Definition: libwebsockets.h:1341
+
Definition: libwebsockets.h:1340
diff --git a/doc/html/group__sending-data.html b/doc/html/group__sending-data.html index 231dc7bf..762f7e66 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

-
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
+
2975  {
2976  LWS_WRITE_TEXT = 0,
2980  LWS_WRITE_BINARY = 1,
2986  LWS_WRITE_HTTP = 3,
2989  /* LWS_WRITE_CLOSE is handled by lws_close_reason() */
2990  LWS_WRITE_PING = 5,
2991  LWS_WRITE_PONG = 6,
2992 
2993  /* Same as write_http but we know this write ends the transaction */
2994  LWS_WRITE_HTTP_FINAL = 7,
2995 
2996  /* HTTP2 */
2997 
3005  /****** add new things just above ---^ ******/
3006 
3007  /* flags */
3008 
3009  LWS_WRITE_NO_FIN = 0x40,
3016 };
Definition: libwebsockets.h:2986
+
Definition: libwebsockets.h:3009
+
Definition: libwebsockets.h:2976
+
Definition: libwebsockets.h:2980
+
Definition: libwebsockets.h:3012
+
Definition: libwebsockets.h:2983
+
Definition: libwebsockets.h:2998
diff --git a/doc/html/group__smtp.html b/doc/html/group__smtp.html index c1f974f7..7514f2b7 100644 --- a/doc/html/group__smtp.html +++ b/doc/html/group__smtp.html @@ -157,15 +157,15 @@ Functions

sent the session quit

-
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
+
3897  {
3898  LGSSMTP_IDLE,
3903  LGSSMTP_SENT_TO,
3907 };
Definition: libwebsockets.h:3900
+
Definition: libwebsockets.h:3905
+
Definition: libwebsockets.h:3898
+
Definition: libwebsockets.h:3899
+
Definition: libwebsockets.h:3903
+
Definition: libwebsockets.h:3902
+
Definition: libwebsockets.h:3906
+
Definition: libwebsockets.h:3901
+
Definition: libwebsockets.h:3904
diff --git a/doc/html/group__usercb.html b/doc/html/group__usercb.html index 59c355c8..3bd68b93 100644 --- a/doc/html/group__usercb.html +++ b/doc/html/group__usercb.html @@ -370,46 +370,46 @@ Enumerations

user code can use any including / above without fear of clashes

-
571  {
655  LWS_CALLBACK_HTTP = 12,
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 
915  LWS_CALLBACK_USER = 1000,
917 };
Definition: libwebsockets.h:678
-
Definition: libwebsockets.h:806
- -
Definition: libwebsockets.h:804
-
Definition: libwebsockets.h:709
-
Definition: libwebsockets.h:655
-
Definition: libwebsockets.h:689
-
Definition: libwebsockets.h:830
-
Definition: libwebsockets.h:776
-
Definition: libwebsockets.h:669
-
Definition: libwebsockets.h:867
- -
Definition: libwebsockets.h:856
- -
Definition: libwebsockets.h:630
-
Definition: libwebsockets.h:808
-
Definition: libwebsockets.h:796
-
Definition: libwebsockets.h:627
-
Definition: libwebsockets.h:814
-
Definition: libwebsockets.h:620
-
Definition: libwebsockets.h:701
-
Definition: libwebsockets.h:799
-
Definition: libwebsockets.h:836
-
Definition: libwebsockets.h:676
-
Definition: libwebsockets.h:672
-
Definition: libwebsockets.h:572
- -
Definition: libwebsockets.h:640
-
Definition: libwebsockets.h:674
-
Definition: libwebsockets.h:752
-
Definition: libwebsockets.h:638
-
Definition: libwebsockets.h:643
- -
Definition: libwebsockets.h:576
-
Definition: libwebsockets.h:653
-
Definition: libwebsockets.h:915
-
Definition: libwebsockets.h:632
-
Definition: libwebsockets.h:634
-
Definition: libwebsockets.h:645
-
Definition: libwebsockets.h:844
+
577  {
661  LWS_CALLBACK_HTTP = 12,
819  /* external poll() management support */
882  LWS_CALLBACK_WS_EXT_DEFAULTS = 39,
885  LWS_CALLBACK_CGI = 40,
887  LWS_CALLBACK_CGI_TERMINATED = 41,
889  LWS_CALLBACK_CGI_STDIN_DATA = 42,
891  LWS_CALLBACK_CGI_STDIN_COMPLETED = 43,
893  LWS_CALLBACK_ESTABLISHED_CLIENT_HTTP = 44,
895  LWS_CALLBACK_CLOSED_CLIENT_HTTP = 45,
897  LWS_CALLBACK_RECEIVE_CLIENT_HTTP = 46,
899  LWS_CALLBACK_COMPLETED_CLIENT_HTTP = 47,
901  LWS_CALLBACK_RECEIVE_CLIENT_HTTP_READ = 48,
903  LWS_CALLBACK_HTTP_BIND_PROTOCOL = 49,
905  LWS_CALLBACK_HTTP_DROP_PROTOCOL = 50,
907  LWS_CALLBACK_CHECK_ACCESS_RIGHTS = 51,
909  LWS_CALLBACK_PROCESS_HTML = 52,
911  LWS_CALLBACK_ADD_HEADERS = 53,
913  LWS_CALLBACK_SESSION_INFO = 54,
916  LWS_CALLBACK_GS_EVENT = 55,
919  /****** add new things just above ---^ ******/
920 
921  LWS_CALLBACK_USER = 1000,
923 };
Definition: libwebsockets.h:684
+
Definition: libwebsockets.h:812
+ +
Definition: libwebsockets.h:810
+
Definition: libwebsockets.h:715
+
Definition: libwebsockets.h:661
+
Definition: libwebsockets.h:695
+
Definition: libwebsockets.h:836
+
Definition: libwebsockets.h:782
+
Definition: libwebsockets.h:675
+
Definition: libwebsockets.h:873
+ +
Definition: libwebsockets.h:862
+ +
Definition: libwebsockets.h:636
+
Definition: libwebsockets.h:814
+
Definition: libwebsockets.h:802
+
Definition: libwebsockets.h:633
+
Definition: libwebsockets.h:820
+
Definition: libwebsockets.h:626
+
Definition: libwebsockets.h:707
+
Definition: libwebsockets.h:805
+
Definition: libwebsockets.h:842
+
Definition: libwebsockets.h:682
+
Definition: libwebsockets.h:678
+
Definition: libwebsockets.h:578
+ +
Definition: libwebsockets.h:646
+
Definition: libwebsockets.h:680
+
Definition: libwebsockets.h:758
+
Definition: libwebsockets.h:644
+
Definition: libwebsockets.h:649
+ +
Definition: libwebsockets.h:582
+
Definition: libwebsockets.h:659
+
Definition: libwebsockets.h:921
+
Definition: libwebsockets.h:638
+
Definition: libwebsockets.h:640
+
Definition: libwebsockets.h:651
+
Definition: libwebsockets.h:850
diff --git a/doc/html/group__vhost-mounts.html b/doc/html/group__vhost-mounts.html index a0a9a19e..cbb184dc 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

-
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
+
1790  {
1791  LWSMPRO_HTTP = 0,
1792  LWSMPRO_HTTPS = 1,
1793  LWSMPRO_FILE = 2,
1794  LWSMPRO_CGI = 3,
1795  LWSMPRO_REDIR_HTTP = 4,
1796  LWSMPRO_REDIR_HTTPS = 5,
1797  LWSMPRO_CALLBACK = 6,
1798 };
Definition: libwebsockets.h:1794
+
Definition: libwebsockets.h:1792
+
Definition: libwebsockets.h:1793
+
Definition: libwebsockets.h:1795
+
Definition: libwebsockets.h:1796
+
Definition: libwebsockets.h:1791
+
Definition: libwebsockets.h:1797
diff --git a/doc/html/group__wsclose.html b/doc/html/group__wsclose.html index 91cb3c3d..14151576 100644 --- a/doc/html/group__wsclose.html +++ b/doc/html/group__wsclose.html @@ -156,19 +156,19 @@ Functions

1015 is a reserved value and MUST NOT be set as a status code in a Close control frame by an endpoint. It is designated for use in applications expecting a status code to indicate that the connection was closed due to a failure to perform a TLS handshake (e.g., the server certificate can't be verified).

-
461  {
462  LWS_CLOSE_STATUS_NOSTATUS = 0,
524  /****** add new things just above ---^ ******/
525 
526  LWS_CLOSE_STATUS_NOSTATUS_CONTEXT_DESTROY = 9999,
527 };
Definition: libwebsockets.h:490
-
Definition: libwebsockets.h:501
-
Definition: libwebsockets.h:517
-
Definition: libwebsockets.h:469
-
Definition: libwebsockets.h:495
-
Definition: libwebsockets.h:479
-
Definition: libwebsockets.h:484
-
Definition: libwebsockets.h:466
-
Definition: libwebsockets.h:505
-
Definition: libwebsockets.h:463
-
Definition: libwebsockets.h:472
-
Definition: libwebsockets.h:477
-
Definition: libwebsockets.h:513
+
467  {
468  LWS_CLOSE_STATUS_NOSTATUS = 0,
530  /****** add new things just above ---^ ******/
531 
532  LWS_CLOSE_STATUS_NOSTATUS_CONTEXT_DESTROY = 9999,
533 };
Definition: libwebsockets.h:496
+
Definition: libwebsockets.h:507
+
Definition: libwebsockets.h:523
+
Definition: libwebsockets.h:475
+
Definition: libwebsockets.h:501
+
Definition: libwebsockets.h:485
+
Definition: libwebsockets.h:490
+
Definition: libwebsockets.h:472
+
Definition: libwebsockets.h:511
+
Definition: libwebsockets.h:469
+
Definition: libwebsockets.h:478
+
Definition: libwebsockets.h:483
+
Definition: libwebsockets.h:519
diff --git a/doc/html/libwebsockets_8h_source.html b/doc/html/libwebsockets_8h_source.html index 16db21b8..3708aa65 100644 --- a/doc/html/libwebsockets_8h_source.html +++ b/doc/html/libwebsockets_8h_source.html @@ -71,404 +71,404 @@ $(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 << 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)
+Go to the documentation of this file.
1 /*
2  * libwebsockets - small server side websockets and web server implementation
3  *
4  * Copyright (C) 2010-2016 Andy Green <andy@warmcat.com>
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation:
9  * version 2.1 of the License.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19  * MA 02110-1301 USA
20  */
21 
24 #ifndef LIBWEBSOCKET_H_3060898B846849FF9F88F5DB59B5950C
25 #define LIBWEBSOCKET_H_3060898B846849FF9F88F5DB59B5950C
26 
27 #ifdef __cplusplus
28 #include <cstddef>
29 #include <cstdarg>
30 #ifdef MBED_OPERATORS
31 #include "mbed-drivers/mbed.h"
32 #include "sal-iface-eth/EthernetInterface.h"
33 #include "sockets/TCPListener.h"
34 #include "sal-stack-lwip/lwipv4_init.h"
35 
36 namespace {
37 }
38 using namespace mbed::Sockets::v0;
39 
40 
41 struct sockaddr_in;
42 struct lws;
43 
44 class lws_conn {
45  public:
46  lws_conn():
47  ts(NULL),
48  wsi(NULL),
49  writeable(1),
50  awaiting_on_writeable(0)
51  {
52  }
53 
54 public:
55  void set_wsi(struct lws *_wsi) { wsi = _wsi; }
56  int actual_onRX(Socket *s);
57  void onRX(Socket *s);
58  void onError(Socket *s, socket_error_t err);
59  void onDisconnect(TCPStream *s);
60  void onSent(Socket *s, uint16_t len);
61  void serialized_writeable(struct lws *wsi);
62 
63 public:
64  TCPStream *ts;
65 
66 public:
67  struct lws *wsi;
68  char writeable;
69  char awaiting_on_writeable;
70 };
71 
73 public:
75  srv(SOCKET_STACK_LWIP_IPV4)
76  {
77  srv.setOnError(TCPStream::ErrorHandler_t(this,
79  }
80 
81  void start(const uint16_t port);
83 protected:
84  void onRX(Socket *s);
85  void onError(Socket *s, socket_error_t err);
86  void onIncoming(TCPListener *s, void *impl);
87  void onDisconnect(TCPStream *s);
89 public:
90  TCPListener srv;
91 };
92 
93 #endif
94 
95 extern "C" {
96 #else
97 #include <stdarg.h>
98 #endif
99 
100 #ifdef MBED_OPERATORS
101 struct sockaddr_in;
102 #define LWS_POSIX 0
103 #else
104 #define LWS_POSIX 1
105 #endif
106 
107 #include "lws_config.h"
108 
109 #if defined(WIN32) || defined(_WIN32)
110 #ifndef WIN32_LEAN_AND_MEAN
111 #define WIN32_LEAN_AND_MEAN
112 #endif
113 
114 #include <winsock2.h>
115 #include <ws2tcpip.h>
116 #include <stddef.h>
117 #include <basetsd.h>
118 #ifndef _WIN32_WCE
119 #include <stdint.h>
120 #include <fcntl.h>
121 #else
122 #define _O_RDONLY 0x0000
123 #define O_RDONLY _O_RDONLY
124 #endif
125 
126 // Visual studio older than 2015 and WIN_CE has only _stricmp
127 #if (defined(_MSC_VER) && _MSC_VER < 1900) || defined(_WIN32_WCE)
128 #define strcasecmp _stricmp
129 #else
130 #define strcasecmp stricmp
131 #endif
132 #define getdtablesize() 30000
133 
134 #define LWS_INLINE __inline
135 #define LWS_VISIBLE
136 #define LWS_WARN_UNUSED_RESULT
137 #define LWS_WARN_DEPRECATED
138 
139 #ifdef LWS_DLL
140 #ifdef LWS_INTERNAL
141 #define LWS_EXTERN extern __declspec(dllexport)
142 #else
143 #define LWS_EXTERN extern __declspec(dllimport)
144 #endif
145 #else
146 #define LWS_EXTERN
147 #endif
148 
149 #define LWS_INVALID_FILE INVALID_HANDLE_VALUE
150 #define LWS_O_RDONLY _O_RDONLY
151 
152 #if !defined(_MSC_VER) || _MSC_VER < 1900 /* Visual Studio 2015 already defines this in <stdio.h> */
153 #define snprintf _snprintf
154 #endif
155 
156 #ifndef __func__
157 #define __func__ __FUNCTION__
158 #endif
159 
160 #else /* NOT WIN32 */
161 #include <unistd.h>
162 
163 #if defined(__NetBSD__) || defined(__FreeBSD__)
164 #include <netinet/in.h>
165 #endif
166 
167 #define LWS_INLINE inline
168 #define LWS_O_RDONLY O_RDONLY
169 
170 #ifndef MBED_OPERATORS
171 #include <poll.h>
172 #include <netdb.h>
173 #define LWS_INVALID_FILE -1
174 #else
175 #define getdtablesize() (20)
176 #define LWS_INVALID_FILE NULL
177 #endif
178 
179 #if defined(__GNUC__)
180 
181 /* warn_unused_result attribute only supported by GCC 3.4 or later */
182 #if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
183 #define LWS_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
184 #else
185 #define LWS_WARN_UNUSED_RESULT
186 #endif
187 
188 #define LWS_VISIBLE __attribute__((visibility("default")))
189 #define LWS_WARN_DEPRECATED __attribute__ ((deprecated))
190 #else
191 #define LWS_VISIBLE
192 #define LWS_WARN_UNUSED_RESULT
193 #define LWS_WARN_DEPRECATED
194 #endif
195 
196 #if defined(__ANDROID__)
197 #include <unistd.h>
198 #define getdtablesize() sysconf(_SC_OPEN_MAX)
199 #endif
200 
201 #endif
202 
203 #ifdef LWS_USE_LIBEV
204 #include <ev.h>
205 #endif /* LWS_USE_LIBEV */
206 #ifdef LWS_USE_LIBUV
207 #include <uv.h>
208 #endif /* LWS_USE_LIBUV */
209 
210 #ifndef LWS_EXTERN
211 #define LWS_EXTERN extern
212 #endif
213 
214 #ifdef _WIN32
215 #define random rand
216 #else
217 #include <sys/time.h>
218 #include <unistd.h>
219 #endif
220 
221 #ifdef LWS_OPENSSL_SUPPORT
222 
223 #ifdef USE_WOLFSSL
224 #ifdef USE_OLD_CYASSL
225 #include <cyassl/openssl/ssl.h>
226 #include <cyassl/error-ssl.h>
227 #else
228 #include <wolfssl/openssl/ssl.h>
229 #include <wolfssl/error-ssl.h>
230 #endif /* not USE_OLD_CYASSL */
231 #else
232 #if defined(LWS_USE_POLARSSL)
233 #include <polarssl/ssl.h>
235  x509_crt ca;
236  x509_crt certificate;
237  rsa_context key;
238 };
239 typedef struct lws_polarssl_context SSL_CTX;
240 typedef ssl_context SSL;
241 #else
242 #if defined(LWS_USE_MBEDTLS)
243 #include <mbedtls/ssl.h>
244 #else
245 #include <openssl/ssl.h>
246 #include <openssl/err.h>
247 #endif /* not USE_MBEDTLS */
248 #endif /* not USE_POLARSSL */
249 #endif /* not USE_WOLFSSL */
250 #endif
251 
252 
253 #define CONTEXT_PORT_NO_LISTEN -1
254 
265 
267 enum lws_log_levels {
268  LLL_ERR = 1 << 0,
269  LLL_WARN = 1 << 1,
270  LLL_NOTICE = 1 << 2,
271  LLL_INFO = 1 << 3,
272  LLL_DEBUG = 1 << 4,
273  LLL_PARSER = 1 << 5,
274  LLL_HEADER = 1 << 6,
275  LLL_EXT = 1 << 7,
276  LLL_CLIENT = 1 << 8,
277  LLL_LATENCY = 1 << 9,
278 
279  LLL_COUNT = 10 /* set to count of valid flags */
280 };
281 
282 LWS_VISIBLE LWS_EXTERN void _lws_log(int filter, const char *format, ...);
283 LWS_VISIBLE LWS_EXTERN void _lws_logv(int filter, const char *format, va_list vl);
293 LWS_VISIBLE LWS_EXTERN int
294 lwsl_timestamp(int level, char *p, int len);
295 
296 /* notice, warn and log are always compiled in */
297 #define lwsl_notice(...) _lws_log(LLL_NOTICE, __VA_ARGS__)
298 #define lwsl_warn(...) _lws_log(LLL_WARN, __VA_ARGS__)
299 #define lwsl_err(...) _lws_log(LLL_ERR, __VA_ARGS__)
300 /*
301  * weaker logging can be deselected at configure time using --disable-debug
302  * that gets rid of the overhead of checking while keeping _warn and _err
303  * active
304  */
305 #ifdef _DEBUG
306 
307 #define lwsl_info(...) _lws_log(LLL_INFO, __VA_ARGS__)
308 #define lwsl_debug(...) _lws_log(LLL_DEBUG, __VA_ARGS__)
309 #define lwsl_parser(...) _lws_log(LLL_PARSER, __VA_ARGS__)
310 #define lwsl_header(...) _lws_log(LLL_HEADER, __VA_ARGS__)
311 #define lwsl_ext(...) _lws_log(LLL_EXT, __VA_ARGS__)
312 #define lwsl_client(...) _lws_log(LLL_CLIENT, __VA_ARGS__)
313 #define lwsl_latency(...) _lws_log(LLL_LATENCY, __VA_ARGS__)
314 
320 LWS_VISIBLE LWS_EXTERN void lwsl_hexdump(void *buf, size_t len);
321 
322 #else /* no debug */
323 
324 #define lwsl_info(...) {}
325 #define lwsl_debug(...) {}
326 #define lwsl_parser(...) {}
327 #define lwsl_header(...) {}
328 #define lwsl_ext(...) {}
329 #define lwsl_client(...) {}
330 #define lwsl_latency(...) {}
331 #define lwsl_hexdump(a, b)
332 
333 #endif
334 
345 LWS_VISIBLE LWS_EXTERN void
346 lws_set_log_level(int level,
347  void (*log_emit_function)(int level, const char *line));
348 
358 LWS_VISIBLE LWS_EXTERN void
359 lwsl_emit_syslog(int level, const char *line);
360 
362 
363 
364 #include <stddef.h>
365 
366 #ifndef lws_container_of
367 #define lws_container_of(P,T,M) ((T *)((char *)(P) - offsetof(T, M)))
368 #endif
369 
370 
371 struct lws;
372 #ifndef ARRAY_SIZE
373 #define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
374 #endif
375 
376 /* api change list for user code to test against */
377 
378 #define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_ARG
379 
380 /* the struct lws_protocols has the id field present */
381 #define LWS_FEATURE_PROTOCOLS_HAS_ID_FIELD
382 
383 /* you can call lws_get_peer_write_allowance */
384 #define LWS_FEATURE_PROTOCOLS_HAS_PEER_WRITE_ALLOWANCE
385 
386 /* extra parameter introduced in 917f43ab821 */
387 #define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_LEN
388 
389 /* File operations stuff exists */
390 #define LWS_FEATURE_FOPS
391 
392 
393 #if defined(_WIN32)
394 typedef SOCKET lws_sockfd_type;
395 typedef HANDLE lws_filefd_type;
396 #define lws_sockfd_valid(sfd) (!!sfd)
397 struct lws_pollfd {
398  lws_sockfd_type fd;
399  SHORT events;
400  SHORT revents;
401 };
402 #define LWS_POLLHUP (FD_CLOSE)
403 #define LWS_POLLIN (FD_READ | FD_ACCEPT)
404 #define LWS_POLLOUT (FD_WRITE)
405 #else
406 
407 #if defined(MBED_OPERATORS)
408 /* it's a class lws_conn * */
409 typedef void * lws_sockfd_type;
410 typedef void * lws_filefd_type;
411 #define lws_sockfd_valid(sfd) (!!sfd)
412 struct pollfd {
413  lws_sockfd_type fd;
414  short events;
415  short revents;
416 };
417 #define POLLIN 0x0001
418 #define POLLPRI 0x0002
419 #define POLLOUT 0x0004
420 #define POLLERR 0x0008
421 #define POLLHUP 0x0010
422 #define POLLNVAL 0x0020
423 
424 struct lws;
425 
426 void * mbed3_create_tcp_stream_socket(void);
427 void mbed3_delete_tcp_stream_socket(void *sockfd);
428 void mbed3_tcp_stream_bind(void *sock, int port, struct lws *);
429 void mbed3_tcp_stream_accept(void *sock, struct lws *);
430 #else
431 typedef int lws_sockfd_type;
432 typedef int lws_filefd_type;
433 #define lws_sockfd_valid(sfd) (sfd >= 0)
434 #endif
435 
436 #define lws_pollfd pollfd
437 #define LWS_POLLHUP (POLLHUP|POLLERR)
438 #define LWS_POLLIN (POLLIN)
439 #define LWS_POLLOUT (POLLOUT)
440 #endif
441 
444 struct lws_pollargs {
445  lws_sockfd_type fd;
446  int events;
448 };
449 
450 struct lws_tokens;
451 struct lws_token_limits;
452 
460 
462 /*
463  * NOTE: These public enums are part of the abi. If you want to add one,
464  * add it at where specified so existing users are unaffected.
465  */
468  LWS_CLOSE_STATUS_NOSTATUS = 0,
530  /****** add new things just above ---^ ******/
531 
532  LWS_CLOSE_STATUS_NOSTATUS_CONTEXT_DESTROY = 9999,
533 };
534 
547 LWS_VISIBLE LWS_EXTERN void
548 lws_close_reason(struct lws *wsi, enum lws_close_status status,
549  unsigned char *buf, size_t len);
550 
552 
553 struct lws;
554 struct lws_context;
555 /* needed even with extensions disabled for create context */
556 struct lws_extension;
557 
569 
571 
572 /*
573  * NOTE: These public enums are part of the abi. If you want to add one,
574  * add it at where specified so existing users are unaffected.
575  */
819  /* external poll() management support */
882  LWS_CALLBACK_WS_EXT_DEFAULTS = 39,
885  LWS_CALLBACK_CGI = 40,
887  LWS_CALLBACK_CGI_TERMINATED = 41,
889  LWS_CALLBACK_CGI_STDIN_DATA = 42,
891  LWS_CALLBACK_CGI_STDIN_COMPLETED = 43,
893  LWS_CALLBACK_ESTABLISHED_CLIENT_HTTP = 44,
895  LWS_CALLBACK_CLOSED_CLIENT_HTTP = 45,
897  LWS_CALLBACK_RECEIVE_CLIENT_HTTP = 46,
899  LWS_CALLBACK_COMPLETED_CLIENT_HTTP = 47,
901  LWS_CALLBACK_RECEIVE_CLIENT_HTTP_READ = 48,
903  LWS_CALLBACK_HTTP_BIND_PROTOCOL = 49,
905  LWS_CALLBACK_HTTP_DROP_PROTOCOL = 50,
907  LWS_CALLBACK_CHECK_ACCESS_RIGHTS = 51,
909  LWS_CALLBACK_PROCESS_HTML = 52,
911  LWS_CALLBACK_ADD_HEADERS = 53,
913  LWS_CALLBACK_SESSION_INFO = 54,
916  LWS_CALLBACK_GS_EVENT = 55,
919  /****** add new things just above ---^ ******/
920 
923 };
924 
925 
926 
942 typedef int
943 lws_callback_function(struct lws *wsi, enum lws_callback_reasons reason,
944  void *user, void *in, size_t len);
946 
956 
958 /*
959  * NOTE: These public enums are part of the abi. If you want to add one,
960  * add it at where specified so existing users are unaffected.
961  */
962 enum lws_extension_callback_reasons {
963  LWS_EXT_CB_SERVER_CONTEXT_CONSTRUCT = 0,
964  LWS_EXT_CB_CLIENT_CONTEXT_CONSTRUCT = 1,
965  LWS_EXT_CB_SERVER_CONTEXT_DESTRUCT = 2,
966  LWS_EXT_CB_CLIENT_CONTEXT_DESTRUCT = 3,
967  LWS_EXT_CB_CONSTRUCT = 4,
968  LWS_EXT_CB_CLIENT_CONSTRUCT = 5,
969  LWS_EXT_CB_CHECK_OK_TO_REALLY_CLOSE = 6,
970  LWS_EXT_CB_CHECK_OK_TO_PROPOSE_EXTENSION = 7,
971  LWS_EXT_CB_DESTROY = 8,
972  LWS_EXT_CB_DESTROY_ANY_WSI_CLOSING = 9,
973  LWS_EXT_CB_ANY_WSI_ESTABLISHED = 10,
974  LWS_EXT_CB_PACKET_RX_PREPARSE = 11,
975  LWS_EXT_CB_PACKET_TX_PRESEND = 12,
976  LWS_EXT_CB_PACKET_TX_DO_SEND = 13,
977  LWS_EXT_CB_HANDSHAKE_REPLY_TX = 14,
978  LWS_EXT_CB_FLUSH_PENDING_TX = 15,
979  LWS_EXT_CB_EXTENDED_PAYLOAD_RX = 16,
980  LWS_EXT_CB_CAN_PROXY_CLIENT_CONNECTION = 17,
981  LWS_EXT_CB_1HZ = 18,
982  LWS_EXT_CB_REQUEST_ON_WRITEABLE = 19,
983  LWS_EXT_CB_IS_WRITEABLE = 20,
984  LWS_EXT_CB_PAYLOAD_TX = 21,
985  LWS_EXT_CB_PAYLOAD_RX = 22,
986  LWS_EXT_CB_OPTION_DEFAULT = 23,
987  LWS_EXT_CB_OPTION_SET = 24,
988  LWS_EXT_CB_OPTION_CONFIRM = 25,
989  LWS_EXT_CB_NAMED_OPTION_SET = 26,
990 
991  /****** add new things just above ---^ ******/
992 };
993 
1000  /* Add new things just above here ---^
1001  * This is part of the ABI, don't needlessly break compatibility */
1002 };
1003 
1009  const char *name;
1012  /* Add new things just above here ---^
1013  * This is part of the ABI, don't needlessly break compatibility */
1014 };
1015 
1018  const char *option_name;
1020  const char *start;
1021  int len;
1022 };
1023 
1084 typedef int
1085 lws_extension_callback_function(struct lws_context *context,
1086  const struct lws_extension *ext, struct lws *wsi,
1087  enum lws_extension_callback_reasons reason,
1088  void *user, void *in, size_t len);
1089 
1092  const char *name;
1094  const char *client_offer;
1096  /* Add new things just above here ---^
1097  * This is part of the ABI, don't needlessly break compatibility */
1098 };
1099 
1108 LWS_VISIBLE LWS_EXTERN int
1109 lws_set_extension_option(struct lws *wsi, const char *ext_name,
1110  const char *opt_name, const char *opt_val);
1111 
1112 #ifndef LWS_NO_EXTENSIONS
1113 /* lws_get_internal_extensions() - DEPRECATED
1114  *
1115  * \Deprecated There is no longer a set internal extensions table. The table is provided
1116  * by user code along with application-specific settings. See the test
1117  * client and server for how to do.
1118  */
1119 static LWS_INLINE LWS_WARN_DEPRECATED const struct lws_extension *
1120 lws_get_internal_extensions() { return NULL; }
1121 
1132 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
1133 lws_ext_parse_options(const struct lws_extension *ext, struct lws *wsi,
1134  void *ext_user, const struct lws_ext_options *opts,
1135  const char *o, int len);
1136 #endif
1137 
1150 LWS_EXTERN
1152  struct lws_context *context, const struct lws_extension *ext,
1153  struct lws *wsi, enum lws_extension_callback_reasons reason,
1154  void *user, void *in, size_t len);
1155 
1156 /*
1157  * The internal exts are part of the public abi
1158  * If we add more extensions, publish the callback here ------v
1159  */
1161 
1177 
1182  const char *name;
1203  unsigned int id;
1210  void *user;
1213  /* Add new things just above here ---^
1214  * This is part of the ABI, don't needlessly break compatibility */
1215 };
1216 
1217 struct lws_vhost;
1218 
1227 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
1228 lws_vhost_name_to_protocol(struct lws_vhost *vh, const char *name);
1229 
1239 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
1240 lws_get_protocol(struct lws *wsi);
1241 
1243 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
1244 lws_protocol_get(struct lws *wsi) LWS_WARN_DEPRECATED;
1245 
1256 LWS_VISIBLE LWS_EXTERN void *
1257 lws_protocol_vh_priv_zalloc(struct lws_vhost *vhost, const struct lws_protocols *prot,
1258  int size);
1259 
1269 LWS_VISIBLE LWS_EXTERN void *
1270 lws_protocol_vh_priv_get(struct lws_vhost *vhost, const struct lws_protocols *prot);
1271 
1280 LWS_VISIBLE LWS_EXTERN int
1281 lws_finalize_startup(struct lws_context *context);
1282 
1283 #ifdef LWS_WITH_PLUGINS
1284 
1285 /* PLUGINS implies LIBUV */
1286 
1287 #define LWS_PLUGIN_API_MAGIC 180
1288 
1291  unsigned int api_magic;
1292  const struct lws_protocols *protocols;
1294  const struct lws_extension *extensions;
1296 };
1297 
1298 typedef int (*lws_plugin_init_func)(struct lws_context *,
1299  struct lws_plugin_capability *);
1300 typedef int (*lws_plugin_destroy_func)(struct lws_context *);
1301 
1303 struct lws_plugin {
1304  struct lws_plugin *list;
1305 #if (UV_VERSION_MAJOR > 0)
1306  uv_lib_t lib;
1307 #else
1308  void *l;
1309 #endif
1310  char name[64];
1312 };
1313 
1314 #endif
1315 
1317 
1318 
1327 
1329 #define LWSGS_EMAIL_CONTENT_SIZE 16384
1330 
1332 /* SHA-1 binary and hexified versions */
1334 typedef struct { unsigned char bin[20]; } lwsgw_hash_bin;
1336 typedef struct { char id[41]; } lwsgw_hash;
1337 
1344 };
1345 
1348  char username[32];
1349  char email[100];
1350  char ip[72];
1351  unsigned int mask;
1353  char session[42];
1354 };
1355 
1360 };
1361 
1364  enum lws_gs_event event;
1365  const char *username;
1366  const char *email;
1367 };
1368 
1370 
1371 
1385 
1387 /*
1388  * NOTE: These public enums are part of the abi. If you want to add one,
1389  * add it at where specified so existing users are unaffected.
1390  */
1391 
1395  (1 << 12),
1402  (1 << 12),
1418  (1 << 12),
1423  (1 << 12),
1441  /****** add new things just above ---^ ******/
1442 };
1443 
1444 #define lws_check_opt(c, f) (((c) & (f)) == (f))
1445 
1456  int port;
1461  const char *iface;
1468  const struct lws_protocols *protocols;
1472  const struct lws_extension *extensions;
1480  const char *ssl_cert_filepath;
1490  const char *ssl_ca_filepath;
1492  const char *ssl_cipher_list;
1496  const char *http_proxy_address;
1499  unsigned int http_proxy_port;
1501  int gid;
1503  int uid;
1505  unsigned int options;
1507  void *user;
1510  int ka_time;
1520 #ifdef LWS_OPENSSL_SUPPORT
1526 #else /* maintain structure layout either way */
1528 #endif
1529 
1540  unsigned int count_threads;
1542  unsigned int fd_limit_per_thread;
1546  unsigned int timeout_secs;
1551  const char *ecdh_curve;
1553  const char *vhost_name;
1557  const char * const *plugin_dirs;
1566  const char *log_filepath;
1569  const struct lws_http_mount *mounts;
1571  const char *server_string;
1574  unsigned int pt_serv_buf_size;
1590  /* Add new things just above here ---^
1591  * This is part of the ABI, don't needlessly break compatibility
1592  *
1593  * The below is to ensure later library versions with new
1594  * members added above will see 0 (default) even if the app
1595  * was not built against the newer headers.
1596  */
1597 
1598  void *_unused[8];
1599 };
1600 
1635 LWS_VISIBLE LWS_EXTERN struct lws_context *
1637 
1646 LWS_VISIBLE LWS_EXTERN void
1647 lws_context_destroy(struct lws_context *context);
1648 
1666 LWS_VISIBLE LWS_EXTERN int
1667 lws_set_proxy(struct lws_vhost *vhost, const char *proxy);
1668 
1669 
1670 struct lws_vhost;
1671 
1681 LWS_EXTERN LWS_VISIBLE struct lws_vhost *
1682 lws_create_vhost(struct lws_context *context,
1683  struct lws_context_creation_info *info);
1684 
1699 LWS_VISIBLE LWS_EXTERN int
1700 lwsws_get_config_globals(struct lws_context_creation_info *info, const char *d,
1701  char **config_strings, int *len);
1702 
1718 LWS_VISIBLE LWS_EXTERN int
1719 lwsws_get_config_vhosts(struct lws_context *context,
1720  struct lws_context_creation_info *info, const char *d,
1721  char **config_strings, int *len);
1722 
1724 LWS_VISIBLE LWS_EXTERN struct lws_vhost *
1725 lws_vhost_get(struct lws *wsi) LWS_WARN_DEPRECATED;
1726 
1732 LWS_VISIBLE LWS_EXTERN struct lws_vhost *
1733 lws_get_vhost(struct lws *wsi);
1734 
1742 LWS_VISIBLE LWS_EXTERN int
1743 lws_json_dump_vhost(const struct lws_vhost *vh, char *buf, int len);
1744 
1752 LWS_VISIBLE LWS_EXTERN int
1753 lws_json_dump_context(const struct lws_context *context, char *buf, int len);
1754 
1764 LWS_VISIBLE LWS_EXTERN void *
1765 lws_context_user(struct lws_context *context);
1766 
1772 
1782  const char *name;
1783  const char *value;
1784 };
1785 
1798 };
1799 
1807  const char *mountpoint;
1809  const char *origin;
1811  const char *def;
1813  const char *protocol;
1829  unsigned int auth_mask;
1832  unsigned int cache_reusable:1;
1833  unsigned int cache_revalidate:1;
1834  unsigned int cache_intermediaries:1;
1836  unsigned char origin_protocol;
1837  unsigned char mountpoint_len;
1838 };
1841 
1847 
1855  LCCSCF_USE_SSL = (1 << 0),
1856  LCCSCF_ALLOW_SELFSIGNED = (1 << 1),
1857  LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK = (1 << 2)
1858 };
1859 
1864  struct lws_context *context;
1866  const char *address;
1868  int port;
1872  const char *path;
1874  const char *host;
1876  const char *origin;
1878  const char *protocol;
1882  void *userdata;
1886  const char *method;
1889  struct lws *parent_wsi;
1893  const char *uri_replace_from;
1896  const char *uri_replace_to;
1898  struct lws_vhost *vhost;
1900  struct lws **pwsi;
1912  /* Add new things just above here ---^
1913  * This is part of the ABI, don't needlessly break compatibility
1914  *
1915  * The below is to ensure later library versions with new
1916  * members added above will see 0 (default) even if the app
1917  * was not built against the newer headers.
1918  */
1919 
1920  void *_unused[4];
1921 };
1922 
1930 LWS_VISIBLE LWS_EXTERN struct lws *
1932 
1953 /* deprecated, use lws_client_connect_via_info() */
1954 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
1955 lws_client_connect(struct lws_context *clients, const char *address,
1956  int port, int ssl_connection, const char *path,
1957  const char *host, const char *origin, const char *protocol,
1958  int ietf_version_or_minus_one) LWS_WARN_DEPRECATED;
1959 /* deprecated, use lws_client_connect_via_info() */
1980 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
1981 lws_client_connect_extended(struct lws_context *clients, const char *address,
1982  int port, int ssl_connection, const char *path,
1983  const char *host, const char *origin,
1984  const char *protocol, int ietf_version_or_minus_one,
1985  void *userdata) LWS_WARN_DEPRECATED;
1986 
2012 LWS_VISIBLE LWS_EXTERN int
2014  struct lws_vhost *vhost);
2015 
2016 LWS_VISIBLE LWS_EXTERN int
2017 lws_http_client_read(struct lws *wsi, char **buf, int *len);
2019 
2027 
2060 LWS_VISIBLE LWS_EXTERN int
2061 lws_service(struct lws_context *context, int timeout_ms);
2062 
2074 LWS_VISIBLE LWS_EXTERN int
2075 lws_service_tsi(struct lws_context *context, int timeout_ms, int tsi);
2076 
2092 LWS_VISIBLE LWS_EXTERN void
2093 lws_cancel_service_pt(struct lws *wsi);
2094 
2106 LWS_VISIBLE LWS_EXTERN void
2107 lws_cancel_service(struct lws_context *context);
2108 
2131 LWS_VISIBLE LWS_EXTERN int
2132 lws_service_fd(struct lws_context *context, struct lws_pollfd *pollfd);
2133 
2143 LWS_VISIBLE LWS_EXTERN int
2144 lws_service_fd_tsi(struct lws_context *context, struct lws_pollfd *pollfd,
2145  int tsi);
2146 
2148 
2154 
2161 
2173 LWS_VISIBLE LWS_EXTERN const char *
2174 lws_get_mimetype(const char *file, const struct lws_http_mount *m);
2175 
2194 LWS_VISIBLE LWS_EXTERN int
2195 lws_serve_http_file(struct lws *wsi, const char *file, const char *content_type,
2196  const char *other_headers, int other_headers_len);
2197 LWS_VISIBLE LWS_EXTERN int
2198 lws_serve_http_file_fragment(struct lws *wsi);
2200 
2211 
2212 enum http_status {
2213  HTTP_STATUS_OK = 200,
2214  HTTP_STATUS_NO_CONTENT = 204,
2215 
2216  HTTP_STATUS_MOVED_PERMANENTLY = 301,
2217  HTTP_STATUS_FOUND = 302,
2218  HTTP_STATUS_SEE_OTHER = 303,
2219 
2220  HTTP_STATUS_BAD_REQUEST = 400,
2221  HTTP_STATUS_UNAUTHORIZED,
2222  HTTP_STATUS_PAYMENT_REQUIRED,
2223  HTTP_STATUS_FORBIDDEN,
2224  HTTP_STATUS_NOT_FOUND,
2225  HTTP_STATUS_METHOD_NOT_ALLOWED,
2226  HTTP_STATUS_NOT_ACCEPTABLE,
2227  HTTP_STATUS_PROXY_AUTH_REQUIRED,
2228  HTTP_STATUS_REQUEST_TIMEOUT,
2229  HTTP_STATUS_CONFLICT,
2230  HTTP_STATUS_GONE,
2231  HTTP_STATUS_LENGTH_REQUIRED,
2232  HTTP_STATUS_PRECONDITION_FAILED,
2233  HTTP_STATUS_REQ_ENTITY_TOO_LARGE,
2234  HTTP_STATUS_REQ_URI_TOO_LONG,
2235  HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE,
2236  HTTP_STATUS_REQ_RANGE_NOT_SATISFIABLE,
2237  HTTP_STATUS_EXPECTATION_FAILED,
2238 
2239  HTTP_STATUS_INTERNAL_SERVER_ERROR = 500,
2240  HTTP_STATUS_NOT_IMPLEMENTED,
2241  HTTP_STATUS_BAD_GATEWAY,
2242  HTTP_STATUS_SERVICE_UNAVAILABLE,
2243  HTTP_STATUS_GATEWAY_TIMEOUT,
2244  HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED,
2245 };
2246 
2248  char *p;
2249  int len;
2250  int max_len;
2251  int final;
2252 };
2253 
2254 typedef const char *(*lws_process_html_state_cb)(void *data, int index);
2255 
2257  char *start;
2258  char swallow[16];
2259  int pos;
2260  void *data;
2261  const char * const *vars;
2264  lws_process_html_state_cb replace;
2265 };
2266 
2271 LWS_VISIBLE LWS_EXTERN int
2273  struct lws_process_html_state *s);
2275 
2308 
2316 struct lws_tokens {
2317  char *token;
2319 };
2320 
2321 /* enum lws_token_indexes
2322  * these have to be kept in sync with lextable.h / minilex.c
2323  *
2324  * NOTE: These public enums are part of the abi. If you want to add one,
2325  * add it at where specified so existing users are unaffected.
2326  */
2327 enum lws_token_indexes {
2328  WSI_TOKEN_GET_URI = 0,
2329  WSI_TOKEN_POST_URI = 1,
2330  WSI_TOKEN_OPTIONS_URI = 2,
2331  WSI_TOKEN_HOST = 3,
2332  WSI_TOKEN_CONNECTION = 4,
2333  WSI_TOKEN_UPGRADE = 5,
2334  WSI_TOKEN_ORIGIN = 6,
2335  WSI_TOKEN_DRAFT = 7,
2336  WSI_TOKEN_CHALLENGE = 8,
2337  WSI_TOKEN_EXTENSIONS = 9,
2338  WSI_TOKEN_KEY1 = 10,
2339  WSI_TOKEN_KEY2 = 11,
2340  WSI_TOKEN_PROTOCOL = 12,
2341  WSI_TOKEN_ACCEPT = 13,
2342  WSI_TOKEN_NONCE = 14,
2343  WSI_TOKEN_HTTP = 15,
2344  WSI_TOKEN_HTTP2_SETTINGS = 16,
2345  WSI_TOKEN_HTTP_ACCEPT = 17,
2346  WSI_TOKEN_HTTP_AC_REQUEST_HEADERS = 18,
2347  WSI_TOKEN_HTTP_IF_MODIFIED_SINCE = 19,
2348  WSI_TOKEN_HTTP_IF_NONE_MATCH = 20,
2349  WSI_TOKEN_HTTP_ACCEPT_ENCODING = 21,
2350  WSI_TOKEN_HTTP_ACCEPT_LANGUAGE = 22,
2351  WSI_TOKEN_HTTP_PRAGMA = 23,
2352  WSI_TOKEN_HTTP_CACHE_CONTROL = 24,
2353  WSI_TOKEN_HTTP_AUTHORIZATION = 25,
2354  WSI_TOKEN_HTTP_COOKIE = 26,
2355  WSI_TOKEN_HTTP_CONTENT_LENGTH = 27,
2356  WSI_TOKEN_HTTP_CONTENT_TYPE = 28,
2357  WSI_TOKEN_HTTP_DATE = 29,
2358  WSI_TOKEN_HTTP_RANGE = 30,
2359  WSI_TOKEN_HTTP_REFERER = 31,
2360  WSI_TOKEN_KEY = 32,
2361  WSI_TOKEN_VERSION = 33,
2362  WSI_TOKEN_SWORIGIN = 34,
2363 
2364  WSI_TOKEN_HTTP_COLON_AUTHORITY = 35,
2365  WSI_TOKEN_HTTP_COLON_METHOD = 36,
2366  WSI_TOKEN_HTTP_COLON_PATH = 37,
2367  WSI_TOKEN_HTTP_COLON_SCHEME = 38,
2368  WSI_TOKEN_HTTP_COLON_STATUS = 39,
2369 
2370  WSI_TOKEN_HTTP_ACCEPT_CHARSET = 40,
2371  WSI_TOKEN_HTTP_ACCEPT_RANGES = 41,
2372  WSI_TOKEN_HTTP_ACCESS_CONTROL_ALLOW_ORIGIN = 42,
2373  WSI_TOKEN_HTTP_AGE = 43,
2374  WSI_TOKEN_HTTP_ALLOW = 44,
2375  WSI_TOKEN_HTTP_CONTENT_DISPOSITION = 45,
2376  WSI_TOKEN_HTTP_CONTENT_ENCODING = 46,
2377  WSI_TOKEN_HTTP_CONTENT_LANGUAGE = 47,
2378  WSI_TOKEN_HTTP_CONTENT_LOCATION = 48,
2379  WSI_TOKEN_HTTP_CONTENT_RANGE = 49,
2380  WSI_TOKEN_HTTP_ETAG = 50,
2381  WSI_TOKEN_HTTP_EXPECT = 51,
2382  WSI_TOKEN_HTTP_EXPIRES = 52,
2383  WSI_TOKEN_HTTP_FROM = 53,
2384  WSI_TOKEN_HTTP_IF_MATCH = 54,
2385  WSI_TOKEN_HTTP_IF_RANGE = 55,
2386  WSI_TOKEN_HTTP_IF_UNMODIFIED_SINCE = 56,
2387  WSI_TOKEN_HTTP_LAST_MODIFIED = 57,
2388  WSI_TOKEN_HTTP_LINK = 58,
2389  WSI_TOKEN_HTTP_LOCATION = 59,
2390  WSI_TOKEN_HTTP_MAX_FORWARDS = 60,
2391  WSI_TOKEN_HTTP_PROXY_AUTHENTICATE = 61,
2392  WSI_TOKEN_HTTP_PROXY_AUTHORIZATION = 62,
2393  WSI_TOKEN_HTTP_REFRESH = 63,
2394  WSI_TOKEN_HTTP_RETRY_AFTER = 64,
2395  WSI_TOKEN_HTTP_SERVER = 65,
2396  WSI_TOKEN_HTTP_SET_COOKIE = 66,
2397  WSI_TOKEN_HTTP_STRICT_TRANSPORT_SECURITY = 67,
2398  WSI_TOKEN_HTTP_TRANSFER_ENCODING = 68,
2399  WSI_TOKEN_HTTP_USER_AGENT = 69,
2400  WSI_TOKEN_HTTP_VARY = 70,
2401  WSI_TOKEN_HTTP_VIA = 71,
2402  WSI_TOKEN_HTTP_WWW_AUTHENTICATE = 72,
2403 
2404  WSI_TOKEN_PATCH_URI = 73,
2405  WSI_TOKEN_PUT_URI = 74,
2406  WSI_TOKEN_DELETE_URI = 75,
2407 
2408  WSI_TOKEN_HTTP_URI_ARGS = 76,
2409  WSI_TOKEN_PROXY = 77,
2410  WSI_TOKEN_HTTP_X_REAL_IP = 78,
2411  WSI_TOKEN_HTTP1_0 = 79,
2412 
2413  /****** add new things just above ---^ ******/
2414 
2415  /* use token storage to stash these internally, not for
2416  * user use */
2417 
2418  _WSI_TOKEN_CLIENT_SENT_PROTOCOLS,
2419  _WSI_TOKEN_CLIENT_PEER_ADDRESS,
2420  _WSI_TOKEN_CLIENT_URI,
2421  _WSI_TOKEN_CLIENT_HOST,
2422  _WSI_TOKEN_CLIENT_ORIGIN,
2423  _WSI_TOKEN_CLIENT_METHOD,
2424 
2425  /* always last real token index*/
2426  WSI_TOKEN_COUNT,
2427 
2428  /* parser state additions, no storage associated */
2429  WSI_TOKEN_NAME_PART,
2430  WSI_TOKEN_SKIPPING,
2431  WSI_TOKEN_SKIPPING_SAW_CR,
2432  WSI_PARSING_COMPLETE,
2433  WSI_INIT_TOKEN_MUXURL,
2434 };
2435 
2437  unsigned short token_limit[WSI_TOKEN_COUNT];
2438 };
2439 
2445 LWS_VISIBLE LWS_EXTERN const unsigned char *
2446 lws_token_to_string(enum lws_token_indexes token);
2447 
2448 
2457 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
2458 lws_hdr_total_length(struct lws *wsi, enum lws_token_indexes h);
2459 
2469 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
2470 lws_hdr_fragment_length(struct lws *wsi, enum lws_token_indexes h, int frag_idx);
2471 
2485 LWS_VISIBLE LWS_EXTERN int
2486 lws_hdr_copy(struct lws *wsi, char *dest, int len, enum lws_token_indexes h);
2487 
2505 LWS_VISIBLE LWS_EXTERN int
2506 lws_hdr_copy_fragment(struct lws *wsi, char *dest, int len,
2507  enum lws_token_indexes h, int frag_idx);
2508 
2519 LWS_VISIBLE LWS_EXTERN const char *
2520 lws_get_urlarg_by_name(struct lws *wsi, const char *name, char *buf, int len);
2522 
2537 
2548 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
2549 lws_add_http_header_status(struct lws *wsi,
2550  unsigned int code, unsigned char **p,
2551  unsigned char *end);
2564 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
2565 lws_add_http_header_by_name(struct lws *wsi, const unsigned char *name,
2566  const unsigned char *value, int length,
2567  unsigned char **p, unsigned char *end);
2581 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
2582 lws_add_http_header_by_token(struct lws *wsi, enum lws_token_indexes token,
2583  const unsigned char *value, int length,
2584  unsigned char **p, unsigned char *end);
2595 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
2596 lws_add_http_header_content_length(struct lws *wsi,
2597  unsigned long content_length,
2598  unsigned char **p, unsigned char *end);
2608 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
2609 lws_finalize_http_header(struct lws *wsi, unsigned char **p,
2610  unsigned char *end);
2612 
2631 
2641 };
2642 
2656 typedef int (*lws_spa_fileupload_cb)(void *data, const char *name,
2657  const char *filename, char *buf, int len,
2658  enum lws_spa_fileupload_states state);
2659 
2662 struct lws_spa;
2663 
2682 LWS_VISIBLE LWS_EXTERN struct lws_spa *
2683 lws_spa_create(struct lws *wsi, const char * const *param_names,
2684  int count_params, int max_storage, lws_spa_fileupload_cb opt_cb,
2685  void *opt_data);
2686 
2694 LWS_VISIBLE LWS_EXTERN int
2695 lws_spa_process(struct lws_spa *spa, const char *in, int len);
2696 
2702 LWS_VISIBLE LWS_EXTERN int
2703 lws_spa_finalize(struct lws_spa *spa);
2704 
2711 LWS_VISIBLE LWS_EXTERN int
2712 lws_spa_get_length(struct lws_spa *spa, int n);
2713 
2719 LWS_VISIBLE LWS_EXTERN const char *
2720 lws_spa_get_string(struct lws_spa *spa, int n);
2721 
2727 LWS_VISIBLE LWS_EXTERN int
2728 lws_spa_destroy(struct lws_spa *spa);
2730 
2741 
2752 LWS_VISIBLE LWS_EXTERN const char *
2753 lws_urlencode(char *escaped, const char *string, int len);
2754 
2755 /*
2756  * URLDECODE 1 / 2
2757  *
2758  * This simple urldecode only operates until the first '\0' and requires the
2759  * data to exist all at once
2760  */
2773 LWS_VISIBLE LWS_EXTERN int
2774 lws_urldecode(char *string, const char *escaped, int len);
2776 
2785 LWS_VISIBLE LWS_EXTERN int
2786 lws_return_http_status(struct lws *wsi, unsigned int code,
2787  const char *html_body);
2788 
2799 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
2800 lws_http_redirect(struct lws *wsi, int code, const unsigned char *loc, int len,
2801  unsigned char **p, unsigned char *end);
2802 
2811 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
2812 lws_http_transaction_completed(struct lws *wsi);
2814 
2822 
2833 LWS_VISIBLE LWS_EXTERN const char *
2834 lws_sql_purify(char *escaped, const char *string, int len);
2835 
2846 LWS_VISIBLE LWS_EXTERN const char *
2847 lws_json_purify(char *escaped, const char *string, int len);
2849 
2856 
2858 #ifdef LWS_USE_LIBEV
2859 typedef void (lws_ev_signal_cb_t)(EV_P_ struct ev_signal *w, int revents);
2860 
2861 LWS_VISIBLE LWS_EXTERN int
2862 lws_ev_sigint_cfg(struct lws_context *context, int use_ev_sigint,
2863  lws_ev_signal_cb_t *cb);
2864 
2865 LWS_VISIBLE LWS_EXTERN int
2866 lws_ev_initloop(struct lws_context *context, struct ev_loop *loop, int tsi);
2867 
2868 LWS_VISIBLE LWS_EXTERN void
2869 lws_ev_sigint_cb(struct ev_loop *loop, struct ev_signal *watcher, int revents);
2870 #endif /* LWS_USE_LIBEV */
2871 
2873 
2880 #ifdef LWS_USE_LIBUV
2882 LWS_VISIBLE LWS_EXTERN int
2883 lws_uv_sigint_cfg(struct lws_context *context, int use_uv_sigint,
2884  uv_signal_cb cb);
2885 
2886 LWS_VISIBLE LWS_EXTERN void
2887 lws_libuv_run(const struct lws_context *context, int tsi);
2888 
2889 LWS_VISIBLE LWS_EXTERN void
2890 lws_libuv_stop(struct lws_context *context);
2891 
2892 LWS_VISIBLE LWS_EXTERN int
2893 lws_uv_initloop(struct lws_context *context, uv_loop_t *loop, int tsi);
2894 
2895 LWS_VISIBLE LWS_EXTERN uv_loop_t *
2896 lws_uv_getloop(struct lws_context *context, int tsi);
2897 
2898 LWS_VISIBLE LWS_EXTERN void
2899 lws_uv_sigint_cb(uv_signal_t *watcher, int signum);
2900 #endif /* LWS_USE_LIBUV */
2901 
2908 
2909 /*
2910  * NOTE: These public enums are part of the abi. If you want to add one,
2911  * add it at where specified so existing users are unaffected.
2912  */
2913 enum pending_timeout {
2914  NO_PENDING_TIMEOUT = 0,
2915  PENDING_TIMEOUT_AWAITING_PROXY_RESPONSE = 1,
2916  PENDING_TIMEOUT_AWAITING_CONNECT_RESPONSE = 2,
2917  PENDING_TIMEOUT_ESTABLISH_WITH_SERVER = 3,
2918  PENDING_TIMEOUT_AWAITING_SERVER_RESPONSE = 4,
2919  PENDING_TIMEOUT_AWAITING_PING = 5,
2920  PENDING_TIMEOUT_CLOSE_ACK = 6,
2921  PENDING_TIMEOUT_AWAITING_EXTENSION_CONNECT_RESPONSE = 7,
2922  PENDING_TIMEOUT_SENT_CLIENT_HANDSHAKE = 8,
2923  PENDING_TIMEOUT_SSL_ACCEPT = 9,
2924  PENDING_TIMEOUT_HTTP_CONTENT = 10,
2925  PENDING_TIMEOUT_AWAITING_CLIENT_HS_SEND = 11,
2926  PENDING_FLUSH_STORED_SEND_BEFORE_CLOSE = 12,
2927  PENDING_TIMEOUT_SHUTDOWN_FLUSH = 13,
2928  PENDING_TIMEOUT_CGI = 14,
2929  PENDING_TIMEOUT_HTTP_KEEPALIVE_IDLE = 15,
2930 
2931  /****** add new things just above ---^ ******/
2932 };
2933 
2943 LWS_VISIBLE LWS_EXTERN void
2944 lws_set_timeout(struct lws *wsi, enum pending_timeout reason, int secs);
2946 
2952 #if !defined(LWS_SIZEOFPTR)
2953 #define LWS_SIZEOFPTR (sizeof (void *))
2954 #endif
2955 #if !defined(u_int64_t)
2956 #define u_int64_t unsigned long long
2957 #endif
2958 
2959 #if defined(__x86_64__)
2960 #define _LWS_PAD_SIZE 16 /* Intel recommended for best performance */
2961 #else
2962 #define _LWS_PAD_SIZE LWS_SIZEOFPTR /* Size of a pointer on the target arch */
2963 #endif
2964 #define _LWS_PAD(n) (((n) % _LWS_PAD_SIZE) ? \
2965  ((n) + (_LWS_PAD_SIZE - ((n) % _LWS_PAD_SIZE))) : (n))
2966 #define LWS_PRE _LWS_PAD(4 + 10)
2967 /* used prior to 1.7 and retained for backward compatibility */
2968 #define LWS_SEND_BUFFER_PRE_PADDING LWS_PRE
2969 #define LWS_SEND_BUFFER_POST_PADDING 0
2970 
2971 /*
2972  * NOTE: These public enums are part of the abi. If you want to add one,
2973  * add it at where specified so existing users are unaffected.
2974  */
2989  /* LWS_WRITE_CLOSE is handled by lws_close_reason() */
2990  LWS_WRITE_PING = 5,
2991  LWS_WRITE_PONG = 6,
2992 
2993  /* Same as write_http but we know this write ends the transaction */
2994  LWS_WRITE_HTTP_FINAL = 7,
2995 
2996  /* HTTP2 */
2997 
3005  /****** add new things just above ---^ ******/
3006 
3007  /* flags */
3008 
3016 };
3017 
3018 
3090 LWS_VISIBLE LWS_EXTERN int
3091 lws_write(struct lws *wsi, unsigned char *buf, size_t len,
3092  enum lws_write_protocol protocol);
3093 
3094 /* helper for case where buffer may be const */
3095 #define lws_write_http(wsi, buf, len) \
3096  lws_write(wsi, (unsigned char *)(buf), len, LWS_WRITE_HTTP)
3097 
3099 
3118 
3131 LWS_VISIBLE LWS_EXTERN int
3132 lws_callback_on_writable(struct lws *wsi);
3133 
3147 LWS_VISIBLE LWS_EXTERN int
3148 lws_callback_on_writable_all_protocol(const struct lws_context *context,
3149  const struct lws_protocols *protocol);
3150 
3164 LWS_VISIBLE LWS_EXTERN int
3165 lws_callback_on_writable_all_protocol_vhost(const struct lws_vhost *vhost,
3166  const struct lws_protocols *protocol);
3167 
3180 LWS_VISIBLE LWS_EXTERN int
3181 lws_callback_all_protocol(struct lws_context *context,
3182  const struct lws_protocols *protocol, int reason);
3183 
3196 LWS_VISIBLE LWS_EXTERN int
3197 lws_callback_all_protocol_vhost(struct lws_vhost *vh,
3198  const struct lws_protocols *protocol, int reason);
3199 
3213 LWS_VISIBLE LWS_EXTERN int
3214 lws_callback_vhost_protocols(struct lws *wsi, int reason, void *in, int len);
3215 
3223 LWS_VISIBLE LWS_EXTERN int
3224 lws_get_socket_fd(struct lws *wsi);
3225 
3247 LWS_VISIBLE LWS_EXTERN size_t
3248 lws_get_peer_write_allowance(struct lws *wsi);
3250 
3261 LWS_VISIBLE LWS_EXTERN int
3262 lws_rx_flow_control(struct lws *wsi, int enable);
3263 
3273 LWS_VISIBLE LWS_EXTERN void
3274 lws_rx_flow_allow_all_protocol(const struct lws_context *context,
3275  const struct lws_protocols *protocol);
3276 
3293 LWS_VISIBLE LWS_EXTERN size_t
3294 lws_remaining_packet_payload(struct lws *wsi);
3295 
3296 
3305 
3318 LWS_VISIBLE LWS_EXTERN struct lws *
3319 lws_adopt_socket(struct lws_context *context, lws_sockfd_type accept_fd);
3342 LWS_VISIBLE LWS_EXTERN struct lws *
3343 lws_adopt_socket_readbuf(struct lws_context *context, lws_sockfd_type accept_fd,
3344  const char *readbuf, size_t len);
3346 
3352 
3363 LWS_VISIBLE LWS_EXTERN const char * LWS_WARN_UNUSED_RESULT
3364 lws_canonical_hostname(struct lws_context *context);
3365 
3380 LWS_VISIBLE LWS_EXTERN void
3381 lws_get_peer_addresses(struct lws *wsi, lws_sockfd_type fd, char *name,
3382  int name_len, char *rip, int rip_len);
3383 
3394 LWS_VISIBLE LWS_EXTERN const char *
3395 lws_get_peer_simple(struct lws *wsi, char *name, int namelen);
3396 
3408 LWS_VISIBLE LWS_EXTERN int
3409 lws_interface_to_sa(int ipv6, const char *ifname, struct sockaddr_in *addr,
3410  size_t addrlen);
3412 
3418 
3431 LWS_VISIBLE LWS_EXTERN int
3432 lws_get_random(struct lws_context *context, void *buf, int len);
3440 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
3441 lws_daemonize(const char *_lock_path);
3447 LWS_VISIBLE LWS_EXTERN const char * LWS_WARN_UNUSED_RESULT
3449 
3456 LWS_VISIBLE LWS_EXTERN void *
3457 lws_wsi_user(struct lws *wsi);
3458 
3470 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
3471 lws_parse_uri(char *p, const char **prot, const char **ads, int *port,
3472  const char **path);
3473 
3477 LWS_VISIBLE LWS_EXTERN unsigned long
3478 lws_now_secs(void);
3479 
3489 LWS_VISIBLE LWS_EXTERN struct lws_context * LWS_WARN_UNUSED_RESULT
3490 lws_get_context(const struct lws *wsi);
3491 
3501 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
3502 lws_get_count_threads(struct lws_context *context);
3503 
3511 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
3512 lws_get_parent(const struct lws *wsi);
3513 
3520 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
3521 lws_get_child(const struct lws *wsi);
3522 
3523 
3524 /*
3525  * \deprecated DEPRECATED Note: this is not normally needed as a user api.
3526  * It's provided in case it is
3527  * useful when integrating with other app poll loop service code.
3528  */
3529 LWS_VISIBLE LWS_EXTERN int
3530 lws_read(struct lws *wsi, unsigned char *buf, size_t len);
3531 
3539 LWS_VISIBLE LWS_EXTERN void
3540 lws_set_allocator(void *(*realloc)(void *ptr, size_t size));
3542 
3548 
3555 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
3556 lws_send_pipe_choked(struct lws *wsi);
3557 
3562 LWS_VISIBLE LWS_EXTERN int
3563 lws_is_final_fragment(struct lws *wsi);
3564 
3569 LWS_VISIBLE LWS_EXTERN unsigned char
3570 lws_get_reserved_bits(struct lws *wsi);
3571 
3588 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
3589 lws_partial_buffered(struct lws *wsi);
3590 
3600 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
3601 lws_frame_is_binary(struct lws *wsi);
3602 
3611 LWS_VISIBLE LWS_EXTERN int
3612 lws_is_ssl(struct lws *wsi);
3617 LWS_VISIBLE LWS_EXTERN int
3618 lws_is_cgi(struct lws *wsi);
3620 
3621 
3627 #ifdef LWS_SHA1_USE_OPENSSL_NAME
3629 #define lws_SHA1 SHA1
3630 #else
3631 
3640 LWS_VISIBLE LWS_EXTERN unsigned char *
3641 lws_SHA1(const unsigned char *d, size_t n, unsigned char *md);
3642 #endif
3643 
3653 LWS_VISIBLE LWS_EXTERN int
3654 lws_b64_encode_string(const char *in, int in_len, char *out, int out_size);
3664 LWS_VISIBLE LWS_EXTERN int
3665 lws_b64_decode_string(const char *in, char *out, int out_size);
3667 
3668 
3678 #ifdef LWS_WITH_CGI
3679 enum lws_enum_stdinouterr {
3680  LWS_STDIN = 0,
3681  LWS_STDOUT = 1,
3682  LWS_STDERR = 2,
3683 };
3684 
3685 enum lws_cgi_hdr_state {
3686  LCHS_HEADER,
3687  LCHS_CR1,
3688  LCHS_LF1,
3689  LCHS_CR2,
3690  LCHS_LF2,
3691  LHCS_PAYLOAD,
3692  LCHS_SINGLE_0A,
3693 };
3694 
3696  struct lws **stdwsi;
3697  enum lws_enum_stdinouterr ch;
3698  unsigned char *data;
3699  enum lws_cgi_hdr_state hdr_state;
3700  int len;
3701 };
3702 
3703 
3713 LWS_VISIBLE LWS_EXTERN int
3714 lws_cgi(struct lws *wsi, const char * const *exec_array,
3715  int script_uri_path_len, int timeout_secs,
3716  const struct lws_protocol_vhost_options *mp_cgienv);
3717 
3723 LWS_VISIBLE LWS_EXTERN int
3724 lws_cgi_write_split_stdout_headers(struct lws *wsi);
3725 
3731 LWS_VISIBLE LWS_EXTERN int
3732 lws_cgi_kill(struct lws *wsi);
3733 #endif
3734 
3736 
3753 
3760  lws_filefd_type (*open)(struct lws *wsi, const char *filename,
3761  unsigned long *filelen, int flags);
3765  int (*close)(struct lws *wsi, lws_filefd_type fd);
3767  unsigned long (*seek_cur)(struct lws *wsi, lws_filefd_type fd,
3768  long offset_from_cur_pos);
3770  int (*read)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
3771  unsigned char *buf, unsigned long len);
3773  int (*write)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
3774  unsigned char *buf, unsigned long len);
3777  /* Add new things just above here ---^
3778  * This is part of the ABI, don't needlessly break compatibility */
3779 };
3780 
3786 LWS_VISIBLE LWS_EXTERN struct lws_plat_file_ops * LWS_WARN_UNUSED_RESULT
3787 lws_get_fops(struct lws_context *context);
3788 
3797 static LWS_INLINE lws_filefd_type LWS_WARN_UNUSED_RESULT
3798 lws_plat_file_open(struct lws *wsi, const char *filename,
3799  unsigned long *filelen, int flags)
3800 {
3801  return lws_get_fops(lws_get_context(wsi))->open(wsi, filename,
3802  filelen, flags);
3803 }
3804 
3811 static LWS_INLINE int
3812 lws_plat_file_close(struct lws *wsi, lws_filefd_type fd)
3813 {
3814  return lws_get_fops(lws_get_context(wsi))->close(wsi, fd);
3815 }
3816 
3824 static LWS_INLINE unsigned long
3825 lws_plat_file_seek_cur(struct lws *wsi, lws_filefd_type fd, long offset)
3826 {
3827  return lws_get_fops(lws_get_context(wsi))->seek_cur(wsi, fd, offset);
3828 }
3838 static LWS_INLINE int LWS_WARN_UNUSED_RESULT
3839 lws_plat_file_read(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))->read(wsi, fd, amount, buf,
3843  len);
3844 }
3854 static LWS_INLINE int LWS_WARN_UNUSED_RESULT
3855 lws_plat_file_write(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
3856  unsigned char *buf, unsigned long len)
3857 {
3858  return lws_get_fops(lws_get_context(wsi))->write(wsi, fd, amount, buf,
3859  len);
3860 }
3862 
3894 #ifdef LWS_WITH_SMTP
3895 
3907 };
3908 
3910 struct lws_email {
3911  void *data;
3913  uv_loop_t *loop;
3916  char email_smtp_ip[32];
3917  char email_helo[32];
3918  char email_from[100];
3919  char email_to[100];
3921  unsigned int max_content_size;
3924  /* Fill all the callbacks before init */
3925 
3926  int (*on_next)(struct lws_email *email);
3931  int (*on_sent)(struct lws_email *email);
3936  int (*on_get_body)(struct lws_email *email, char *buf, int len);
3942  /* private things */
3943  uv_timer_t timeout_email;
3945  uv_connect_t email_connect_req;
3946  uv_tcp_t email_client;
3948  char email_buf[256];
3949  char *content;
3950 };
3951 
3961 LWS_VISIBLE LWS_EXTERN int
3962 lws_email_init(struct lws_email *email, uv_loop_t *loop, int max_content);
3963 
3972 LWS_VISIBLE LWS_EXTERN void
3973 lws_email_check(struct lws_email *email);
3981 LWS_VISIBLE LWS_EXTERN void
3982 lws_email_destroy(struct lws_email *email);
3983 
3984 #endif
3985 
3986 
3987 #ifdef __cplusplus
3988 }
3989 #endif
3990 
3991 #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:3689
-
size_t rx_buffer_size
Definition: libwebsockets.h:1188
+
Definition: libwebsockets.h:3695
+
size_t rx_buffer_size
Definition: libwebsockets.h:1194
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
-
Definition: libwebsockets.h:678
-
Definition: libwebsockets.h:806
+
Definition: libwebsockets.h:684
+
Definition: libwebsockets.h:812
LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_daemonize(const char *_lock_path)
-
Definition: libwebsockets.h:1788
-
Definition: libwebsockets.h:2980
-
Definition: libwebsockets.h:3894
+
Definition: libwebsockets.h:1794
+
Definition: libwebsockets.h:2986
+
Definition: libwebsockets.h:3900
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: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
+
unsigned int auth_mask
Definition: libwebsockets.h:1829
+
Definition: libwebsockets.h:3009
+
void * data
Definition: libwebsockets.h:3911
+
const char * uri_replace_from
Definition: libwebsockets.h:1893
+
int(* write)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount, unsigned char *buf, unsigned long len)
Definition: libwebsockets.h:3773
+
lws_callback_reasons
Definition: libwebsockets.h:577
LWS_VISIBLE LWS_EXTERN int lws_hdr_copy_fragment(struct lws *wsi, char *dest, int len, enum lws_token_indexes h, int frag_idx)
- -
lwsgs_auth_bits
Definition: libwebsockets.h:1333
+ +
lwsgs_auth_bits
Definition: libwebsockets.h:1339
LWS_VISIBLE LWS_EXTERN void lws_close_reason(struct lws *wsi, enum lws_close_status status, unsigned char *buf, size_t len)
LWS_VISIBLE LWS_EXTERN void lws_email_destroy(struct lws_email *email)
LWS_VISIBLE LWS_EXTERN int lws_urldecode(char *string, const char *escaped, int len)
-
Definition: libwebsockets.h:804
-
Definition: libwebsockets.h:992
-
unsigned int id
Definition: libwebsockets.h:1197
+
Definition: libwebsockets.h:810
+
Definition: libwebsockets.h:998
+
unsigned int id
Definition: libwebsockets.h:1203
LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_hdr_total_length(struct lws *wsi, enum lws_token_indexes h)
-
Definition: libwebsockets.h:990
-
Definition: libwebsockets.h:709
+
Definition: libwebsockets.h:996
+
Definition: libwebsockets.h:715
LWS_VISIBLE LWS_EXTERN int lws_service_fd_tsi(struct lws_context *context, struct lws_pollfd *pollfd, int tsi)
LWS_VISIBLE LWS_EXTERN struct lws *LWS_WARN_UNUSED_RESULT lws_get_parent(const struct lws *wsi)
LWS_VISIBLE LWS_EXTERN size_t lws_get_peer_write_allowance(struct lws *wsi)
-
Definition: libwebsockets.h:655
+
Definition: libwebsockets.h:661
LWS_VISIBLE LWS_EXTERN const char *LWS_WARN_UNUSED_RESULT lws_get_library_version(void)
-
int(* on_sent)(struct lws_email *email)
Definition: libwebsockets.h:3925
-
Definition: libwebsockets.h:1328
-
struct lws ** pwsi
Definition: libwebsockets.h:1894
-
Definition: libwebsockets.h:689
-
const char * path
Definition: libwebsockets.h:1866
+
int(* on_sent)(struct lws_email *email)
Definition: libwebsockets.h:3931
+
Definition: libwebsockets.h:1334
+
struct lws ** pwsi
Definition: libwebsockets.h:1900
+
Definition: libwebsockets.h:695
+
const char * path
Definition: libwebsockets.h:1872
LWS_VISIBLE LWS_EXTERN size_t lws_remaining_packet_payload(struct lws *wsi)
-
Definition: libwebsockets.h:490
-
Definition: libwebsockets.h:1284
+
Definition: libwebsockets.h:496
+
Definition: libwebsockets.h:1290
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:3941
-
lws_close_status
Definition: libwebsockets.h:461
+
time_t email_connect_started
Definition: libwebsockets.h:3947
+
lws_close_status
Definition: libwebsockets.h:467
LWS_VISIBLE LWS_EXTERN int lws_callback_all_protocol(struct lws_context *context, const struct lws_protocols *protocol, int reason)
-
Definition: libwebsockets.h:501
- -
int token_len
Definition: libwebsockets.h:2312
-
const struct lws_http_mount * mounts
Definition: libwebsockets.h:1563
-
Definition: libwebsockets.h:830
+
Definition: libwebsockets.h:507
+ +
int token_len
Definition: libwebsockets.h:2318
+
const struct lws_http_mount * mounts
Definition: libwebsockets.h:1569
+
Definition: libwebsockets.h:836
LWS_VISIBLE LWS_EXTERN struct lws_context *LWS_WARN_UNUSED_RESULT lws_get_context(const struct lws *wsi)
-
const char * value
Definition: libwebsockets.h:1777
-
Definition: libwebsockets.h:2631
-
Definition: libwebsockets.h:3899
-
const char * username
Definition: libwebsockets.h:1359
+
const char * value
Definition: libwebsockets.h:1783
+
Definition: libwebsockets.h:2637
+
Definition: libwebsockets.h:3905
+
const char * username
Definition: libwebsockets.h:1365
LWS_VISIBLE LWS_EXTERN struct lws * lws_client_connect_via_info(struct lws_client_connect_info *ccinfo)
-
const char * protocol
Definition: libwebsockets.h:1807
-
struct lws ** stdwsi
Definition: libwebsockets.h:3690
+
const char * protocol
Definition: libwebsockets.h:1813
+
struct lws ** stdwsi
Definition: libwebsockets.h:3696
LWS_VISIBLE LWS_EXTERN int lws_json_dump_vhost(const struct lws_vhost *vh, char *buf, int len)
-
Definition: libwebsockets.h:776
+
Definition: libwebsockets.h:782
LWS_VISIBLE LWS_EXTERN const char * lws_get_mimetype(const char *file, const struct lws_http_mount *m)
-
Definition: libwebsockets.h:1330
-
int cache_max_age
Definition: libwebsockets.h:1821
-
long ssl_options_clear
Definition: libwebsockets.h:1581
-
Definition: libwebsockets.h:669
-
Definition: libwebsockets.h:1449
+
Definition: libwebsockets.h:1336
+
int cache_max_age
Definition: libwebsockets.h:1827
+
long ssl_options_clear
Definition: libwebsockets.h:1587
+
Definition: libwebsockets.h:675
+
Definition: libwebsockets.h:1455
LWS_VISIBLE LWS_EXTERN void lws_context_destroy(struct lws_context *context)
-
Definition: libwebsockets.h:517
-
char * start
Definition: libwebsockets.h:2251
+
Definition: libwebsockets.h:523
+
char * start
Definition: libwebsockets.h:2257
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:2970
+
lws_callback_function * callback
Definition: libwebsockets.h:1185
+
Definition: libwebsockets.h:2976
LWS_VISIBLE LWS_EXTERN int lws_get_socket_fd(struct lws *wsi)
-
Definition: libwebsockets.h:867
- -
const char * protocol
Definition: libwebsockets.h:1872
-
Definition: libwebsockets.h:856
-
unsigned int pt_serv_buf_size
Definition: libwebsockets.h:1568
+
Definition: libwebsockets.h:873
+ +
const char * protocol
Definition: libwebsockets.h:1878
+
Definition: libwebsockets.h:862
+
unsigned int pt_serv_buf_size
Definition: libwebsockets.h:1574
LWS_VISIBLE LWS_EXTERN struct lws * lws_adopt_socket(struct lws_context *context, lws_sockfd_type accept_fd)
-
int len
Definition: libwebsockets.h:2243
-
int ka_time
Definition: libwebsockets.h:1504
-
Definition: libwebsockets.h:1404
+
int len
Definition: libwebsockets.h:2249
+
int ka_time
Definition: libwebsockets.h:1510
+
Definition: libwebsockets.h:1410
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: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:1874
+
int count_extensions
Definition: libwebsockets.h:1295
+
Definition: libwebsockets.h:2980
+
int port
Definition: libwebsockets.h:1868
+
struct lws_context * context
Definition: libwebsockets.h:1864
+
Definition: libwebsockets.h:1342
+
int ietf_version_or_minus_one
Definition: libwebsockets.h:1880
LWS_VISIBLE LWS_EXTERN int lws_callback_all_protocol_vhost(struct lws_vhost *vh, const struct lws_protocols *protocol, int reason)
-
Definition: libwebsockets.h:3892
-
Definition: libwebsockets.h:1773
+
Definition: libwebsockets.h:3898
+
Definition: libwebsockets.h:1779
LWS_VISIBLE LWS_EXTERN int lws_callback_on_writable(struct lws *wsi)
-
const char *const * vars
Definition: libwebsockets.h:2255
-
Definition: libwebsockets.h:469
-
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: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:1422
-
Definition: libwebsockets.h:796
-
const char * option_name
Definition: libwebsockets.h:1012
-
Definition: libwebsockets.h:1786
-
lws_sockfd_type fd
Definition: libwebsockets.h:439
-
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
+
const char *const * vars
Definition: libwebsockets.h:2261
+
Definition: libwebsockets.h:475
+
Definition: libwebsockets.h:1863
+
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:1085
+ +
int len
Definition: libwebsockets.h:1021
+
Definition: libwebsockets.h:1804
+
const char * def
Definition: libwebsockets.h:1811
+
Definition: libwebsockets.h:636
+
Definition: libwebsockets.h:1422
+
lws_context_options
Definition: libwebsockets.h:1393
+
Definition: libwebsockets.h:814
+
Definition: libwebsockets.h:1359
+
Definition: libwebsockets.h:1428
+
Definition: libwebsockets.h:802
+
const char * option_name
Definition: libwebsockets.h:1018
+
Definition: libwebsockets.h:1792
+
lws_sockfd_type fd
Definition: libwebsockets.h:445
+
const char * ssl_private_key_password
Definition: libwebsockets.h:1478
+
short events
Definition: libwebsockets.h:414
+
Definition: libwebsockets.h:1303
+
const struct lws_extension * extensions
Definition: libwebsockets.h:1294
LWS_VISIBLE LWS_EXTERN void lws_set_timeout(struct lws *wsi, enum pending_timeout reason, int secs)
-
void * userdata
Definition: libwebsockets.h:1876
-
Definition: libwebsockets.h:627
-
Definition: libwebsockets.h:814
+
void * userdata
Definition: libwebsockets.h:1882
+
Definition: libwebsockets.h:633
+
Definition: libwebsockets.h:820
LWS_VISIBLE LWS_EXTERN int lws_service_tsi(struct lws_context *context, int timeout_ms, int tsi)
-
unsigned char * data
Definition: libwebsockets.h:3692
-
const struct lws_protocol_vhost_options * extra_mimetypes
Definition: libwebsockets.h:1814
+
unsigned char * data
Definition: libwebsockets.h:3698
+
const struct lws_protocol_vhost_options * extra_mimetypes
Definition: libwebsockets.h:1820
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
+
Definition: libwebsockets.h:626
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:3907
-
Definition: libwebsockets.h:799
+
Definition: libwebsockets.h:707
+
uv_loop_t * loop
Definition: libwebsockets.h:3913
+
Definition: libwebsockets.h:805
Definition: libwebsockets.h:72
-
Definition: libwebsockets.h:3006
-
int pos
Definition: libwebsockets.h:2253
-
struct lws_plugin * list
Definition: libwebsockets.h:1298
+
Definition: libwebsockets.h:3012
+
int pos
Definition: libwebsockets.h:2259
+
struct lws_plugin * list
Definition: libwebsockets.h:1304
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:1524
+
short max_http_header_data
Definition: libwebsockets.h:1530
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:1521
+
void * provided_client_ssl_ctx
Definition: libwebsockets.h:1527
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:1507
+
const struct lws_protocols * protocols
Definition: libwebsockets.h:1292
+
Definition: libwebsockets.h:997
+
int ka_probes
Definition: libwebsockets.h:1513
void onError(Socket *s, socket_error_t err)
-
const char * origin
Definition: libwebsockets.h:1870
+
const char * origin
Definition: libwebsockets.h:1876
SHORT revents
Definition: libwebsockets.h:400
-
const char * method
Definition: libwebsockets.h:1880
+
const char * method
Definition: libwebsockets.h:1886
LWS_VISIBLE LWS_EXTERN const char * lws_spa_get_string(struct lws_spa *spa, int n)
-
Definition: libwebsockets.h:1085
+
Definition: libwebsockets.h:1091
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: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:3915
-
int option_index
Definition: libwebsockets.h:1013
+
Definition: libwebsockets.h:842
+
const struct lws_extension * client_exts
Definition: libwebsockets.h:1884
+
unsigned char origin_protocol
Definition: libwebsockets.h:1836
+
const char * log_filepath
Definition: libwebsockets.h:1566
+
Definition: libwebsockets.h:682
+
unsigned int max_content_size
Definition: libwebsockets.h:3921
+
int option_index
Definition: libwebsockets.h:1019
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:1890
-
struct lws * parent_wsi
Definition: libwebsockets.h:1883
+
Definition: libwebsockets.h:678
+
const char * uri_replace_to
Definition: libwebsockets.h:1896
+
struct lws * parent_wsi
Definition: libwebsockets.h:1889
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:3938
+
enum lwsgs_smtp_states estate
Definition: libwebsockets.h:3944
LWS_VISIBLE LWS_EXTERN int lws_spa_finalize(struct lws_spa *spa)
-
Definition: libwebsockets.h:572
+
Definition: libwebsockets.h:578
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:1551
-
char name[64]
Definition: libwebsockets.h:1304
+
const char *const * plugin_dirs
Definition: libwebsockets.h:1557
+
char name[64]
Definition: libwebsockets.h:1310
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:3942
+
char email_buf[256]
Definition: libwebsockets.h:3948
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:3759
-
uv_lib_t lib
Definition: libwebsockets.h:1300
+
Definition: libwebsockets.h:1399
+
int(* close)(struct lws *wsi, lws_filefd_type fd)
Definition: libwebsockets.h:3765
+
uv_lib_t lib
Definition: libwebsockets.h:1306
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:3893
+
Definition: libwebsockets.h:3899
LWS_VISIBLE LWS_EXTERN int lws_is_cgi(struct lws *wsi)
-
int ssl_connection
Definition: libwebsockets.h:1864
-
Definition: libwebsockets.h:1352
-
SSL_CTX * provided_client_ssl_ctx
Definition: libwebsockets.h:1515
+
int ssl_connection
Definition: libwebsockets.h:1870
+
Definition: libwebsockets.h:1358
+
SSL_CTX * provided_client_ssl_ctx
Definition: libwebsockets.h:1521
LWS_VISIBLE LWS_EXTERN int lws_rx_flow_control(struct lws *wsi, int enable)
-
Definition: libwebsockets.h:2241
+
Definition: libwebsockets.h:2247
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:1810
-
const char * name
Definition: libwebsockets.h:1776
-
unsigned char mountpoint_len
Definition: libwebsockets.h:1831
-
Definition: libwebsockets.h:2977
-
Definition: libwebsockets.h:1411
+
Definition: libwebsockets.h:444
+
const struct lws_protocol_vhost_options * cgienv
Definition: libwebsockets.h:1816
+
const char * name
Definition: libwebsockets.h:1782
+
unsigned char mountpoint_len
Definition: libwebsockets.h:1837
+
Definition: libwebsockets.h:2983
+
Definition: libwebsockets.h:1417
lws_sockfd_type fd
Definition: libwebsockets.h:398
-
Definition: libwebsockets.h:1787
+
Definition: libwebsockets.h:1793
LWS_VISIBLE LWS_EXTERN int lws_is_final_fragment(struct lws *wsi)
-
const struct lws_extension * extensions
Definition: libwebsockets.h:1466
-
Definition: libwebsockets.h:1395
+
const struct lws_extension * extensions
Definition: libwebsockets.h:1472
+
Definition: libwebsockets.h:1401
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:1462
+
Definition: libwebsockets.h:1406
+
lws_ext_options_types
Definition: libwebsockets.h:995
+
const struct lws_protocols * protocols
Definition: libwebsockets.h:1468
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:1486
+
const char * start
Definition: libwebsockets.h:1020
+
const char * ssl_cipher_list
Definition: libwebsockets.h:1492
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:1801
-
const char * http_proxy_address
Definition: libwebsockets.h:1490
- +
const char * mountpoint
Definition: libwebsockets.h:1807
+
const char * http_proxy_address
Definition: libwebsockets.h:1496
+
rsa_context key
Definition: libwebsockets.h:237
-
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
+
const char * ssl_cert_filepath
Definition: libwebsockets.h:1480
+
const char * ecdh_curve
Definition: libwebsockets.h:1551
+
int cgi_timeout
Definition: libwebsockets.h:1825
+
Definition: libwebsockets.h:1795
+
Definition: libwebsockets.h:1343
+
Definition: libwebsockets.h:412
+
Definition: libwebsockets.h:501
LWS_VISIBLE LWS_EXTERN unsigned char lws_get_reserved_bits(struct lws *wsi)
LWS_VISIBLE LWS_EXTERN unsigned char * lws_SHA1(const unsigned char *d, size_t n, unsigned char *md)
LWS_VISIBLE LWS_EXTERN const unsigned char * lws_token_to_string(enum lws_token_indexes token)
LWS_VISIBLE LWS_EXTERN int lws_set_extension_option(struct lws *wsi, const char *ext_name, const char *opt_name, const char *opt_val)
-
Definition: libwebsockets.h:640
+
Definition: libwebsockets.h:646
LWS_VISIBLE LWS_EXTERN int lws_cgi(struct lws *wsi, const char *const *exec_array, int script_uri_path_len, int timeout_secs, const struct lws_protocol_vhost_options *mp_cgienv)
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
+
Definition: libwebsockets.h:680
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:1420
+
Definition: libwebsockets.h:1426
LWS_VISIBLE LWS_EXTERN int lwsl_timestamp(int level, char *p, int len)
-
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:1527
+
Definition: libwebsockets.h:1438
+
uv_timer_t timeout_email
Definition: libwebsockets.h:3943
+
Definition: libwebsockets.h:1408
+
short max_http_header_pool
Definition: libwebsockets.h:1533
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:2242
+
char * p
Definition: libwebsockets.h:2248
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:3891
-
Definition: libwebsockets.h:1414
-
Definition: libwebsockets.h:752
-
Definition: libwebsockets.h:638
-
Definition: libwebsockets.h:1175
-
Definition: libwebsockets.h:484
+
size_t per_session_data_size
Definition: libwebsockets.h:1189
+
Definition: libwebsockets.h:485
+
lwsgs_smtp_states
Definition: libwebsockets.h:3897
+
Definition: libwebsockets.h:1420
+
Definition: libwebsockets.h:758
+
Definition: libwebsockets.h:644
+
Definition: libwebsockets.h:1181
+
Definition: libwebsockets.h:490
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:1534
-
const char * email
Definition: libwebsockets.h:1360
+
unsigned int count_threads
Definition: libwebsockets.h:1540
+
const char * email
Definition: libwebsockets.h:1366
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:3939
-
const char * server_string
Definition: libwebsockets.h:1565
-
Definition: libwebsockets.h:1425
+
Definition: libwebsockets.h:472
+
uv_connect_t email_connect_req
Definition: libwebsockets.h:3945
+
const char * server_string
Definition: libwebsockets.h:1571
+
Definition: libwebsockets.h:1431
SHORT events
Definition: libwebsockets.h:399
-
Definition: libwebsockets.h:643
-
Definition: libwebsockets.h:1409
-
const char * vhost_name
Definition: libwebsockets.h:1547
-
Definition: libwebsockets.h:1790
+
Definition: libwebsockets.h:649
+
Definition: libwebsockets.h:1415
+
const char * vhost_name
Definition: libwebsockets.h:1553
+
Definition: libwebsockets.h:1796
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:1536
+
Definition: libwebsockets.h:1341
+
Definition: libwebsockets.h:1363
+
unsigned int fd_limit_per_thread
Definition: libwebsockets.h:1542
LWS_VISIBLE LWS_EXTERN int lws_cgi_write_split_stdout_headers(struct lws *wsi)
-
lws_gs_event
Definition: libwebsockets.h:1351
+
lws_gs_event
Definition: libwebsockets.h:1357
LWS_VISIBLE LWS_EXTERN int lws_finalize_startup(struct lws_context *context)
-
int ka_interval
Definition: libwebsockets.h:1511
-
Definition: libwebsockets.h:1334
-
int uid
Definition: libwebsockets.h:1497
-
Definition: libwebsockets.h:2633
+
int ka_interval
Definition: libwebsockets.h:1517
+
Definition: libwebsockets.h:1340
+
int uid
Definition: libwebsockets.h:1503
+
Definition: libwebsockets.h:2639
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
+
const char * name
Definition: libwebsockets.h:1182
LWS_VISIBLE LWS_EXTERN int lws_init_vhost_client_ssl(const struct lws_context_creation_info *info, struct lws_vhost *vhost)
-
Definition: libwebsockets.h:3897
-
unsigned int http_proxy_port
Definition: libwebsockets.h:1493
+
Definition: libwebsockets.h:3903
+
unsigned int http_proxy_port
Definition: libwebsockets.h:1499
LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_partial_buffered(struct lws *wsi)
-
unsigned int timeout_secs
Definition: libwebsockets.h:1540
-
int port
Definition: libwebsockets.h:1450
+
unsigned int timeout_secs
Definition: libwebsockets.h:1546
+
int port
Definition: libwebsockets.h:1456
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:1499
+
unsigned int options
Definition: libwebsockets.h:1505
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:1775
-
int prev_events
Definition: libwebsockets.h:441
-
int keepalive_timeout
Definition: libwebsockets.h:1557
-
Definition: libwebsockets.h:1341
-
Definition: libwebsockets.h:1002
-
Definition: libwebsockets.h:2430
+
const struct lws_protocol_vhost_options * options
Definition: libwebsockets.h:1781
+
int prev_events
Definition: libwebsockets.h:447
+
int keepalive_timeout
Definition: libwebsockets.h:1563
+
Definition: libwebsockets.h:1347
+
Definition: libwebsockets.h:1008
+
Definition: libwebsockets.h:2436
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:1554
-
const char * host
Definition: libwebsockets.h:1868
-
Definition: libwebsockets.h:1011
-
Definition: libwebsockets.h:505
+
const struct lws_protocol_vhost_options * pvo
Definition: libwebsockets.h:1560
+
const char * host
Definition: libwebsockets.h:1874
+
Definition: libwebsockets.h:1017
+
Definition: libwebsockets.h:511
LWS_VISIBLE LWS_EXTERN const struct lws_protocols * lws_vhost_name_to_protocol(struct lws_vhost *vh, const char *name)
-
int len
Definition: libwebsockets.h:3694
-
struct lws_http_mount * mount_next
Definition: libwebsockets.h:1799
+
int len
Definition: libwebsockets.h:3700
+
struct lws_http_mount * mount_next
Definition: libwebsockets.h:1805
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:1455
-
Definition: libwebsockets.h:3753
+
const char * iface
Definition: libwebsockets.h:1461
+
Definition: libwebsockets.h:3759
LWS_VISIBLE LWS_EXTERN void lwsl_hexdump(void *buf, size_t len)
-
lws_spa_fileupload_states
Definition: libwebsockets.h:2628
+
lws_spa_fileupload_states
Definition: libwebsockets.h:2634
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
+ +
Definition: libwebsockets.h:469
+
Definition: libwebsockets.h:478
LWS_VISIBLE LWS_EXTERN const char * lws_sql_purify(char *escaped, const char *string, int len)
-
uv_tcp_t email_client
Definition: libwebsockets.h:3940
+
uv_tcp_t email_client
Definition: libwebsockets.h:3946
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: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:3764
+
Definition: libwebsockets.h:582
+
lws_filefd_type(* open)(struct lws *wsi, const char *filename, unsigned long *filelen, int flags)
Definition: libwebsockets.h:3760
+
lws_write_protocol
Definition: libwebsockets.h:2975
+
const char * client_offer
Definition: libwebsockets.h:1094
+
int(* read)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount, unsigned char *buf, unsigned long len)
Definition: libwebsockets.h:3770
LWS_VISIBLE LWS_EXTERN void lws_cancel_service(struct lws_context *context)
-
Definition: libwebsockets.h:2629
-
Definition: libwebsockets.h:477
-
const char * origin
Definition: libwebsockets.h:1803
-
const char * name
Definition: libwebsockets.h:1003
+
Definition: libwebsockets.h:2635
+
Definition: libwebsockets.h:483
+
const char * origin
Definition: libwebsockets.h:1809
+
const char * name
Definition: libwebsockets.h:1009
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)
LWS_VISIBLE LWS_EXTERN int lws_set_proxy(struct lws_vhost *vhost, const char *proxy)
LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_frame_is_binary(struct lws *wsi)
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:3896
-
short revents
Definition: libwebsockets.h:412
-
lws_extension_callback_function * callback
Definition: libwebsockets.h:1087
-
long ssl_options_set
Definition: libwebsockets.h:1579
-
Definition: libwebsockets.h:915
+
Definition: libwebsockets.h:659
+
const char * name
Definition: libwebsockets.h:1092
+
Definition: libwebsockets.h:3902
+
short revents
Definition: libwebsockets.h:415
+
lws_extension_callback_function * callback
Definition: libwebsockets.h:1093
+
long ssl_options_set
Definition: libwebsockets.h:1585
+
Definition: libwebsockets.h:921
LWS_VISIBLE LWS_EXTERN const struct lws_protocols * lws_protocol_get(struct lws *wsi) LWS_WARN_DEPRECATED
-
unsigned int mask
Definition: libwebsockets.h:1345
+
unsigned int mask
Definition: libwebsockets.h:1351
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:1784
+
lws_mount_protocols
Definition: libwebsockets.h:1790
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:1574
-
Definition: libwebsockets.h:1785
+
lws_sockfd_type fd
Definition: libwebsockets.h:413
+
unsigned int max_http_header_data2
Definition: libwebsockets.h:1580
+
Definition: libwebsockets.h:1791
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:1816
+
const struct lws_protocol_vhost_options * interpret
Definition: libwebsockets.h:1822
LWS_VISIBLE LWS_EXTERN int lws_service(struct lws_context *context, int timeout_ms)
-
Definition: libwebsockets.h:1407
+
Definition: libwebsockets.h:1413
LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_http_transaction_completed(struct lws *wsi)
-
int count_vars
Definition: libwebsockets.h:2256
+
int count_vars
Definition: libwebsockets.h:2262
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:2310
+
Definition: libwebsockets.h:2316
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:2254
-
char * content
Definition: libwebsockets.h:3943
+
Definition: libwebsockets.h:638
+
void * data
Definition: libwebsockets.h:2260
+
char * content
Definition: libwebsockets.h:3949
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: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: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
+
const struct lws_token_limits * token_limits
Definition: libwebsockets.h:1475
+
lws_process_html_state_cb replace
Definition: libwebsockets.h:2264
+
Definition: libwebsockets.h:3910
+
const char * address
Definition: libwebsockets.h:1866
+
unsigned long(* seek_cur)(struct lws *wsi, lws_filefd_type fd, long offset_from_cur_pos)
Definition: libwebsockets.h:3767
+
void * user
Definition: libwebsockets.h:1210
+
int events
Definition: libwebsockets.h:446
+
int(* on_get_body)(struct lws_email *email, char *buf, int len)
Definition: libwebsockets.h:3936
+
Definition: libwebsockets.h:1797
+
void * user
Definition: libwebsockets.h:1507
+
Definition: libwebsockets.h:3906
+
Definition: libwebsockets.h:2998
+
char * token
Definition: libwebsockets.h:2317
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:1478
-
int max_len
Definition: libwebsockets.h:2244
-
Definition: libwebsockets.h:634
-
const struct lws_protocol_vhost_options * next
Definition: libwebsockets.h:1774
-
Definition: libwebsockets.h:645
+
int count_protocols
Definition: libwebsockets.h:1293
+
void * l
Definition: libwebsockets.h:1308
+
const char * ssl_private_key_filepath
Definition: libwebsockets.h:1484
+
int max_len
Definition: libwebsockets.h:2250
+
Definition: libwebsockets.h:640
+
const struct lws_protocol_vhost_options * next
Definition: libwebsockets.h:1780
+
Definition: libwebsockets.h:651
LWS_VISIBLE LWS_EXTERN void lws_rx_flow_allow_all_protocol(const struct lws_context *context, const struct lws_protocols *protocol)
-
Definition: libwebsockets.h:2250
+
Definition: libwebsockets.h:2256
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: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
+
Definition: libwebsockets.h:850
+
const char * ssl_ca_filepath
Definition: libwebsockets.h:1490
+
lws_client_connect_ssl_connection_flags
Definition: libwebsockets.h:1854
+
int gid
Definition: libwebsockets.h:1501
+
struct lws_vhost * vhost
Definition: libwebsockets.h:1898
+
int lws_callback_function(struct lws *wsi, enum lws_callback_reasons reason, void *user, void *in, size_t len)
Definition: libwebsockets.h:943
LWS_VISIBLE LWS_EXTERN void lws_cancel_service_pt(struct lws *wsi)
-
Definition: libwebsockets.h:1427
-
Definition: libwebsockets.h:513
-
Definition: libwebsockets.h:3895
-
unsigned int api_magic
Definition: libwebsockets.h:1285
-
Definition: libwebsockets.h:1430
+
Definition: libwebsockets.h:1433
+
Definition: libwebsockets.h:519
+
Definition: libwebsockets.h:3901
+
unsigned int api_magic
Definition: libwebsockets.h:1291
+
Definition: libwebsockets.h:1436
LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_send_pipe_choked(struct lws *wsi)
-
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
+
Definition: libwebsockets.h:3904
+
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:2656
diff --git a/doc/html/md_README.coding.html b/doc/html/md_README.coding.html index 3b3cc9d1..997db81f 100644 --- a/doc/html/md_README.coding.html +++ b/doc/html/md_README.coding.html @@ -121,6 +121,12 @@ $(document).ready(function(){initNavTree('md_README.coding.html','');});

Four callbacks LWS_CALLBACK_ADD_POLL_FD, LWS_CALLBACK_DEL_POLL_FD, LWS_CALLBACK_SET_MODE_POLL_FD and LWS_CALLBACK_CLEAR_MODE_POLL_FD appear in the callback for protocol 0 and allow interface code to manage socket descriptors in other poll loops.

You can pass all pollfds that need service to lws_service_fd(), even if the socket or file does not belong to libwebsockets it is safe.

If libwebsocket handled it, it zeros the pollfd revents field before returning. So you can let libwebsockets try and if pollfd->revents is nonzero on return, you know it needs handling by your code.

+

Also note that when integrating a foreign event loop like libev or libuv where it doesn't natively use poll() semantics, and you must return a fake pollfd reflecting the real event:

+

Using with in c++ apps

The library is ready for use by C++ apps. You can get started quickly by copying the test server

1 $ cp test-server/test-server.c test.cpp

and building it in C++ like this

diff --git a/doc/latex/group__client.tex b/doc/latex/group__client.tex index 4541e8f3..87db7e52 100644 --- a/doc/latex/group__client.tex +++ b/doc/latex/group__client.tex @@ -42,11 +42,11 @@ L\+W\+S\+\_\+\+V\+I\+S\+I\+B\+LE L\+W\+S\+\_\+\+E\+X\+T\+E\+RN int {\bfseries lw 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 \}; +1854 \{ +1855 LCCSCF\_USE\_SSL = (1 << 0), +1856 LCCSCF\_ALLOW\_SELFSIGNED = (1 << 1), +1857 LCCSCF\_SKIP\_SERVER\_CERT\_HOSTNAME\_CHECK = (1 << 2) +1858 \}; \end{DoxyCode} diff --git a/doc/latex/group__context-and-vhost.tex b/doc/latex/group__context-and-vhost.tex index 3b4cc9e7..3bb241cf 100644 --- a/doc/latex/group__context-and-vhost.tex +++ b/doc/latex/group__context-and-vhost.tex @@ -122,40 +122,40 @@ L\+W\+S\+\_\+\+S\+E\+R\+V\+E\+R\+\_\+\+O\+P\+T\+I\+O\+N\+\_\+\+I\+P\+V6\+\_\+\+V \end{Desc} \begin{DoxyCode} -1387 \{ -1388 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a274ed462a1a9239eb6ddf9007f5b7092}{LWS\_SERVER\_OPTION\_REQUIRE\_VALID\_OPENSSL\_CLIENT\_CERT} +1393 \{ +1394 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a274ed462a1a9239eb6ddf9007f5b7092}{LWS\_SERVER\_OPTION\_REQUIRE\_VALID\_OPENSSL\_CLIENT\_CERT} = (1 << 1) | -1389 (1 << 12), -1393 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a6582c985ee0ceaadc1d277030eae2d7c}{LWS\_SERVER\_OPTION\_SKIP\_SERVER\_CANONICAL\_NAME} +1395 (1 << 12), +1399 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a6582c985ee0ceaadc1d277030eae2d7c}{LWS\_SERVER\_OPTION\_SKIP\_SERVER\_CANONICAL\_NAME} = (1 << 2), -1395 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a1cc4562d05cba52a6dfa0697a65ade0d}{LWS\_SERVER\_OPTION\_ALLOW\_NON\_SSL\_ON\_SSL\_PORT} = ( +1401 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a1cc4562d05cba52a6dfa0697a65ade0d}{LWS\_SERVER\_OPTION\_ALLOW\_NON\_SSL\_ON\_SSL\_PORT} = ( 1 << 3) | -1396 (1 << 12), -1400 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a273d9975675130de0c6dc937dde7c8a6}{LWS\_SERVER\_OPTION\_LIBEV} = (1 << 4), -1402 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a34ab36e68c0d593b6f19b8d5ef1240a9}{LWS\_SERVER\_OPTION\_DISABLE\_IPV6} = (1 << 5), -1404 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a4933347a821e73c3f1e13fb6bfc7ad93}{LWS\_SERVER\_OPTION\_DISABLE\_OS\_CA\_CERTS} = ( +1402 (1 << 12), +1406 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a273d9975675130de0c6dc937dde7c8a6}{LWS\_SERVER\_OPTION\_LIBEV} = (1 << 4), +1408 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a34ab36e68c0d593b6f19b8d5ef1240a9}{LWS\_SERVER\_OPTION\_DISABLE\_IPV6} = (1 << 5), +1410 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a4933347a821e73c3f1e13fb6bfc7ad93}{LWS\_SERVER\_OPTION\_DISABLE\_OS\_CA\_CERTS} = ( 1 << 6), -1407 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5ac56a8a6590e74a8016d0fae09fb404fc}{LWS\_SERVER\_OPTION\_PEER\_CERT\_NOT\_REQUIRED} = ( +1413 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5ac56a8a6590e74a8016d0fae09fb404fc}{LWS\_SERVER\_OPTION\_PEER\_CERT\_NOT\_REQUIRED} = ( 1 << 7), -1409 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5aa0158b4e85420811e6b0f1378c6ded0f}{LWS\_SERVER\_OPTION\_VALIDATE\_UTF8} = (1 << 8), -1411 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a1b2f8bde0f62adc7ebe81b2043f34c0c}{LWS\_SERVER\_OPTION\_SSL\_ECDH} = (1 << 9) | -1412 (1 << 12), -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} = ( +1415 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5aa0158b4e85420811e6b0f1378c6ded0f}{LWS\_SERVER\_OPTION\_VALIDATE\_UTF8} = (1 << 8), +1417 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a1b2f8bde0f62adc7ebe81b2043f34c0c}{LWS\_SERVER\_OPTION\_SSL\_ECDH} = (1 << 9) | +1418 (1 << 12), +1420 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5aff121db04a10cf8b2c5df9d4f2b89f1e}{LWS\_SERVER\_OPTION\_LIBUV} = (1 << 10), +1422 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a4832187186c4d130c68051214cd42ada}{LWS\_SERVER\_OPTION\_REDIRECT\_HTTP\_TO\_HTTPS} = ( 1 << 11) | -1417 (1 << 12), -1420 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a7fed6a527c8d5e0acac1b4179644583a}{LWS\_SERVER\_OPTION\_DO\_SSL\_GLOBAL\_INIT} = ( +1423 (1 << 12), +1426 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a7fed6a527c8d5e0acac1b4179644583a}{LWS\_SERVER\_OPTION\_DO\_SSL\_GLOBAL\_INIT} = ( 1 << 12), -1422 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5accc9d0d11d1124a21659586164b0962e}{LWS\_SERVER\_OPTION\_EXPLICIT\_VHOSTS} = (1 << 13) +1428 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5accc9d0d11d1124a21659586164b0962e}{LWS\_SERVER\_OPTION\_EXPLICIT\_VHOSTS} = (1 << 13) , -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} = ( +1431 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a9637e9001d8c8b2521086bcafbd8a941}{LWS\_SERVER\_OPTION\_UNIX\_SOCK} = (1 << 14), +1433 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5ac962efd35abf6c402f9fb14aa14f5016}{LWS\_SERVER\_OPTION\_STS} = (1 << 15), +1436 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5af62887536e25e053e68741006dba46d8}{LWS\_SERVER\_OPTION\_IPV6\_V6ONLY\_MODIFY} = ( 1 << 16), -1432 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5aca5d42820b65eac5618ec3f0bd8a1160}{LWS\_SERVER\_OPTION\_IPV6\_V6ONLY\_VALUE} = (1 << 17) +1438 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5aca5d42820b65eac5618ec3f0bd8a1160}{LWS\_SERVER\_OPTION\_IPV6\_V6ONLY\_VALUE} = (1 << 17) , -1435 \textcolor{comment}{/****** add new things just above ---^ ******/} -1436 \}; +1441 \textcolor{comment}{/****** add new things just above ---^ ******/} +1442 \}; \end{DoxyCode} diff --git a/doc/latex/group__extensions.tex b/doc/latex/group__extensions.tex index a9dfde6c..9683b0a4 100644 --- a/doc/latex/group__extensions.tex +++ b/doc/latex/group__extensions.tex @@ -174,13 +174,13 @@ E\+X\+T\+A\+R\+G\+\_\+\+O\+P\+T\+\_\+\+D\+EC\hypertarget{group__extensions_ggacc \end{Desc} \begin{DoxyCode} -989 \{ -990 \hyperlink{group__extensions_ggacc9f55936dc165257a2e1f7d47bce89eaabcf56c456c1ff6e81dc82586a16f14c}{EXTARG\_NONE}, -991 \hyperlink{group__extensions_ggacc9f55936dc165257a2e1f7d47bce89ea1c86adf924c8786a12bee9687094673e}{EXTARG\_DEC}, -992 \hyperlink{group__extensions_ggacc9f55936dc165257a2e1f7d47bce89ea5265abe3e1c3f64412f2affe7bffd880}{EXTARG\_OPT\_DEC} -994 \textcolor{comment}{/* Add new things just above here ---^} -995 \textcolor{comment}{ * This is part of the ABI, don't needlessly break compatibility */} -996 \}; +995 \{ +996 \hyperlink{group__extensions_ggacc9f55936dc165257a2e1f7d47bce89eaabcf56c456c1ff6e81dc82586a16f14c}{EXTARG\_NONE}, +997 \hyperlink{group__extensions_ggacc9f55936dc165257a2e1f7d47bce89ea1c86adf924c8786a12bee9687094673e}{EXTARG\_DEC}, +998 \hyperlink{group__extensions_ggacc9f55936dc165257a2e1f7d47bce89ea5265abe3e1c3f64412f2affe7bffd880}{EXTARG\_OPT\_DEC} +1000 \textcolor{comment}{/* Add new things just above here ---^} +1001 \textcolor{comment}{ * This is part of the ABI, don't needlessly break compatibility */} +1002 \}; \end{DoxyCode} diff --git a/doc/latex/group__form-parsing.tex b/doc/latex/group__form-parsing.tex index 9fa04e3c..b6472365 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} -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 \}; +2634 \{ +2635 \hyperlink{group__form-parsing_gga41a74a822771d3dce89751aa3bce28aead3a958e7719ac273c3ba4f684f00c87f}{LWS\_UFS\_CONTENT}, +2637 \hyperlink{group__form-parsing_gga41a74a822771d3dce89751aa3bce28aea6ce2a55a4c3695cdb640c893d95bd3a7}{LWS\_UFS\_FINAL\_CONTENT}, +2639 \hyperlink{group__form-parsing_gga41a74a822771d3dce89751aa3bce28aea2d25de44865bd44e5a3903a2bab9ca83}{LWS\_UFS\_OPEN} +2641 \}; \end{DoxyCode} diff --git a/doc/latex/group__generic-sessions.tex b/doc/latex/group__generic-sessions.tex index 25faf39c..e1767b3c 100644 --- a/doc/latex/group__generic-sessions.tex +++ b/doc/latex/group__generic-sessions.tex @@ -50,10 +50,10 @@ L\+W\+S\+G\+S\+E\+\_\+\+D\+E\+L\+E\+T\+ED\hypertarget{group__generic-sessions_gg \end{Desc} \begin{DoxyCode} -1351 \{ -1352 \hyperlink{group__generic-sessions_ggaa93946b3d921072209d5cd8cdfa5332ea596010a165bf13473c5eea3a34cd4308}{LWSGSE\_CREATED}, -1353 \hyperlink{group__generic-sessions_ggaa93946b3d921072209d5cd8cdfa5332ead908cdc5689c5d22c9d3c8934e94dcde}{LWSGSE\_DELETED} -1354 \}; +1357 \{ +1358 \hyperlink{group__generic-sessions_ggaa93946b3d921072209d5cd8cdfa5332ea596010a165bf13473c5eea3a34cd4308}{LWSGSE\_CREATED}, +1359 \hyperlink{group__generic-sessions_ggaa93946b3d921072209d5cd8cdfa5332ead908cdc5689c5d22c9d3c8934e94dcde}{LWSGSE\_DELETED} +1360 \}; \end{DoxyCode} \index{plugin\+: generic-\/sessions@{plugin\+: generic-\/sessions}!lwsgs\+\_\+auth\+\_\+bits@{lwsgs\+\_\+auth\+\_\+bits}} \index{lwsgs\+\_\+auth\+\_\+bits@{lwsgs\+\_\+auth\+\_\+bits}!plugin\+: generic-\/sessions@{plugin\+: generic-\/sessions}} @@ -77,10 +77,10 @@ L\+W\+S\+G\+S\+\_\+\+A\+U\+T\+H\+\_\+\+F\+O\+R\+G\+O\+T\+\_\+\+F\+L\+OW\hypertar \end{Desc} \begin{DoxyCode} -1333 \{ -1334 \hyperlink{group__generic-sessions_gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a81e63075115dedd150265d81b8f7fa57}{LWSGS\_AUTH\_LOGGED\_IN} = 1, -1335 \hyperlink{group__generic-sessions_gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a0657a9e846814781b128c397fe4b10bf}{LWSGS\_AUTH\_ADMIN} = 2, -1336 \hyperlink{group__generic-sessions_gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a5a607e4668d20cadada62c4b8007f887}{LWSGS\_AUTH\_VERIFIED} = 4, -1337 \hyperlink{group__generic-sessions_gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a2cd8fb86e3b85c106e7711c03f0ddd0a}{LWSGS\_AUTH\_FORGOT\_FLOW} = 8, -1338 \}; +1339 \{ +1340 \hyperlink{group__generic-sessions_gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a81e63075115dedd150265d81b8f7fa57}{LWSGS\_AUTH\_LOGGED\_IN} = 1, +1341 \hyperlink{group__generic-sessions_gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a0657a9e846814781b128c397fe4b10bf}{LWSGS\_AUTH\_ADMIN} = 2, +1342 \hyperlink{group__generic-sessions_gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a5a607e4668d20cadada62c4b8007f887}{LWSGS\_AUTH\_VERIFIED} = 4, +1343 \hyperlink{group__generic-sessions_gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a2cd8fb86e3b85c106e7711c03f0ddd0a}{LWSGS\_AUTH\_FORGOT\_FLOW} = 8, +1344 \}; \end{DoxyCode} diff --git a/doc/latex/group__sending-data.tex b/doc/latex/group__sending-data.tex index d80adc68..4bbfd827 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} -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 \}; +2975 \{ +2976 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193da80e8f169fda236c56bfb795ed62903db}{LWS\_WRITE\_TEXT} = 0, +2980 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193daf6486c0dba50c44198100717721d9ab2}{LWS\_WRITE\_BINARY} = 1, +2983 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193da10047eb05b5e1c298151dc47a5b44826}{LWS\_WRITE\_CONTINUATION} = 2, +2986 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193dabb6705e1d1327cdda5025be28f07712e}{LWS\_WRITE\_HTTP} = 3, +2989 \textcolor{comment}{/* LWS\_WRITE\_CLOSE is handled by lws\_close\_reason() */} +2990 LWS\_WRITE\_PING = 5, +2991 LWS\_WRITE\_PONG = 6, +2992 +2993 \textcolor{comment}{/* Same as write\_http but we know this write ends the transaction */} +2994 LWS\_WRITE\_HTTP\_FINAL = 7, +2995 +2996 \textcolor{comment}{/* HTTP2 */} +2997 +2998 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917}{LWS\_WRITE\_HTTP\_HEADERS} = 8, +3005 \textcolor{comment}{/****** add new things just above ---^ ******/} +3006 +3007 \textcolor{comment}{/* flags */} +3008 +3009 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193da115440f272a5d55518adfc8099acfee3}{LWS\_WRITE\_NO\_FIN} = 0x40, +3012 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193da220d8e8652d9b97fb66e476e2a60ffce}{LWS\_WRITE\_CLIENT\_IGNORE\_XOR\_MASK} = 0x80 +3016 \}; \end{DoxyCode} diff --git a/doc/latex/group__smtp.tex b/doc/latex/group__smtp.tex index eda7436d..e5a78748 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} -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 \}; +3897 \{ +3898 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c}{LGSSMTP\_IDLE}, +3899 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933}{LGSSMTP\_CONNECTING}, +3900 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d}{LGSSMTP\_CONNECTED}, +3901 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad}{LGSSMTP\_SENT\_HELO}, +3902 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab}{LGSSMTP\_SENT\_FROM}, +3903 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83}{LGSSMTP\_SENT\_TO}, +3904 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14}{LGSSMTP\_SENT\_DATA}, +3905 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69}{LGSSMTP\_SENT\_BODY}, +3906 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5}{LGSSMTP\_SENT\_QUIT}, +3907 \}; \end{DoxyCode} diff --git a/doc/latex/group__usercb.tex b/doc/latex/group__usercb.tex index 568d77d9..fc9df2aa 100644 --- a/doc/latex/group__usercb.tex +++ b/doc/latex/group__usercb.tex @@ -273,78 +273,78 @@ L\+W\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+U\+S\+ER\hypertarget{group__usercb_ \end{Desc} \begin{DoxyCode} -571 \{ -572 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a24d39bf1cfc0bad9d92da9ac1717e439}{LWS\_CALLBACK\_ESTABLISHED} = 0, -576 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7ad8c6207b0c4e732f3d507f0fb79370e8}{LWS\_CALLBACK\_CLIENT\_CONNECTION\_ERROR} = +577 \{ +578 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a24d39bf1cfc0bad9d92da9ac1717e439}{LWS\_CALLBACK\_ESTABLISHED} = 0, +582 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7ad8c6207b0c4e732f3d507f0fb79370e8}{LWS\_CALLBACK\_CLIENT\_CONNECTION\_ERROR} = 1, -620 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7aa536e574a642ff3ab9e12bff7ba2c6a2}{LWS\_CALLBACK\_CLIENT\_FILTER\_PRE\_ESTABLISH} = +626 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7aa536e574a642ff3ab9e12bff7ba2c6a2}{LWS\_CALLBACK\_CLIENT\_FILTER\_PRE\_ESTABLISH} = 2, -627 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a7e12418eec9bce85735e6460176ab604}{LWS\_CALLBACK\_CLIENT\_ESTABLISHED} = 3, -630 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a48a9590e5e18c7920282e094a0bfd9d8}{LWS\_CALLBACK\_CLOSED} = 4, -632 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a838b18d255c1b94a533287ba302a2eba}{LWS\_CALLBACK\_CLOSED\_HTTP} = 5, -634 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a492c1b1c0ac0ed980042ee732fe2990c}{LWS\_CALLBACK\_RECEIVE} = 6, -638 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a2db02fc6e1c17ab62b52109d1aa9d738}{LWS\_CALLBACK\_RECEIVE\_PONG} = 7, -640 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7abbbe7a0a67c5866ca9109d46823fc5b1}{LWS\_CALLBACK\_CLIENT\_RECEIVE} = 8, -643 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a136a7cec11c3afd13245623bd84e76c9}{LWS\_CALLBACK\_CLIENT\_RECEIVE\_PONG} = 9, -645 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a8e8b2e6dbeac76d8d126947d2166a514}{LWS\_CALLBACK\_CLIENT\_WRITEABLE} = 10, -653 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a7ec8e2e9557ee02a4fc9f7dec7e2babc}{LWS\_CALLBACK\_SERVER\_WRITEABLE} = 11, -655 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7ae8d1de0bb56e03aa58cb4d44b18edd2e}{LWS\_CALLBACK\_HTTP} = 12, -669 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7ac4c68e00efcf1ff7bda7ada462aff8ae}{LWS\_CALLBACK\_HTTP\_BODY} = 13, -672 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a2fce9a8608220f32abbf1422a5498804}{LWS\_CALLBACK\_HTTP\_BODY\_COMPLETION} = 14, -674 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7aa627548e1296e654fcfab463ec3c9587}{LWS\_CALLBACK\_HTTP\_FILE\_COMPLETION} = 15, -676 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7afedadfb3cde37a8ea4c84ed535f26d09}{LWS\_CALLBACK\_HTTP\_WRITEABLE} = 16, -678 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a026502768778b8d79d62dd0fe4375fc6}{LWS\_CALLBACK\_FILTER\_NETWORK\_CONNECTION} = +633 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a7e12418eec9bce85735e6460176ab604}{LWS\_CALLBACK\_CLIENT\_ESTABLISHED} = 3, +636 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a48a9590e5e18c7920282e094a0bfd9d8}{LWS\_CALLBACK\_CLOSED} = 4, +638 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a838b18d255c1b94a533287ba302a2eba}{LWS\_CALLBACK\_CLOSED\_HTTP} = 5, +640 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a492c1b1c0ac0ed980042ee732fe2990c}{LWS\_CALLBACK\_RECEIVE} = 6, +644 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a2db02fc6e1c17ab62b52109d1aa9d738}{LWS\_CALLBACK\_RECEIVE\_PONG} = 7, +646 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7abbbe7a0a67c5866ca9109d46823fc5b1}{LWS\_CALLBACK\_CLIENT\_RECEIVE} = 8, +649 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a136a7cec11c3afd13245623bd84e76c9}{LWS\_CALLBACK\_CLIENT\_RECEIVE\_PONG} = 9, +651 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a8e8b2e6dbeac76d8d126947d2166a514}{LWS\_CALLBACK\_CLIENT\_WRITEABLE} = 10, +659 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a7ec8e2e9557ee02a4fc9f7dec7e2babc}{LWS\_CALLBACK\_SERVER\_WRITEABLE} = 11, +661 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7ae8d1de0bb56e03aa58cb4d44b18edd2e}{LWS\_CALLBACK\_HTTP} = 12, +675 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7ac4c68e00efcf1ff7bda7ada462aff8ae}{LWS\_CALLBACK\_HTTP\_BODY} = 13, +678 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a2fce9a8608220f32abbf1422a5498804}{LWS\_CALLBACK\_HTTP\_BODY\_COMPLETION} = 14, +680 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7aa627548e1296e654fcfab463ec3c9587}{LWS\_CALLBACK\_HTTP\_FILE\_COMPLETION} = 15, +682 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7afedadfb3cde37a8ea4c84ed535f26d09}{LWS\_CALLBACK\_HTTP\_WRITEABLE} = 16, +684 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a026502768778b8d79d62dd0fe4375fc6}{LWS\_CALLBACK\_FILTER\_NETWORK\_CONNECTION} = 17, -689 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a75199176c82c1a56e4a6bbf1cc30c12c}{LWS\_CALLBACK\_FILTER\_HTTP\_CONNECTION} = 18, -701 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7ae9734e1d7af2abf291665ce9e4a728d3}{LWS\_CALLBACK\_SERVER\_NEW\_CLIENT\_INSTANTIATED} = +695 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a75199176c82c1a56e4a6bbf1cc30c12c}{LWS\_CALLBACK\_FILTER\_HTTP\_CONNECTION} = 18, +707 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7ae9734e1d7af2abf291665ce9e4a728d3}{LWS\_CALLBACK\_SERVER\_NEW\_CLIENT\_INSTANTIATED} = 19, -709 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7accd8753672d319a30b4b4c2fb775e84d}{LWS\_CALLBACK\_FILTER\_PROTOCOL\_CONNECTION} = +715 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7accd8753672d319a30b4b4c2fb775e84d}{LWS\_CALLBACK\_FILTER\_PROTOCOL\_CONNECTION} = 20, -721 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7ae4986291b7a810fe290851d73bebeb1c}{LWS\_CALLBACK\_OPENSSL\_LOAD\_EXTRA\_CLIENT\_VERIFY\_CERTS} +727 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7ae4986291b7a810fe290851d73bebeb1c}{LWS\_CALLBACK\_OPENSSL\_LOAD\_EXTRA\_CLIENT\_VERIFY\_CERTS} = 21, -728 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a06006e98d27e1e884364d88317f83493}{LWS\_CALLBACK\_OPENSSL\_LOAD\_EXTRA\_SERVER\_VERIFY\_CERTS} +734 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a06006e98d27e1e884364d88317f83493}{LWS\_CALLBACK\_OPENSSL\_LOAD\_EXTRA\_SERVER\_VERIFY\_CERTS} = 22, -734 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7ae5ad65d779b7eab32ab67ceff91a3bac}{LWS\_CALLBACK\_OPENSSL\_PERFORM\_CLIENT\_CERT\_VERIFICATION} +740 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7ae5ad65d779b7eab32ab67ceff91a3bac}{LWS\_CALLBACK\_OPENSSL\_PERFORM\_CLIENT\_CERT\_VERIFICATION} = 23, -752 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a909cc2a7018864b0b71abacc4058fd8f}{LWS\_CALLBACK\_CLIENT\_APPEND\_HANDSHAKE\_HEADER} = +758 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a909cc2a7018864b0b71abacc4058fd8f}{LWS\_CALLBACK\_CLIENT\_APPEND\_HANDSHAKE\_HEADER} = 24, -776 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a390da3639296660a78cc1a5dcb19037e}{LWS\_CALLBACK\_CONFIRM\_EXTENSION\_OKAY} = 25, -787 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a1ce5b22039ca37ee224d00047596ea46}{LWS\_CALLBACK\_CLIENT\_CONFIRM\_EXTENSION\_SUPPORTED} +782 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a390da3639296660a78cc1a5dcb19037e}{LWS\_CALLBACK\_CONFIRM\_EXTENSION\_OKAY} = 25, +793 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a1ce5b22039ca37ee224d00047596ea46}{LWS\_CALLBACK\_CLIENT\_CONFIRM\_EXTENSION\_SUPPORTED} = 26, -796 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7ad5d34583e3556e153eda91620b48cc49}{LWS\_CALLBACK\_PROTOCOL\_INIT} = 27, -799 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a54269ca88508e6efd3afdb9d360a9caa}{LWS\_CALLBACK\_PROTOCOL\_DESTROY} = 28, -804 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7afd8fd77a1cc9405fcb4f26915d7f2d01}{LWS\_CALLBACK\_WSI\_CREATE} = 29, -806 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7aca834dc035b7f7486f9ce40fde54fe9e}{LWS\_CALLBACK\_WSI\_DESTROY} = 30, -808 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7adfb41c92e2522712207ef7f2462b5e34}{LWS\_CALLBACK\_GET\_THREAD\_ID} = 31, -813 \textcolor{comment}{/* external poll() management support */} -814 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7ab69783a9fbf2ca71ad70706bda77b412}{LWS\_CALLBACK\_ADD\_POLL\_FD} = 32, -830 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a1df60f314710236f9b53efbf468da768}{LWS\_CALLBACK\_DEL\_POLL\_FD} = 33, -836 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7aa87d2e82fffa42c3680c7403ef94216e}{LWS\_CALLBACK\_CHANGE\_MODE\_POLL\_FD} = 34, -844 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a8909732521d379179003d97ab7a05428}{LWS\_CALLBACK\_LOCK\_POLL} = 35, -856 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a0e9e3dd667c0c42cdbe1a3d921f4fd79}{LWS\_CALLBACK\_UNLOCK\_POLL} = 36, -859 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7aa46f705dcf97502e95627ffde614f98b}{LWS\_CALLBACK\_OPENSSL\_CONTEXT\_REQUIRES\_PRIVATE\_KEY} +802 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7ad5d34583e3556e153eda91620b48cc49}{LWS\_CALLBACK\_PROTOCOL\_INIT} = 27, +805 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a54269ca88508e6efd3afdb9d360a9caa}{LWS\_CALLBACK\_PROTOCOL\_DESTROY} = 28, +810 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7afd8fd77a1cc9405fcb4f26915d7f2d01}{LWS\_CALLBACK\_WSI\_CREATE} = 29, +812 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7aca834dc035b7f7486f9ce40fde54fe9e}{LWS\_CALLBACK\_WSI\_DESTROY} = 30, +814 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7adfb41c92e2522712207ef7f2462b5e34}{LWS\_CALLBACK\_GET\_THREAD\_ID} = 31, +819 \textcolor{comment}{/* external poll() management support */} +820 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7ab69783a9fbf2ca71ad70706bda77b412}{LWS\_CALLBACK\_ADD\_POLL\_FD} = 32, +836 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a1df60f314710236f9b53efbf468da768}{LWS\_CALLBACK\_DEL\_POLL\_FD} = 33, +842 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7aa87d2e82fffa42c3680c7403ef94216e}{LWS\_CALLBACK\_CHANGE\_MODE\_POLL\_FD} = 34, +850 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a8909732521d379179003d97ab7a05428}{LWS\_CALLBACK\_LOCK\_POLL} = 35, +862 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a0e9e3dd667c0c42cdbe1a3d921f4fd79}{LWS\_CALLBACK\_UNLOCK\_POLL} = 36, +865 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7aa46f705dcf97502e95627ffde614f98b}{LWS\_CALLBACK\_OPENSSL\_CONTEXT\_REQUIRES\_PRIVATE\_KEY} = 37, -867 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7ac3fc5bbb55e69f90396526287ee84a51}{LWS\_CALLBACK\_WS\_PEER\_INITIATED\_CLOSE} = +873 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7ac3fc5bbb55e69f90396526287ee84a51}{LWS\_CALLBACK\_WS\_PEER\_INITIATED\_CLOSE} = 38, -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 \textcolor{comment}{/****** add new things just above ---^ ******/} -914 -915 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a982579753e70e59a9ea13ce628ac891a}{LWS\_CALLBACK\_USER} = 1000, -917 \}; +882 LWS\_CALLBACK\_WS\_EXT\_DEFAULTS = 39, +885 LWS\_CALLBACK\_CGI = 40, +887 LWS\_CALLBACK\_CGI\_TERMINATED = 41, +889 LWS\_CALLBACK\_CGI\_STDIN\_DATA = 42, +891 LWS\_CALLBACK\_CGI\_STDIN\_COMPLETED = 43, +893 LWS\_CALLBACK\_ESTABLISHED\_CLIENT\_HTTP = 44, +895 LWS\_CALLBACK\_CLOSED\_CLIENT\_HTTP = 45, +897 LWS\_CALLBACK\_RECEIVE\_CLIENT\_HTTP = 46, +899 LWS\_CALLBACK\_COMPLETED\_CLIENT\_HTTP = 47, +901 LWS\_CALLBACK\_RECEIVE\_CLIENT\_HTTP\_READ = 48, +903 LWS\_CALLBACK\_HTTP\_BIND\_PROTOCOL = 49, +905 LWS\_CALLBACK\_HTTP\_DROP\_PROTOCOL = 50, +907 LWS\_CALLBACK\_CHECK\_ACCESS\_RIGHTS = 51, +909 LWS\_CALLBACK\_PROCESS\_HTML = 52, +911 LWS\_CALLBACK\_ADD\_HEADERS = 53, +913 LWS\_CALLBACK\_SESSION\_INFO = 54, +916 LWS\_CALLBACK\_GS\_EVENT = 55, +919 \textcolor{comment}{/****** add new things just above ---^ ******/} +920 +921 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a982579753e70e59a9ea13ce628ac891a}{LWS\_CALLBACK\_USER} = 1000, +923 \}; \end{DoxyCode} diff --git a/doc/latex/group__vhost-mounts.tex b/doc/latex/group__vhost-mounts.tex index c060d661..445ac118 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} -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 \}; +1790 \{ +1791 \hyperlink{group__vhost-mounts_gga31eca18e50cb4357480f2fcad36ff437a1e9f0842b0e85db50fe648ed4ba9a4b0}{LWSMPRO\_HTTP} = 0, +1792 \hyperlink{group__vhost-mounts_gga31eca18e50cb4357480f2fcad36ff437afbd10eb4777517ed1f6bfdcf3b9ea1d1}{LWSMPRO\_HTTPS} = 1, +1793 \hyperlink{group__vhost-mounts_gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2}{LWSMPRO\_FILE} = 2, +1794 \hyperlink{group__vhost-mounts_gga31eca18e50cb4357480f2fcad36ff437a13ab58b01ac6e05f595977f1e0f0db69}{LWSMPRO\_CGI} = 3, +1795 \hyperlink{group__vhost-mounts_gga31eca18e50cb4357480f2fcad36ff437aec137a2434851bd856ceebfb697b9970}{LWSMPRO\_REDIR\_HTTP} = 4, +1796 \hyperlink{group__vhost-mounts_gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67}{LWSMPRO\_REDIR\_HTTPS} = 5, +1797 \hyperlink{group__vhost-mounts_gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da}{LWSMPRO\_CALLBACK} = 6, +1798 \}; \end{DoxyCode} diff --git a/doc/latex/group__wsclose.tex b/doc/latex/group__wsclose.tex index 7f69c596..b291c7c2 100644 --- a/doc/latex/group__wsclose.tex +++ b/doc/latex/group__wsclose.tex @@ -77,27 +77,27 @@ L\+W\+S\+\_\+\+C\+L\+O\+S\+E\+\_\+\+S\+T\+A\+T\+U\+S\+\_\+\+T\+L\+S\+\_\+\+F\+A\ \end{Desc} \begin{DoxyCode} -461 \{ -462 LWS\_CLOSE\_STATUS\_NOSTATUS = 0, -463 \hyperlink{group__wsclose_ggae399c571df32ba532c0ca67da9284985a3ffa38d5081b85fb739e02a747ccf2c4}{LWS\_CLOSE\_STATUS\_NORMAL} = 1000, -466 \hyperlink{group__wsclose_ggae399c571df32ba532c0ca67da9284985a9737a68759e739856b150ff9dfa30218}{LWS\_CLOSE\_STATUS\_GOINGAWAY} = 1001, -469 \hyperlink{group__wsclose_ggae399c571df32ba532c0ca67da9284985a1bb501d212fa4d57053db681b1dfab98}{LWS\_CLOSE\_STATUS\_PROTOCOL\_ERR} = 1002, -472 \hyperlink{group__wsclose_ggae399c571df32ba532c0ca67da9284985a462c99b05459df700919cfd3f53c8276}{LWS\_CLOSE\_STATUS\_UNACCEPTABLE\_OPCODE} = +467 \{ +468 LWS\_CLOSE\_STATUS\_NOSTATUS = 0, +469 \hyperlink{group__wsclose_ggae399c571df32ba532c0ca67da9284985a3ffa38d5081b85fb739e02a747ccf2c4}{LWS\_CLOSE\_STATUS\_NORMAL} = 1000, +472 \hyperlink{group__wsclose_ggae399c571df32ba532c0ca67da9284985a9737a68759e739856b150ff9dfa30218}{LWS\_CLOSE\_STATUS\_GOINGAWAY} = 1001, +475 \hyperlink{group__wsclose_ggae399c571df32ba532c0ca67da9284985a1bb501d212fa4d57053db681b1dfab98}{LWS\_CLOSE\_STATUS\_PROTOCOL\_ERR} = 1002, +478 \hyperlink{group__wsclose_ggae399c571df32ba532c0ca67da9284985a462c99b05459df700919cfd3f53c8276}{LWS\_CLOSE\_STATUS\_UNACCEPTABLE\_OPCODE} = 1003, -477 \hyperlink{group__wsclose_ggae399c571df32ba532c0ca67da9284985af90cb98d983ad3d4c79df9b6f3d4a4d2}{LWS\_CLOSE\_STATUS\_RESERVED} = 1004, -479 \hyperlink{group__wsclose_ggae399c571df32ba532c0ca67da9284985a4b8a3b7ce6f731e5248e4b0fb64a5044}{LWS\_CLOSE\_STATUS\_NO\_STATUS} = 1005, -484 \hyperlink{group__wsclose_ggae399c571df32ba532c0ca67da9284985a68b3d34bebd88547dcfa5cadba0acd6c}{LWS\_CLOSE\_STATUS\_ABNORMAL\_CLOSE} = 1006, -490 \hyperlink{group__wsclose_ggae399c571df32ba532c0ca67da9284985a7aef2da0062da606eeb35aaca5cf9050}{LWS\_CLOSE\_STATUS\_INVALID\_PAYLOAD} = 1007, -495 \hyperlink{group__wsclose_ggae399c571df32ba532c0ca67da9284985ad09e68295eabdddcba4e332fbea70ae5}{LWS\_CLOSE\_STATUS\_POLICY\_VIOLATION} = 1008, -501 \hyperlink{group__wsclose_ggae399c571df32ba532c0ca67da9284985a2e1f0113494a58e762eed3d22e7080d8}{LWS\_CLOSE\_STATUS\_MESSAGE\_TOO\_LARGE} = 1009, -505 \hyperlink{group__wsclose_ggae399c571df32ba532c0ca67da9284985ac6a161822783ee873be1c66f48d14e0e}{LWS\_CLOSE\_STATUS\_EXTENSION\_REQUIRED} = 1010, -513 \hyperlink{group__wsclose_ggae399c571df32ba532c0ca67da9284985ad0869604d79e13700ae5d196a431b350}{LWS\_CLOSE\_STATUS\_UNEXPECTED\_CONDITION} = +483 \hyperlink{group__wsclose_ggae399c571df32ba532c0ca67da9284985af90cb98d983ad3d4c79df9b6f3d4a4d2}{LWS\_CLOSE\_STATUS\_RESERVED} = 1004, +485 \hyperlink{group__wsclose_ggae399c571df32ba532c0ca67da9284985a4b8a3b7ce6f731e5248e4b0fb64a5044}{LWS\_CLOSE\_STATUS\_NO\_STATUS} = 1005, +490 \hyperlink{group__wsclose_ggae399c571df32ba532c0ca67da9284985a68b3d34bebd88547dcfa5cadba0acd6c}{LWS\_CLOSE\_STATUS\_ABNORMAL\_CLOSE} = 1006, +496 \hyperlink{group__wsclose_ggae399c571df32ba532c0ca67da9284985a7aef2da0062da606eeb35aaca5cf9050}{LWS\_CLOSE\_STATUS\_INVALID\_PAYLOAD} = 1007, +501 \hyperlink{group__wsclose_ggae399c571df32ba532c0ca67da9284985ad09e68295eabdddcba4e332fbea70ae5}{LWS\_CLOSE\_STATUS\_POLICY\_VIOLATION} = 1008, +507 \hyperlink{group__wsclose_ggae399c571df32ba532c0ca67da9284985a2e1f0113494a58e762eed3d22e7080d8}{LWS\_CLOSE\_STATUS\_MESSAGE\_TOO\_LARGE} = 1009, +511 \hyperlink{group__wsclose_ggae399c571df32ba532c0ca67da9284985ac6a161822783ee873be1c66f48d14e0e}{LWS\_CLOSE\_STATUS\_EXTENSION\_REQUIRED} = 1010, +519 \hyperlink{group__wsclose_ggae399c571df32ba532c0ca67da9284985ad0869604d79e13700ae5d196a431b350}{LWS\_CLOSE\_STATUS\_UNEXPECTED\_CONDITION} = 1011, -517 \hyperlink{group__wsclose_ggae399c571df32ba532c0ca67da9284985ad2b477a91c8445bf34ecd43977f9b390}{LWS\_CLOSE\_STATUS\_TLS\_FAILURE} = 1015, -524 \textcolor{comment}{/****** add new things just above ---^ ******/} -525 -526 LWS\_CLOSE\_STATUS\_NOSTATUS\_CONTEXT\_DESTROY = 9999, -527 \}; +523 \hyperlink{group__wsclose_ggae399c571df32ba532c0ca67da9284985ad2b477a91c8445bf34ecd43977f9b390}{LWS\_CLOSE\_STATUS\_TLS\_FAILURE} = 1015, +530 \textcolor{comment}{/****** add new things just above ---^ ******/} +531 +532 LWS\_CLOSE\_STATUS\_NOSTATUS\_CONTEXT\_DESTROY = 9999, +533 \}; \end{DoxyCode} diff --git a/doc/latex/md_README.coding.tex b/doc/latex/md_README.coding.tex index 8a4f61d6..db1a4538 100644 --- a/doc/latex/md_README.coding.tex +++ b/doc/latex/md_README.coding.tex @@ -126,6 +126,15 @@ You can pass all pollfds that need service to {\ttfamily \hyperlink{group__servi If {\bfseries libwebsocket} handled it, it zeros the pollfd {\ttfamily revents} field before returning. So you can let {\bfseries libwebsockets} try and if {\ttfamily pollfd-\/$>$revents} is nonzero on return, you know it needs handling by your code. +Also note that when integrating a foreign event loop like libev or libuv where it doesn\textquotesingle{}t natively use poll() semantics, and you must return a fake pollfd reflecting the real event\+: + + +\begin{DoxyItemize} +\item be sure you set .events to .revents value as well in the synthesized pollfd +\item check the built-\/in support for the event loop if possible (eg, ./lib/libuv.c) to see how it interfaces to lws +\item use L\+W\+S\+\_\+\+P\+O\+L\+L\+H\+UP / L\+W\+S\+\_\+\+P\+O\+L\+L\+IN / L\+W\+S\+\_\+\+P\+O\+L\+L\+O\+UT from \hyperlink{libwebsockets_8h}{libwebsockets.\+h} to avoid losing windows compatibility +\end{DoxyItemize} + \subsection*{Using with in c++ apps } The library is ready for use by C++ apps. You can get started quickly by copying the test server diff --git a/lib/libwebsockets.h b/lib/libwebsockets.h index 63836bbc..7c8d8373 100644 --- a/lib/libwebsockets.h +++ b/lib/libwebsockets.h @@ -399,6 +399,9 @@ struct lws_pollfd { SHORT events; /**< which events to respond to */ SHORT revents; /**< which events happened */ }; +#define LWS_POLLHUP (FD_CLOSE) +#define LWS_POLLIN (FD_READ | FD_ACCEPT) +#define LWS_POLLOUT (FD_WRITE) #else #if defined(MBED_OPERATORS) @@ -431,6 +434,9 @@ typedef int lws_filefd_type; #endif #define lws_pollfd pollfd +#define LWS_POLLHUP (POLLHUP|POLLERR) +#define LWS_POLLIN (POLLIN) +#define LWS_POLLOUT (POLLOUT) #endif /** struct lws_pollargs - argument structure for all external poll related calls diff --git a/lib/private-libwebsockets.h b/lib/private-libwebsockets.h index 2b8e8ae3..0e1cf8b8 100644 --- a/lib/private-libwebsockets.h +++ b/lib/private-libwebsockets.h @@ -62,9 +62,6 @@ #define LWS_EINTR WSAEINTR #define LWS_EISCONN WSAEISCONN #define LWS_EWOULDBLOCK WSAEWOULDBLOCK -#define LWS_POLLHUP (FD_CLOSE) -#define LWS_POLLIN (FD_READ | FD_ACCEPT) -#define LWS_POLLOUT (FD_WRITE) #define MSG_NOSIGNAL 0 #define SHUT_RDWR SD_BOTH #define SOL_TCP IPPROTO_TCP @@ -160,9 +157,7 @@ #define LWS_EINTR EINTR #define LWS_EISCONN EISCONN #define LWS_EWOULDBLOCK EWOULDBLOCK -#define LWS_POLLHUP (POLLHUP|POLLERR) -#define LWS_POLLIN (POLLIN) -#define LWS_POLLOUT (POLLOUT) + static inline int compatible_close(int fd) { return close(fd); } #define lws_set_blocking_send(wsi)