libwebsockets
Lightweight C library for HTML5 websockets
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 #
31 extern "C" {
32 #else
33 #include <stdarg.h>
34 #endif
35 
36 #if defined(LWS_WITH_ESP8266)
37 struct sockaddr_in;
38 #define LWS_POSIX 0
39 #else
40 #define LWS_POSIX 1
41 #endif
42 
43 #include "lws_config.h"
44 
45 #if defined(WIN32) || defined(_WIN32)
46 #ifndef WIN32_LEAN_AND_MEAN
47 #define WIN32_LEAN_AND_MEAN
48 #endif
49 
50 #include <winsock2.h>
51 #include <ws2tcpip.h>
52 #include <stddef.h>
53 #include <basetsd.h>
54 #ifndef _WIN32_WCE
55 #include <fcntl.h>
56 #else
57 #define _O_RDONLY 0x0000
58 #define O_RDONLY _O_RDONLY
59 #endif
60 
61 // Visual studio older than 2015 and WIN_CE has only _stricmp
62 #if (defined(_MSC_VER) && _MSC_VER < 1900) || defined(_WIN32_WCE)
63 #define strcasecmp _stricmp
64 #elif !defined(__MINGW32__)
65 #define strcasecmp stricmp
66 #endif
67 #define getdtablesize() 30000
68 
69 #define LWS_INLINE __inline
70 #define LWS_VISIBLE
71 #define LWS_WARN_UNUSED_RESULT
72 #define LWS_WARN_DEPRECATED
73 #define LWS_FORMAT(string_index)
74 
75 #ifdef LWS_DLL
76 #ifdef LWS_INTERNAL
77 #define LWS_EXTERN extern __declspec(dllexport)
78 #else
79 #define LWS_EXTERN extern __declspec(dllimport)
80 #endif
81 #else
82 #define LWS_EXTERN
83 #endif
84 
85 #define LWS_INVALID_FILE INVALID_HANDLE_VALUE
86 #define LWS_O_RDONLY _O_RDONLY
87 
88 #if !defined(__MINGW32__) && (!defined(_MSC_VER) || _MSC_VER < 1900) /* Visual Studio 2015 already defines this in <stdio.h> */
89 #define lws_snprintf _snprintf
90 #endif
91 
92 #ifndef __func__
93 #define __func__ __FUNCTION__
94 #endif
95 
96 #else /* NOT WIN32 */
97 #include <unistd.h>
98 
99 #if defined(__NetBSD__) || defined(__FreeBSD__)
100 #include <netinet/in.h>
101 #endif
102 
103 #define LWS_INLINE inline
104 #define LWS_O_RDONLY O_RDONLY
105 
106 #if !defined(LWS_WITH_ESP8266) && !defined(OPTEE_TA) && !defined(LWS_WITH_ESP32)
107 #include <poll.h>
108 #include <netdb.h>
109 #define LWS_INVALID_FILE -1
110 #else
111 #define getdtablesize() (20)
112 #if defined(LWS_WITH_ESP32)
113 #define LWS_INVALID_FILE NULL
114 #else
115 #define LWS_INVALID_FILE NULL
116 #endif
117 #endif
118 
119 #if defined(__GNUC__)
120 
121 /* warn_unused_result attribute only supported by GCC 3.4 or later */
122 #if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
123 #define LWS_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
124 #else
125 #define LWS_WARN_UNUSED_RESULT
126 #endif
127 
128 #define LWS_VISIBLE __attribute__((visibility("default")))
129 #define LWS_WARN_DEPRECATED __attribute__ ((deprecated))
130 #define LWS_FORMAT(string_index) __attribute__ ((format(printf, string_index, string_index+1)))
131 #else
132 #define LWS_VISIBLE
133 #define LWS_WARN_UNUSED_RESULT
134 #define LWS_WARN_DEPRECATED
135 #define LWS_FORMAT(string_index)
136 #endif
137 
138 #if defined(__ANDROID__)
139 #include <unistd.h>
140 #define getdtablesize() sysconf(_SC_OPEN_MAX)
141 #endif
142 
143 #endif
144 
145 #ifdef LWS_USE_LIBEV
146 #include <ev.h>
147 #endif /* LWS_USE_LIBEV */
148 #ifdef LWS_USE_LIBUV
149 #include <uv.h>
150 #ifdef LWS_HAVE_UV_VERSION_H
151 #include <uv-version.h>
152 #endif
153 #endif /* LWS_USE_LIBUV */
154 
155 #ifndef LWS_EXTERN
156 #define LWS_EXTERN extern
157 #endif
158 
159 #ifdef _WIN32
160 #define random rand
161 #else
162 #if !defined(OPTEE_TA)
163 #include <sys/time.h>
164 #include <unistd.h>
165 #endif
166 #endif
167 
168 #ifdef LWS_OPENSSL_SUPPORT
169 
170 #ifdef USE_WOLFSSL
171 #ifdef USE_OLD_CYASSL
172 #include <cyassl/openssl/ssl.h>
173 #include <cyassl/error-ssl.h>
174 #else
175 #include <wolfssl/openssl/ssl.h>
176 #include <wolfssl/error-ssl.h>
177 #endif /* not USE_OLD_CYASSL */
178 #else
179 #if defined(LWS_USE_POLARSSL)
180 #include <polarssl/ssl.h>
182  x509_crt ca;
183  x509_crt certificate;
184  rsa_context key;
185 };
186 typedef struct lws_polarssl_context SSL_CTX;
187 typedef ssl_context SSL;
188 #else
189 #include <openssl/ssl.h>
190 #include <openssl/err.h>
191 #endif /* not USE_POLARSSL */
192 #endif /* not USE_WOLFSSL */
193 #endif
194 
195 
196 #define CONTEXT_PORT_NO_LISTEN -1
197 #define CONTEXT_PORT_NO_LISTEN_SERVER -2
198 
209 
211 enum lws_log_levels {
212  LLL_ERR = 1 << 0,
213  LLL_WARN = 1 << 1,
214  LLL_NOTICE = 1 << 2,
215  LLL_INFO = 1 << 3,
216  LLL_DEBUG = 1 << 4,
217  LLL_PARSER = 1 << 5,
218  LLL_HEADER = 1 << 6,
219  LLL_EXT = 1 << 7,
220  LLL_CLIENT = 1 << 8,
221  LLL_LATENCY = 1 << 9,
222  LLL_USER = 1 << 10,
223 
224  LLL_COUNT = 11 /* set to count of valid flags */
225 };
226 
227 LWS_VISIBLE LWS_EXTERN void _lws_log(int filter, const char *format, ...) LWS_FORMAT(2);
228 LWS_VISIBLE LWS_EXTERN void _lws_logv(int filter, const char *format, va_list vl);
238 LWS_VISIBLE LWS_EXTERN int
239 lwsl_timestamp(int level, char *p, int len);
240 
241 /* these guys are unconditionally included */
242 
243 #define lwsl_err(...) _lws_log(LLL_ERR, __VA_ARGS__)
244 #define lwsl_user(...) _lws_log(LLL_USER, __VA_ARGS__)
245 
246 #if !defined(LWS_WITH_NO_LOGS)
247 /* notice and warn are usually included by being compiled in */
248 #define lwsl_warn(...) _lws_log(LLL_WARN, __VA_ARGS__)
249 #define lwsl_notice(...) _lws_log(LLL_NOTICE, __VA_ARGS__)
250 #endif
251 /*
252  * weaker logging can be deselected by telling CMake to build in RELEASE mode
253  * that gets rid of the overhead of checking while keeping _warn and _err
254  * active
255  */
256 
257 #if defined(LWS_WITH_ESP8266)
258 #undef _DEBUG
259 #endif
260 
261 #ifdef _DEBUG
262 #if defined(LWS_WITH_NO_LOGS)
263 /* notice, warn and log are always compiled in */
264 #define lwsl_warn(...) _lws_log(LLL_WARN, __VA_ARGS__)
265 #define lwsl_notice(...) _lws_log(LLL_NOTICE, __VA_ARGS__)
266 #endif
267 #define lwsl_info(...) _lws_log(LLL_INFO, __VA_ARGS__)
268 #define lwsl_debug(...) _lws_log(LLL_DEBUG, __VA_ARGS__)
269 #define lwsl_parser(...) _lws_log(LLL_PARSER, __VA_ARGS__)
270 #define lwsl_header(...) _lws_log(LLL_HEADER, __VA_ARGS__)
271 #define lwsl_ext(...) _lws_log(LLL_EXT, __VA_ARGS__)
272 #define lwsl_client(...) _lws_log(LLL_CLIENT, __VA_ARGS__)
273 #define lwsl_latency(...) _lws_log(LLL_LATENCY, __VA_ARGS__)
274 
280 LWS_VISIBLE LWS_EXTERN void lwsl_hexdump(void *buf, size_t len);
281 
282 #else /* no debug */
283 #if defined(LWS_WITH_NO_LOGS)
284 #define lwsl_warn(...) do {} while(0)
285 #define lwsl_notice(...) do {} while(0)
286 #endif
287 #define lwsl_info(...) do {} while(0)
288 #define lwsl_debug(...) do {} while(0)
289 #define lwsl_parser(...) do {} while(0)
290 #define lwsl_header(...) do {} while(0)
291 #define lwsl_ext(...) do {} while(0)
292 #define lwsl_client(...) do {} while(0)
293 #define lwsl_latency(...) do {} while(0)
294 #define lwsl_hexdump(a, b)
295 
296 #endif
297 
308 LWS_VISIBLE LWS_EXTERN void
309 lws_set_log_level(int level,
310  void (*log_emit_function)(int level, const char *line));
311 
321 LWS_VISIBLE LWS_EXTERN void
322 lwsl_emit_syslog(int level, const char *line);
323 
333 LWS_VISIBLE LWS_EXTERN int
334 lwsl_visible(int level);
335 
337 
338 
339 #include <stddef.h>
340 
341 #ifndef lws_container_of
342 #define lws_container_of(P,T,M) ((T *)((char *)(P) - offsetof(T, M)))
343 #endif
344 
345 
346 struct lws;
347 #ifndef ARRAY_SIZE
348 #define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
349 #endif
350 
351 /* api change list for user code to test against */
352 
353 #define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_ARG
354 
355 /* the struct lws_protocols has the id field present */
356 #define LWS_FEATURE_PROTOCOLS_HAS_ID_FIELD
357 
358 /* you can call lws_get_peer_write_allowance */
359 #define LWS_FEATURE_PROTOCOLS_HAS_PEER_WRITE_ALLOWANCE
360 
361 /* extra parameter introduced in 917f43ab821 */
362 #define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_LEN
363 
364 /* File operations stuff exists */
365 #define LWS_FEATURE_FOPS
366 
367 
368 #if defined(_WIN32)
369 typedef SOCKET lws_sockfd_type;
370 typedef HANDLE lws_filefd_type;
371 #define lws_sockfd_valid(sfd) (!!sfd)
372 struct lws_pollfd {
373  lws_sockfd_type fd;
374  SHORT events;
375  SHORT revents;
376 };
377 #define LWS_POLLHUP (FD_CLOSE)
378 #define LWS_POLLIN (FD_READ | FD_ACCEPT)
379 #define LWS_POLLOUT (FD_WRITE)
380 #else
381 
382 
383 #if defined(LWS_WITH_ESP8266)
384 
385 #include <user_interface.h>
386 #include <espconn.h>
387 
388 typedef struct espconn * lws_sockfd_type;
389 typedef void * lws_filefd_type;
390 #define lws_sockfd_valid(sfd) (!!sfd)
391 struct pollfd {
392  lws_sockfd_type fd;
393  short events;
394  short revents;
395 };
396 #define POLLIN 0x0001
397 #define POLLPRI 0x0002
398 #define POLLOUT 0x0004
399 #define POLLERR 0x0008
400 #define POLLHUP 0x0010
401 #define POLLNVAL 0x0020
402 
403 struct lws_vhost;
404 
405 lws_sockfd_type esp8266_create_tcp_listen_socket(struct lws_vhost *vh);
406 void esp8266_tcp_stream_accept(lws_sockfd_type fd, struct lws *wsi);
407 
408 #include <os_type.h>
409 #include <osapi.h>
410 #include "ets_sys.h"
411 
412 int ets_snprintf(char *str, size_t size, const char *format, ...) LWS_FORMAT(3);
413 #define snprintf ets_snprintf
414 
415 typedef os_timer_t uv_timer_t;
416 typedef void uv_cb_t(uv_timer_t *);
417 
418 void os_timer_disarm(void *);
419 void os_timer_setfn(os_timer_t *, os_timer_func_t *, void *);
420 
421 void ets_timer_arm_new(os_timer_t *, int, int, int);
422 
423 //void os_timer_arm(os_timer_t *, int, int);
424 
425 #define UV_VERSION_MAJOR 1
426 
427 #define lws_uv_getloop(a, b) (NULL)
428 
429 static inline void uv_timer_init(void *l, uv_timer_t *t)
430 {
431  (void)l;
432  memset(t, 0, sizeof(*t));
433  os_timer_disarm(t);
434 }
435 
436 static inline void uv_timer_start(uv_timer_t *t, uv_cb_t *cb, int first, int rep)
437 {
438  os_timer_setfn(t, (os_timer_func_t *)cb, t);
439  /* ms, repeat */
440  os_timer_arm(t, first, !!rep);
441 }
442 
443 static inline void uv_timer_stop(uv_timer_t *t)
444 {
445  os_timer_disarm(t);
446 }
447 
448 #else
449 #if defined(LWS_WITH_ESP32)
450 
451 typedef int lws_sockfd_type;
452 typedef void * lws_filefd_type;
453 #define lws_sockfd_valid(sfd) (sfd >= 0)
454 struct pollfd {
455  lws_sockfd_type fd;
456  short events;
457  short revents;
458 };
459 #define POLLIN 0x0001
460 #define POLLPRI 0x0002
461 #define POLLOUT 0x0004
462 #define POLLERR 0x0008
463 #define POLLHUP 0x0010
464 #define POLLNVAL 0x0020
465 
466 #include "freertos/timers.h"
467 
468 #if !defined(CONFIG_FREERTOS_HZ)
469 #define CONFIG_FREERTOS_HZ 100
470 #endif
471 
472 typedef TimerHandle_t uv_timer_t;
473 typedef void uv_cb_t(uv_timer_t *);
474 typedef void * uv_handle_t;
475 
477  uv_cb_t *cb;
478  uv_timer_t *t;
479 };
480 
481 #define UV_VERSION_MAJOR 1
482 
483 #define lws_uv_getloop(a, b) (NULL)
484 
485 static inline void uv_timer_init(void *l, uv_timer_t *t)
486 {
487  (void)l;
488  *t = NULL;
489 }
490 
491 extern void esp32_uvtimer_cb(TimerHandle_t t);
492 
493 static inline void uv_timer_start(uv_timer_t *t, uv_cb_t *cb, int first, int rep)
494 {
495  struct timer_mapping *tm = malloc(sizeof(*tm));
496 
497  if (!tm)
498  return;
499 
500  tm->t = t;
501  tm->cb = cb;
502 
503  *t = xTimerCreate("x", pdMS_TO_TICKS(first), !!rep, tm,
504  (TimerCallbackFunction_t)esp32_uvtimer_cb);
505  xTimerStart(*t, 0);
506 }
507 
508 static inline void uv_timer_stop(uv_timer_t *t)
509 {
510  xTimerStop(*t, 0);
511 }
512 
513 static inline void uv_close(uv_handle_t *h, void *v)
514 {
515  free(pvTimerGetTimerID((uv_timer_t)h));
516  xTimerDelete(*(uv_timer_t *)h, 0);
517 }
518 
519 
520 
521 
522 #else
523 typedef int lws_sockfd_type;
524 typedef int lws_filefd_type;
525 #define lws_sockfd_valid(sfd) (sfd >= 0)
526 #endif
527 #endif
528 
529 #define lws_pollfd pollfd
530 #define LWS_POLLHUP (POLLHUP|POLLERR)
531 #define LWS_POLLIN (POLLIN)
532 #define LWS_POLLOUT (POLLOUT)
533 #endif
534 
537 struct lws_pollargs {
538  lws_sockfd_type fd;
539  int events;
541 };
542 
543 struct lws_tokens;
544 struct lws_token_limits;
545 
553 
555 /*
556  * NOTE: These public enums are part of the abi. If you want to add one,
557  * add it at where specified so existing users are unaffected.
558  */
561  LWS_CLOSE_STATUS_NOSTATUS = 0,
623  /****** add new things just above ---^ ******/
624 
625  LWS_CLOSE_STATUS_NOSTATUS_CONTEXT_DESTROY = 9999,
626 };
627 
640 LWS_VISIBLE LWS_EXTERN void
641 lws_close_reason(struct lws *wsi, enum lws_close_status status,
642  unsigned char *buf, size_t len);
643 
645 
646 struct lws;
647 struct lws_context;
648 /* needed even with extensions disabled for create context */
649 struct lws_extension;
650 
662 
664 
665 /*
666  * NOTE: These public enums are part of the abi. If you want to add one,
667  * add it at where specified so existing users are unaffected.
668  */
912  /* external poll() management support */
975  LWS_CALLBACK_WS_EXT_DEFAULTS = 39,
978  LWS_CALLBACK_CGI = 40,
980  LWS_CALLBACK_CGI_TERMINATED = 41,
982  LWS_CALLBACK_CGI_STDIN_DATA = 42,
984  LWS_CALLBACK_CGI_STDIN_COMPLETED = 43,
986  LWS_CALLBACK_ESTABLISHED_CLIENT_HTTP = 44,
988  LWS_CALLBACK_CLOSED_CLIENT_HTTP = 45,
990  LWS_CALLBACK_RECEIVE_CLIENT_HTTP = 46,
992  LWS_CALLBACK_COMPLETED_CLIENT_HTTP = 47,
994  LWS_CALLBACK_RECEIVE_CLIENT_HTTP_READ = 48,
996  LWS_CALLBACK_HTTP_BIND_PROTOCOL = 49,
998  LWS_CALLBACK_HTTP_DROP_PROTOCOL = 50,
1000  LWS_CALLBACK_CHECK_ACCESS_RIGHTS = 51,
1002  LWS_CALLBACK_PROCESS_HTML = 52,
1004  LWS_CALLBACK_ADD_HEADERS = 53,
1006  LWS_CALLBACK_SESSION_INFO = 54,
1009  LWS_CALLBACK_GS_EVENT = 55,
1064  /****** add new things just above ---^ ******/
1065 
1068 };
1069 
1070 
1071 
1087 typedef int
1088 lws_callback_function(struct lws *wsi, enum lws_callback_reasons reason,
1089  void *user, void *in, size_t len);
1091 
1101 
1103 /*
1104  * NOTE: These public enums are part of the abi. If you want to add one,
1105  * add it at where specified so existing users are unaffected.
1106  */
1107 enum lws_extension_callback_reasons {
1108  LWS_EXT_CB_SERVER_CONTEXT_CONSTRUCT = 0,
1109  LWS_EXT_CB_CLIENT_CONTEXT_CONSTRUCT = 1,
1110  LWS_EXT_CB_SERVER_CONTEXT_DESTRUCT = 2,
1111  LWS_EXT_CB_CLIENT_CONTEXT_DESTRUCT = 3,
1112  LWS_EXT_CB_CONSTRUCT = 4,
1113  LWS_EXT_CB_CLIENT_CONSTRUCT = 5,
1114  LWS_EXT_CB_CHECK_OK_TO_REALLY_CLOSE = 6,
1115  LWS_EXT_CB_CHECK_OK_TO_PROPOSE_EXTENSION = 7,
1116  LWS_EXT_CB_DESTROY = 8,
1117  LWS_EXT_CB_DESTROY_ANY_WSI_CLOSING = 9,
1118  LWS_EXT_CB_ANY_WSI_ESTABLISHED = 10,
1119  LWS_EXT_CB_PACKET_RX_PREPARSE = 11,
1120  LWS_EXT_CB_PACKET_TX_PRESEND = 12,
1121  LWS_EXT_CB_PACKET_TX_DO_SEND = 13,
1122  LWS_EXT_CB_HANDSHAKE_REPLY_TX = 14,
1123  LWS_EXT_CB_FLUSH_PENDING_TX = 15,
1124  LWS_EXT_CB_EXTENDED_PAYLOAD_RX = 16,
1125  LWS_EXT_CB_CAN_PROXY_CLIENT_CONNECTION = 17,
1126  LWS_EXT_CB_1HZ = 18,
1127  LWS_EXT_CB_REQUEST_ON_WRITEABLE = 19,
1128  LWS_EXT_CB_IS_WRITEABLE = 20,
1129  LWS_EXT_CB_PAYLOAD_TX = 21,
1130  LWS_EXT_CB_PAYLOAD_RX = 22,
1131  LWS_EXT_CB_OPTION_DEFAULT = 23,
1132  LWS_EXT_CB_OPTION_SET = 24,
1133  LWS_EXT_CB_OPTION_CONFIRM = 25,
1134  LWS_EXT_CB_NAMED_OPTION_SET = 26,
1135 
1136  /****** add new things just above ---^ ******/
1137 };
1138 
1145  /* Add new things just above here ---^
1146  * This is part of the ABI, don't needlessly break compatibility */
1147 };
1148 
1154  const char *name;
1157  /* Add new things just above here ---^
1158  * This is part of the ABI, don't needlessly break compatibility */
1159 };
1160 
1163  const char *option_name;
1165  const char *start;
1166  int len;
1167 };
1168 
1229 typedef int
1230 lws_extension_callback_function(struct lws_context *context,
1231  const struct lws_extension *ext, struct lws *wsi,
1232  enum lws_extension_callback_reasons reason,
1233  void *user, void *in, size_t len);
1234 
1237  const char *name;
1239  const char *client_offer;
1241  /* Add new things just above here ---^
1242  * This is part of the ABI, don't needlessly break compatibility */
1243 };
1244 
1253 LWS_VISIBLE LWS_EXTERN int
1254 lws_set_extension_option(struct lws *wsi, const char *ext_name,
1255  const char *opt_name, const char *opt_val);
1256 
1257 #ifndef LWS_NO_EXTENSIONS
1258 /* lws_get_internal_extensions() - DEPRECATED
1259  *
1260  * \Deprecated There is no longer a set internal extensions table. The table is provided
1261  * by user code along with application-specific settings. See the test
1262  * client and server for how to do.
1263  */
1264 static LWS_INLINE LWS_WARN_DEPRECATED const struct lws_extension *
1265 lws_get_internal_extensions(void) { return NULL; }
1266 
1277 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
1278 lws_ext_parse_options(const struct lws_extension *ext, struct lws *wsi,
1279  void *ext_user, const struct lws_ext_options *opts,
1280  const char *o, int len);
1281 #endif
1282 
1295 LWS_EXTERN
1297  struct lws_context *context, const struct lws_extension *ext,
1298  struct lws *wsi, enum lws_extension_callback_reasons reason,
1299  void *user, void *in, size_t len);
1300 
1301 /*
1302  * The internal exts are part of the public abi
1303  * If we add more extensions, publish the callback here ------v
1304  */
1306 
1322 
1327  const char *name;
1348  unsigned int id;
1355  void *user;
1358  /* Add new things just above here ---^
1359  * This is part of the ABI, don't needlessly break compatibility */
1360 };
1361 
1362 struct lws_vhost;
1363 
1372 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
1373 lws_vhost_name_to_protocol(struct lws_vhost *vh, const char *name);
1374 
1384 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
1385 lws_get_protocol(struct lws *wsi);
1386 
1388 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
1389 lws_protocol_get(struct lws *wsi) LWS_WARN_DEPRECATED;
1390 
1401 LWS_VISIBLE LWS_EXTERN void *
1402 lws_protocol_vh_priv_zalloc(struct lws_vhost *vhost, const struct lws_protocols *prot,
1403  int size);
1404 
1414 LWS_VISIBLE LWS_EXTERN void *
1415 lws_protocol_vh_priv_get(struct lws_vhost *vhost, const struct lws_protocols *prot);
1416 
1425 LWS_VISIBLE LWS_EXTERN int
1426 lws_finalize_startup(struct lws_context *context);
1427 
1428 LWS_VISIBLE LWS_EXTERN int
1429 lws_protocol_init(struct lws_context *context);
1430 
1431 #ifdef LWS_WITH_PLUGINS
1432 
1433 /* PLUGINS implies LIBUV */
1434 
1435 #define LWS_PLUGIN_API_MAGIC 180
1436 
1439  unsigned int api_magic;
1440  const struct lws_protocols *protocols;
1442  const struct lws_extension *extensions;
1444 };
1445 
1446 typedef int (*lws_plugin_init_func)(struct lws_context *,
1447  struct lws_plugin_capability *);
1448 typedef int (*lws_plugin_destroy_func)(struct lws_context *);
1449 
1451 struct lws_plugin {
1452  struct lws_plugin *list;
1453 #if (UV_VERSION_MAJOR > 0)
1454  uv_lib_t lib;
1455 #else
1456  void *l;
1457 #endif
1458  char name[64];
1460 };
1461 
1462 #endif
1463 
1465 
1466 
1475 
1477 #define LWSGS_EMAIL_CONTENT_SIZE 16384
1478 
1480 /* SHA-1 binary and hexified versions */
1482 typedef struct { unsigned char bin[20]; } lwsgw_hash_bin;
1484 typedef struct { char id[41]; } lwsgw_hash;
1485 
1492 };
1493 
1496  char username[32];
1497  char email[100];
1498  char ip[72];
1499  unsigned int mask;
1501  char session[42];
1502 };
1503 
1508 };
1509 
1512  enum lws_gs_event event;
1513  const char *username;
1514  const char *email;
1515 };
1516 
1518 
1519 
1533 
1535 /*
1536  * NOTE: These public enums are part of the abi. If you want to add one,
1537  * add it at where specified so existing users are unaffected.
1538  */
1539 
1543  (1 << 12),
1550  (1 << 12),
1566  (1 << 12),
1571  (1 << 12),
1602  /****** add new things just above ---^ ******/
1603 };
1604 
1605 #define lws_check_opt(c, f) (((c) & (f)) == (f))
1606 
1617  int port;
1622  const char *iface;
1629  const struct lws_protocols *protocols;
1633  const struct lws_extension *extensions;
1641  const char *ssl_cert_filepath;
1651  const char *ssl_ca_filepath;
1653  const char *ssl_cipher_list;
1657  const char *http_proxy_address;
1660  unsigned int http_proxy_port;
1662  int gid;
1664  int uid;
1666  unsigned int options;
1668  void *user;
1671  int ka_time;
1681 #ifdef LWS_OPENSSL_SUPPORT
1687 #else /* maintain structure layout either way */
1689 #endif
1690 
1701  unsigned int count_threads;
1703  unsigned int fd_limit_per_thread;
1707  unsigned int timeout_secs;
1712  const char *ecdh_curve;
1714  const char *vhost_name;
1718  const char * const *plugin_dirs;
1727  const char *log_filepath;
1730  const struct lws_http_mount *mounts;
1732  const char *server_string;
1735  unsigned int pt_serv_buf_size;
1750  unsigned short ws_ping_pong_interval;
1781 #ifdef LWS_OPENSSL_SUPPORT
1782 
1802 #endif
1803 
1804  /* Add new things just above here ---^
1805  * This is part of the ABI, don't needlessly break compatibility
1806  *
1807  * The below is to ensure later library versions with new
1808  * members added above will see 0 (default) even if the app
1809  * was not built against the newer headers.
1810  */
1811 
1812  void *_unused[8];
1813 };
1814 
1849 LWS_VISIBLE LWS_EXTERN struct lws_context *
1851 
1860 LWS_VISIBLE LWS_EXTERN void
1861 lws_context_destroy(struct lws_context *context);
1862 
1863 LWS_VISIBLE LWS_EXTERN void
1864 lws_context_destroy2(struct lws_context *context);
1865 
1866 typedef int (*lws_reload_func)(void);
1867 
1892 LWS_VISIBLE LWS_EXTERN void
1893 lws_context_deprecate(struct lws_context *context, lws_reload_func cb);
1894 
1895 LWS_VISIBLE LWS_EXTERN int
1896 lws_context_is_deprecated(struct lws_context *context);
1897 
1915 LWS_VISIBLE LWS_EXTERN int
1916 lws_set_proxy(struct lws_vhost *vhost, const char *proxy);
1917 
1918 
1919 struct lws_vhost;
1920 
1930 LWS_EXTERN LWS_VISIBLE struct lws_vhost *
1931 lws_create_vhost(struct lws_context *context,
1932  struct lws_context_creation_info *info);
1933 
1948 LWS_VISIBLE LWS_EXTERN int
1949 lwsws_get_config_globals(struct lws_context_creation_info *info, const char *d,
1950  char **config_strings, int *len);
1951 
1967 LWS_VISIBLE LWS_EXTERN int
1968 lwsws_get_config_vhosts(struct lws_context *context,
1969  struct lws_context_creation_info *info, const char *d,
1970  char **config_strings, int *len);
1971 
1973 LWS_VISIBLE LWS_EXTERN struct lws_vhost *
1974 lws_vhost_get(struct lws *wsi) LWS_WARN_DEPRECATED;
1975 
1981 LWS_VISIBLE LWS_EXTERN struct lws_vhost *
1982 lws_get_vhost(struct lws *wsi);
1983 
1991 LWS_VISIBLE LWS_EXTERN int
1992 lws_json_dump_vhost(const struct lws_vhost *vh, char *buf, int len);
1993 
2001 LWS_VISIBLE LWS_EXTERN int
2002 lws_json_dump_context(const struct lws_context *context, char *buf, int len,
2003  int hide_vhosts);
2004 
2014 LWS_VISIBLE LWS_EXTERN void *
2015 lws_context_user(struct lws_context *context);
2016 
2022 
2032  const char *name;
2033  const char *value;
2034 };
2035 
2048 };
2049 
2057  const char *mountpoint;
2059  const char *origin;
2061  const char *def;
2063  const char *protocol;
2079  unsigned int auth_mask;
2082  unsigned int cache_reusable:1;
2083  unsigned int cache_revalidate:1;
2084  unsigned int cache_intermediaries:1;
2086  unsigned char origin_protocol;
2087  unsigned char mountpoint_len;
2092  /* Add new things just above here ---^
2093  * This is part of the ABI, don't needlessly break compatibility
2094  *
2095  * The below is to ensure later library versions with new
2096  * members added above will see 0 (default) even if the app
2097  * was not built against the newer headers.
2098  */
2099 
2100  void *_unused[2];
2101 };
2104 
2110 
2118  LCCSCF_USE_SSL = (1 << 0),
2119  LCCSCF_ALLOW_SELFSIGNED = (1 << 1),
2120  LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK = (1 << 2),
2121  LCCSCF_ALLOW_EXPIRED = (1 << 3)
2122 };
2123 
2128  struct lws_context *context;
2130  const char *address;
2132  int port;
2136  const char *path;
2138  const char *host;
2140  const char *origin;
2142  const char *protocol;
2146  void *userdata;
2148  const void *client_exts;
2150  const char *method;
2153  struct lws *parent_wsi;
2157  const char *uri_replace_from;
2160  const char *uri_replace_to;
2162  struct lws_vhost *vhost;
2164  struct lws **pwsi;
2176  /* Add new things just above here ---^
2177  * This is part of the ABI, don't needlessly break compatibility
2178  *
2179  * The below is to ensure later library versions with new
2180  * members added above will see 0 (default) even if the app
2181  * was not built against the newer headers.
2182  */
2183 
2184  void *_unused[4];
2185 };
2186 
2194 LWS_VISIBLE LWS_EXTERN struct lws *
2196 
2217 /* deprecated, use lws_client_connect_via_info() */
2218 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
2219 lws_client_connect(struct lws_context *clients, const char *address,
2220  int port, int ssl_connection, const char *path,
2221  const char *host, const char *origin, const char *protocol,
2222  int ietf_version_or_minus_one) LWS_WARN_DEPRECATED;
2223 /* deprecated, use lws_client_connect_via_info() */
2244 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
2245 lws_client_connect_extended(struct lws_context *clients, const char *address,
2246  int port, int ssl_connection, const char *path,
2247  const char *host, const char *origin,
2248  const char *protocol, int ietf_version_or_minus_one,
2249  void *userdata) LWS_WARN_DEPRECATED;
2250 
2276 LWS_VISIBLE LWS_EXTERN int
2278  struct lws_vhost *vhost);
2279 
2300 LWS_VISIBLE LWS_EXTERN int
2301 lws_http_client_read(struct lws *wsi, char **buf, int *len);
2302 
2310 LWS_VISIBLE LWS_EXTERN unsigned int
2311 lws_http_client_http_response(struct lws *wsi);
2312 
2313 LWS_VISIBLE LWS_EXTERN void
2314 lws_client_http_body_pending(struct lws *wsi, int something_left_to_send);
2315 
2336 
2345 
2378 LWS_VISIBLE LWS_EXTERN int
2379 lws_service(struct lws_context *context, int timeout_ms);
2380 
2392 LWS_VISIBLE LWS_EXTERN int
2393 lws_service_tsi(struct lws_context *context, int timeout_ms, int tsi);
2394 
2410 LWS_VISIBLE LWS_EXTERN void
2411 lws_cancel_service_pt(struct lws *wsi);
2412 
2424 LWS_VISIBLE LWS_EXTERN void
2425 lws_cancel_service(struct lws_context *context);
2426 
2453 LWS_VISIBLE LWS_EXTERN int
2454 lws_service_fd(struct lws_context *context, struct lws_pollfd *pollfd);
2455 
2465 LWS_VISIBLE LWS_EXTERN int
2466 lws_service_fd_tsi(struct lws_context *context, struct lws_pollfd *pollfd,
2467  int tsi);
2468 
2486 LWS_VISIBLE LWS_EXTERN int
2487 lws_service_adjust_timeout(struct lws_context *context, int timeout_ms, int tsi);
2488 
2489 /* Backwards compatibility */
2490 #define lws_plat_service_tsi lws_service_tsi
2491 
2493 
2499 
2506 
2518 LWS_VISIBLE LWS_EXTERN const char *
2519 lws_get_mimetype(const char *file, const struct lws_http_mount *m);
2520 
2539 LWS_VISIBLE LWS_EXTERN int
2540 lws_serve_http_file(struct lws *wsi, const char *file, const char *content_type,
2541  const char *other_headers, int other_headers_len);
2542 LWS_VISIBLE LWS_EXTERN int
2543 lws_serve_http_file_fragment(struct lws *wsi);
2545 
2556 
2557 enum http_status {
2558  HTTP_STATUS_OK = 200,
2559  HTTP_STATUS_NO_CONTENT = 204,
2560  HTTP_STATUS_PARTIAL_CONTENT = 206,
2561 
2562  HTTP_STATUS_MOVED_PERMANENTLY = 301,
2563  HTTP_STATUS_FOUND = 302,
2564  HTTP_STATUS_SEE_OTHER = 303,
2565 
2566  HTTP_STATUS_BAD_REQUEST = 400,
2567  HTTP_STATUS_UNAUTHORIZED,
2568  HTTP_STATUS_PAYMENT_REQUIRED,
2569  HTTP_STATUS_FORBIDDEN,
2570  HTTP_STATUS_NOT_FOUND,
2571  HTTP_STATUS_METHOD_NOT_ALLOWED,
2572  HTTP_STATUS_NOT_ACCEPTABLE,
2573  HTTP_STATUS_PROXY_AUTH_REQUIRED,
2574  HTTP_STATUS_REQUEST_TIMEOUT,
2575  HTTP_STATUS_CONFLICT,
2576  HTTP_STATUS_GONE,
2577  HTTP_STATUS_LENGTH_REQUIRED,
2578  HTTP_STATUS_PRECONDITION_FAILED,
2579  HTTP_STATUS_REQ_ENTITY_TOO_LARGE,
2580  HTTP_STATUS_REQ_URI_TOO_LONG,
2581  HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE,
2582  HTTP_STATUS_REQ_RANGE_NOT_SATISFIABLE,
2583  HTTP_STATUS_EXPECTATION_FAILED,
2584 
2585  HTTP_STATUS_INTERNAL_SERVER_ERROR = 500,
2586  HTTP_STATUS_NOT_IMPLEMENTED,
2587  HTTP_STATUS_BAD_GATEWAY,
2588  HTTP_STATUS_SERVICE_UNAVAILABLE,
2589  HTTP_STATUS_GATEWAY_TIMEOUT,
2590  HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED,
2591 };
2592 
2594  char *p;
2595  int len;
2596  int max_len;
2597  int final;
2598 };
2599 
2600 typedef const char *(*lws_process_html_state_cb)(void *data, int index);
2601 
2603  char *start;
2604  char swallow[16];
2605  int pos;
2606  void *data;
2607  const char * const *vars;
2610  lws_process_html_state_cb replace;
2611 };
2612 
2617 LWS_VISIBLE LWS_EXTERN int
2619  struct lws_process_html_state *s);
2621 
2654 
2662 struct lws_tokens {
2663  char *token;
2665 };
2666 
2667 /* enum lws_token_indexes
2668  * these have to be kept in sync with lextable.h / minilex.c
2669  *
2670  * NOTE: These public enums are part of the abi. If you want to add one,
2671  * add it at where specified so existing users are unaffected.
2672  */
2673 enum lws_token_indexes {
2674  WSI_TOKEN_GET_URI = 0,
2675  WSI_TOKEN_POST_URI = 1,
2676  WSI_TOKEN_OPTIONS_URI = 2,
2677  WSI_TOKEN_HOST = 3,
2678  WSI_TOKEN_CONNECTION = 4,
2679  WSI_TOKEN_UPGRADE = 5,
2680  WSI_TOKEN_ORIGIN = 6,
2681  WSI_TOKEN_DRAFT = 7,
2682  WSI_TOKEN_CHALLENGE = 8,
2683  WSI_TOKEN_EXTENSIONS = 9,
2684  WSI_TOKEN_KEY1 = 10,
2685  WSI_TOKEN_KEY2 = 11,
2686  WSI_TOKEN_PROTOCOL = 12,
2687  WSI_TOKEN_ACCEPT = 13,
2688  WSI_TOKEN_NONCE = 14,
2689  WSI_TOKEN_HTTP = 15,
2690  WSI_TOKEN_HTTP2_SETTINGS = 16,
2691  WSI_TOKEN_HTTP_ACCEPT = 17,
2692  WSI_TOKEN_HTTP_AC_REQUEST_HEADERS = 18,
2693  WSI_TOKEN_HTTP_IF_MODIFIED_SINCE = 19,
2694  WSI_TOKEN_HTTP_IF_NONE_MATCH = 20,
2695  WSI_TOKEN_HTTP_ACCEPT_ENCODING = 21,
2696  WSI_TOKEN_HTTP_ACCEPT_LANGUAGE = 22,
2697  WSI_TOKEN_HTTP_PRAGMA = 23,
2698  WSI_TOKEN_HTTP_CACHE_CONTROL = 24,
2699  WSI_TOKEN_HTTP_AUTHORIZATION = 25,
2700  WSI_TOKEN_HTTP_COOKIE = 26,
2701  WSI_TOKEN_HTTP_CONTENT_LENGTH = 27,
2702  WSI_TOKEN_HTTP_CONTENT_TYPE = 28,
2703  WSI_TOKEN_HTTP_DATE = 29,
2704  WSI_TOKEN_HTTP_RANGE = 30,
2705  WSI_TOKEN_HTTP_REFERER = 31,
2706  WSI_TOKEN_KEY = 32,
2707  WSI_TOKEN_VERSION = 33,
2708  WSI_TOKEN_SWORIGIN = 34,
2709 
2710  WSI_TOKEN_HTTP_COLON_AUTHORITY = 35,
2711  WSI_TOKEN_HTTP_COLON_METHOD = 36,
2712  WSI_TOKEN_HTTP_COLON_PATH = 37,
2713  WSI_TOKEN_HTTP_COLON_SCHEME = 38,
2714  WSI_TOKEN_HTTP_COLON_STATUS = 39,
2715 
2716  WSI_TOKEN_HTTP_ACCEPT_CHARSET = 40,
2717  WSI_TOKEN_HTTP_ACCEPT_RANGES = 41,
2718  WSI_TOKEN_HTTP_ACCESS_CONTROL_ALLOW_ORIGIN = 42,
2719  WSI_TOKEN_HTTP_AGE = 43,
2720  WSI_TOKEN_HTTP_ALLOW = 44,
2721  WSI_TOKEN_HTTP_CONTENT_DISPOSITION = 45,
2722  WSI_TOKEN_HTTP_CONTENT_ENCODING = 46,
2723  WSI_TOKEN_HTTP_CONTENT_LANGUAGE = 47,
2724  WSI_TOKEN_HTTP_CONTENT_LOCATION = 48,
2725  WSI_TOKEN_HTTP_CONTENT_RANGE = 49,
2726  WSI_TOKEN_HTTP_ETAG = 50,
2727  WSI_TOKEN_HTTP_EXPECT = 51,
2728  WSI_TOKEN_HTTP_EXPIRES = 52,
2729  WSI_TOKEN_HTTP_FROM = 53,
2730  WSI_TOKEN_HTTP_IF_MATCH = 54,
2731  WSI_TOKEN_HTTP_IF_RANGE = 55,
2732  WSI_TOKEN_HTTP_IF_UNMODIFIED_SINCE = 56,
2733  WSI_TOKEN_HTTP_LAST_MODIFIED = 57,
2734  WSI_TOKEN_HTTP_LINK = 58,
2735  WSI_TOKEN_HTTP_LOCATION = 59,
2736  WSI_TOKEN_HTTP_MAX_FORWARDS = 60,
2737  WSI_TOKEN_HTTP_PROXY_AUTHENTICATE = 61,
2738  WSI_TOKEN_HTTP_PROXY_AUTHORIZATION = 62,
2739  WSI_TOKEN_HTTP_REFRESH = 63,
2740  WSI_TOKEN_HTTP_RETRY_AFTER = 64,
2741  WSI_TOKEN_HTTP_SERVER = 65,
2742  WSI_TOKEN_HTTP_SET_COOKIE = 66,
2743  WSI_TOKEN_HTTP_STRICT_TRANSPORT_SECURITY = 67,
2744  WSI_TOKEN_HTTP_TRANSFER_ENCODING = 68,
2745  WSI_TOKEN_HTTP_USER_AGENT = 69,
2746  WSI_TOKEN_HTTP_VARY = 70,
2747  WSI_TOKEN_HTTP_VIA = 71,
2748  WSI_TOKEN_HTTP_WWW_AUTHENTICATE = 72,
2749 
2750  WSI_TOKEN_PATCH_URI = 73,
2751  WSI_TOKEN_PUT_URI = 74,
2752  WSI_TOKEN_DELETE_URI = 75,
2753 
2754  WSI_TOKEN_HTTP_URI_ARGS = 76,
2755  WSI_TOKEN_PROXY = 77,
2756  WSI_TOKEN_HTTP_X_REAL_IP = 78,
2757  WSI_TOKEN_HTTP1_0 = 79,
2758  WSI_TOKEN_X_FORWARDED_FOR = 80,
2759  WSI_TOKEN_CONNECT = 81,
2760  /****** add new things just above ---^ ******/
2761 
2762  /* use token storage to stash these internally, not for
2763  * user use */
2764 
2765  _WSI_TOKEN_CLIENT_SENT_PROTOCOLS,
2766  _WSI_TOKEN_CLIENT_PEER_ADDRESS,
2767  _WSI_TOKEN_CLIENT_URI,
2768  _WSI_TOKEN_CLIENT_HOST,
2769  _WSI_TOKEN_CLIENT_ORIGIN,
2770  _WSI_TOKEN_CLIENT_METHOD,
2771 
2772  /* always last real token index*/
2773  WSI_TOKEN_COUNT,
2774 
2775  /* parser state additions, no storage associated */
2776  WSI_TOKEN_NAME_PART,
2777  WSI_TOKEN_SKIPPING,
2778  WSI_TOKEN_SKIPPING_SAW_CR,
2779  WSI_PARSING_COMPLETE,
2780  WSI_INIT_TOKEN_MUXURL,
2781 };
2782 
2784  unsigned short token_limit[WSI_TOKEN_COUNT];
2785 };
2786 
2792 LWS_VISIBLE LWS_EXTERN const unsigned char *
2793 lws_token_to_string(enum lws_token_indexes token);
2794 
2795 
2804 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
2805 lws_hdr_total_length(struct lws *wsi, enum lws_token_indexes h);
2806 
2816 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
2817 lws_hdr_fragment_length(struct lws *wsi, enum lws_token_indexes h, int frag_idx);
2818 
2832 LWS_VISIBLE LWS_EXTERN int
2833 lws_hdr_copy(struct lws *wsi, char *dest, int len, enum lws_token_indexes h);
2834 
2852 LWS_VISIBLE LWS_EXTERN int
2853 lws_hdr_copy_fragment(struct lws *wsi, char *dest, int len,
2854  enum lws_token_indexes h, int frag_idx);
2855 
2866 LWS_VISIBLE LWS_EXTERN const char *
2867 lws_get_urlarg_by_name(struct lws *wsi, const char *name, char *buf, int len);
2869 
2884 
2895 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
2896 lws_add_http_header_status(struct lws *wsi,
2897  unsigned int code, unsigned char **p,
2898  unsigned char *end);
2911 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
2912 lws_add_http_header_by_name(struct lws *wsi, const unsigned char *name,
2913  const unsigned char *value, int length,
2914  unsigned char **p, unsigned char *end);
2928 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
2929 lws_add_http_header_by_token(struct lws *wsi, enum lws_token_indexes token,
2930  const unsigned char *value, int length,
2931  unsigned char **p, unsigned char *end);
2942 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
2943 lws_add_http_header_content_length(struct lws *wsi,
2944  unsigned long content_length,
2945  unsigned char **p, unsigned char *end);
2955 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
2956 lws_finalize_http_header(struct lws *wsi, unsigned char **p,
2957  unsigned char *end);
2959 
2978 
2988 };
2989 
3003 typedef int (*lws_spa_fileupload_cb)(void *data, const char *name,
3004  const char *filename, char *buf, int len,
3005  enum lws_spa_fileupload_states state);
3006 
3009 struct lws_spa;
3010 
3029 LWS_VISIBLE LWS_EXTERN struct lws_spa *
3030 lws_spa_create(struct lws *wsi, const char * const *param_names,
3031  int count_params, int max_storage, lws_spa_fileupload_cb opt_cb,
3032  void *opt_data);
3033 
3041 LWS_VISIBLE LWS_EXTERN int
3042 lws_spa_process(struct lws_spa *spa, const char *in, int len);
3043 
3049 LWS_VISIBLE LWS_EXTERN int
3050 lws_spa_finalize(struct lws_spa *spa);
3051 
3058 LWS_VISIBLE LWS_EXTERN int
3059 lws_spa_get_length(struct lws_spa *spa, int n);
3060 
3066 LWS_VISIBLE LWS_EXTERN const char *
3067 lws_spa_get_string(struct lws_spa *spa, int n);
3068 
3074 LWS_VISIBLE LWS_EXTERN int
3075 lws_spa_destroy(struct lws_spa *spa);
3077 
3088 
3099 LWS_VISIBLE LWS_EXTERN const char *
3100 lws_urlencode(char *escaped, const char *string, int len);
3101 
3102 /*
3103  * URLDECODE 1 / 2
3104  *
3105  * This simple urldecode only operates until the first '\0' and requires the
3106  * data to exist all at once
3107  */
3120 LWS_VISIBLE LWS_EXTERN int
3121 lws_urldecode(char *string, const char *escaped, int len);
3123 
3132 LWS_VISIBLE LWS_EXTERN int
3133 lws_return_http_status(struct lws *wsi, unsigned int code,
3134  const char *html_body);
3135 
3146 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
3147 lws_http_redirect(struct lws *wsi, int code, const unsigned char *loc, int len,
3148  unsigned char **p, unsigned char *end);
3149 
3158 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
3159 lws_http_transaction_completed(struct lws *wsi);
3161 
3169 
3180 LWS_VISIBLE LWS_EXTERN const char *
3181 lws_sql_purify(char *escaped, const char *string, int len);
3182 
3193 LWS_VISIBLE LWS_EXTERN const char *
3194 lws_json_purify(char *escaped, const char *string, int len);
3196 
3203 
3205 #ifdef LWS_USE_LIBEV
3206 typedef void (lws_ev_signal_cb_t)(EV_P_ struct ev_signal *w, int revents);
3207 
3208 LWS_VISIBLE LWS_EXTERN int
3209 lws_ev_sigint_cfg(struct lws_context *context, int use_ev_sigint,
3210  lws_ev_signal_cb_t *cb);
3211 
3212 LWS_VISIBLE LWS_EXTERN int
3213 lws_ev_initloop(struct lws_context *context, struct ev_loop *loop, int tsi);
3214 
3215 LWS_VISIBLE LWS_EXTERN void
3216 lws_ev_sigint_cb(struct ev_loop *loop, struct ev_signal *watcher, int revents);
3217 #endif /* LWS_USE_LIBEV */
3218 
3220 
3227 #ifdef LWS_USE_LIBUV
3229 LWS_VISIBLE LWS_EXTERN int
3230 lws_uv_sigint_cfg(struct lws_context *context, int use_uv_sigint,
3231  uv_signal_cb cb);
3232 
3233 LWS_VISIBLE LWS_EXTERN void
3234 lws_libuv_run(const struct lws_context *context, int tsi);
3235 
3236 LWS_VISIBLE LWS_EXTERN void
3237 lws_libuv_stop(struct lws_context *context);
3238 
3239 LWS_VISIBLE LWS_EXTERN void
3240 lws_libuv_stop_without_kill(const struct lws_context *context, int tsi);
3241 
3242 LWS_VISIBLE LWS_EXTERN int
3243 lws_uv_initloop(struct lws_context *context, uv_loop_t *loop, int tsi);
3244 
3245 LWS_VISIBLE LWS_EXTERN uv_loop_t *
3246 lws_uv_getloop(struct lws_context *context, int tsi);
3247 
3248 LWS_VISIBLE LWS_EXTERN void
3249 lws_uv_sigint_cb(uv_signal_t *watcher, int signum);
3250 #endif /* LWS_USE_LIBUV */
3251 
3258 
3259 /*
3260  * NOTE: These public enums are part of the abi. If you want to add one,
3261  * add it at where specified so existing users are unaffected.
3262  */
3263 enum pending_timeout {
3264  NO_PENDING_TIMEOUT = 0,
3265  PENDING_TIMEOUT_AWAITING_PROXY_RESPONSE = 1,
3266  PENDING_TIMEOUT_AWAITING_CONNECT_RESPONSE = 2,
3267  PENDING_TIMEOUT_ESTABLISH_WITH_SERVER = 3,
3268  PENDING_TIMEOUT_AWAITING_SERVER_RESPONSE = 4,
3269  PENDING_TIMEOUT_AWAITING_PING = 5,
3270  PENDING_TIMEOUT_CLOSE_ACK = 6,
3271  PENDING_TIMEOUT_AWAITING_EXTENSION_CONNECT_RESPONSE = 7,
3272  PENDING_TIMEOUT_SENT_CLIENT_HANDSHAKE = 8,
3273  PENDING_TIMEOUT_SSL_ACCEPT = 9,
3274  PENDING_TIMEOUT_HTTP_CONTENT = 10,
3275  PENDING_TIMEOUT_AWAITING_CLIENT_HS_SEND = 11,
3276  PENDING_FLUSH_STORED_SEND_BEFORE_CLOSE = 12,
3277  PENDING_TIMEOUT_SHUTDOWN_FLUSH = 13,
3278  PENDING_TIMEOUT_CGI = 14,
3279  PENDING_TIMEOUT_HTTP_KEEPALIVE_IDLE = 15,
3280  PENDING_TIMEOUT_WS_PONG_CHECK_SEND_PING = 16,
3281  PENDING_TIMEOUT_WS_PONG_CHECK_GET_PONG = 17,
3282  PENDING_TIMEOUT_CLIENT_ISSUE_PAYLOAD = 18,
3283 
3284  /****** add new things just above ---^ ******/
3285 };
3286 
3296 LWS_VISIBLE LWS_EXTERN void
3297 lws_set_timeout(struct lws *wsi, enum pending_timeout reason, int secs);
3299 
3305 #if !defined(LWS_SIZEOFPTR)
3306 #define LWS_SIZEOFPTR (sizeof (void *))
3307 #endif
3308 #if !defined(u_int64_t)
3309 #define u_int64_t unsigned long long
3310 #endif
3311 
3312 #if defined(__x86_64__)
3313 #define _LWS_PAD_SIZE 16 /* Intel recommended for best performance */
3314 #else
3315 #define _LWS_PAD_SIZE LWS_SIZEOFPTR /* Size of a pointer on the target arch */
3316 #endif
3317 #define _LWS_PAD(n) (((n) % _LWS_PAD_SIZE) ? \
3318  ((n) + (_LWS_PAD_SIZE - ((n) % _LWS_PAD_SIZE))) : (n))
3319 #define LWS_PRE _LWS_PAD(4 + 10)
3320 /* used prior to 1.7 and retained for backward compatibility */
3321 #define LWS_SEND_BUFFER_PRE_PADDING LWS_PRE
3322 #define LWS_SEND_BUFFER_POST_PADDING 0
3323 
3324 /*
3325  * NOTE: These public enums are part of the abi. If you want to add one,
3326  * add it at where specified so existing users are unaffected.
3327  */
3342  /* LWS_WRITE_CLOSE is handled by lws_close_reason() */
3343  LWS_WRITE_PING = 5,
3344  LWS_WRITE_PONG = 6,
3345 
3346  /* Same as write_http but we know this write ends the transaction */
3347  LWS_WRITE_HTTP_FINAL = 7,
3348 
3349  /* HTTP2 */
3350 
3358  /****** add new things just above ---^ ******/
3359 
3360  /* flags */
3361 
3369 };
3370 
3371 
3458 LWS_VISIBLE LWS_EXTERN int
3459 lws_write(struct lws *wsi, unsigned char *buf, size_t len,
3460  enum lws_write_protocol protocol);
3461 
3462 /* helper for case where buffer may be const */
3463 #define lws_write_http(wsi, buf, len) \
3464  lws_write(wsi, (unsigned char *)(buf), len, LWS_WRITE_HTTP)
3465 
3485 
3498 LWS_VISIBLE LWS_EXTERN int
3499 lws_callback_on_writable(struct lws *wsi);
3500 
3514 LWS_VISIBLE LWS_EXTERN int
3515 lws_callback_on_writable_all_protocol(const struct lws_context *context,
3516  const struct lws_protocols *protocol);
3517 
3531 LWS_VISIBLE LWS_EXTERN int
3532 lws_callback_on_writable_all_protocol_vhost(const struct lws_vhost *vhost,
3533  const struct lws_protocols *protocol);
3534 
3547 LWS_VISIBLE LWS_EXTERN int
3548 lws_callback_all_protocol(struct lws_context *context,
3549  const struct lws_protocols *protocol, int reason);
3550 
3563 LWS_VISIBLE LWS_EXTERN int
3564 lws_callback_all_protocol_vhost(struct lws_vhost *vh,
3565  const struct lws_protocols *protocol, int reason);
3566 
3580 LWS_VISIBLE LWS_EXTERN int
3581 lws_callback_vhost_protocols(struct lws *wsi, int reason, void *in, int len);
3582 
3583 LWS_VISIBLE LWS_EXTERN int
3584 lws_callback_http_dummy(struct lws *wsi, enum lws_callback_reasons reason,
3585  void *user, void *in, size_t len);
3586 
3594 LWS_VISIBLE LWS_EXTERN int
3595 lws_get_socket_fd(struct lws *wsi);
3596 
3618 LWS_VISIBLE LWS_EXTERN size_t
3619 lws_get_peer_write_allowance(struct lws *wsi);
3621 
3632 LWS_VISIBLE LWS_EXTERN int
3633 lws_rx_flow_control(struct lws *wsi, int enable);
3634 
3644 LWS_VISIBLE LWS_EXTERN void
3645 lws_rx_flow_allow_all_protocol(const struct lws_context *context,
3646  const struct lws_protocols *protocol);
3647 
3664 LWS_VISIBLE LWS_EXTERN size_t
3665 lws_remaining_packet_payload(struct lws *wsi);
3666 
3667 
3676 
3690 LWS_VISIBLE LWS_EXTERN struct lws *
3691 lws_adopt_socket(struct lws_context *context, lws_sockfd_type accept_fd);
3704 LWS_VISIBLE LWS_EXTERN struct lws *
3705 lws_adopt_socket_vhost(struct lws_vhost *vh, lws_sockfd_type accept_fd);
3706 /*
3707 * lws_adopt_socket_vhost2() - adopt foreign socket as if listen socket accepted it
3708 * for vhost, allow control over defeat SSL and raw transport mode
3709 * \param vhost: lws vhost
3710 * \param accept_fd: fd of already-accepted socket to adopt
3711 * \param allow_ssl: 0 = no SSL even if vhost supports, 1 = SSL if vhost supports
3712 * \param raw: 0 = http[s]/wss[s], 1 = raw mode semantics
3713 *
3714 * Either returns new wsi bound to accept_fd, or closes accept_fd and
3715 * returns NULL, having cleaned up any new wsi pieces.
3716 *
3717 * LWS adopts the socket in http serving mode, it's ready to accept an upgrade
3718 * to ws or just serve http.
3719 */
3720 LWS_VISIBLE struct lws *
3721 lws_adopt_socket_vhost2(struct lws_vhost *vh, lws_sockfd_type accept_fd,
3722  int allow_ssl, int raw);
3723 
3747 LWS_VISIBLE LWS_EXTERN struct lws *
3748 lws_adopt_socket_readbuf(struct lws_context *context, lws_sockfd_type accept_fd,
3749  const char *readbuf, size_t len);
3773 LWS_VISIBLE LWS_EXTERN struct lws *
3774 lws_adopt_socket_vhost_readbuf(struct lws_vhost *vhost, lws_sockfd_type accept_fd,
3775  const char *readbuf, size_t len);
3777 
3783 
3794 LWS_VISIBLE LWS_EXTERN const char * LWS_WARN_UNUSED_RESULT
3795 lws_canonical_hostname(struct lws_context *context);
3796 
3811 LWS_VISIBLE LWS_EXTERN void
3812 lws_get_peer_addresses(struct lws *wsi, lws_sockfd_type fd, char *name,
3813  int name_len, char *rip, int rip_len);
3814 
3825 LWS_VISIBLE LWS_EXTERN const char *
3826 lws_get_peer_simple(struct lws *wsi, char *name, int namelen);
3827 #if !defined(LWS_WITH_ESP8266) && !defined(LWS_WITH_ESP32)
3828 
3839 LWS_VISIBLE LWS_EXTERN int
3840 lws_interface_to_sa(int ipv6, const char *ifname, struct sockaddr_in *addr,
3841  size_t addrlen);
3843 #endif
3844 
3850 
3863 LWS_VISIBLE LWS_EXTERN int
3864 lws_snprintf(char *str, size_t size, const char *format, ...) LWS_FORMAT(3);
3865 
3877 LWS_VISIBLE LWS_EXTERN int
3878 lws_get_random(struct lws_context *context, void *buf, int len);
3886 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
3887 lws_daemonize(const char *_lock_path);
3893 LWS_VISIBLE LWS_EXTERN const char * LWS_WARN_UNUSED_RESULT
3895 
3902 LWS_VISIBLE LWS_EXTERN void *
3903 lws_wsi_user(struct lws *wsi);
3904 
3916 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
3917 lws_parse_uri(char *p, const char **prot, const char **ads, int *port,
3918  const char **path);
3919 
3923 LWS_VISIBLE LWS_EXTERN unsigned long
3924 lws_now_secs(void);
3925 
3935 LWS_VISIBLE LWS_EXTERN struct lws_context * LWS_WARN_UNUSED_RESULT
3936 lws_get_context(const struct lws *wsi);
3937 
3947 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
3948 lws_get_count_threads(struct lws_context *context);
3949 
3957 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
3958 lws_get_parent(const struct lws *wsi);
3959 
3966 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
3967 lws_get_child(const struct lws *wsi);
3968 
3969 
3970 /*
3971  * \deprecated DEPRECATED Note: this is not normally needed as a user api.
3972  * It's provided in case it is
3973  * useful when integrating with other app poll loop service code.
3974  */
3975 LWS_VISIBLE LWS_EXTERN int
3976 lws_read(struct lws *wsi, unsigned char *buf, size_t len);
3977 
3985 LWS_VISIBLE LWS_EXTERN void
3986 lws_set_allocator(void *(*realloc)(void *ptr, size_t size));
3988 
3994 
4001 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
4002 lws_send_pipe_choked(struct lws *wsi);
4003 
4008 LWS_VISIBLE LWS_EXTERN int
4009 lws_is_final_fragment(struct lws *wsi);
4010 
4015 LWS_VISIBLE LWS_EXTERN unsigned char
4016 lws_get_reserved_bits(struct lws *wsi);
4017 
4034 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
4035 lws_partial_buffered(struct lws *wsi);
4036 
4046 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
4047 lws_frame_is_binary(struct lws *wsi);
4048 
4057 LWS_VISIBLE LWS_EXTERN int
4058 lws_is_ssl(struct lws *wsi);
4063 LWS_VISIBLE LWS_EXTERN int
4064 lws_is_cgi(struct lws *wsi);
4065 
4066 #ifdef LWS_OPENSSL_SUPPORT
4067 
4073 LWS_VISIBLE LWS_EXTERN SSL*
4074 lws_get_ssl(struct lws *wsi);
4075 #endif
4076 
4078 
4084 #ifdef LWS_SHA1_USE_OPENSSL_NAME
4086 #define lws_SHA1 SHA1
4087 #else
4088 
4097 LWS_VISIBLE LWS_EXTERN unsigned char *
4098 lws_SHA1(const unsigned char *d, size_t n, unsigned char *md);
4099 #endif
4100 
4110 LWS_VISIBLE LWS_EXTERN int
4111 lws_b64_encode_string(const char *in, int in_len, char *out, int out_size);
4121 LWS_VISIBLE LWS_EXTERN int
4122 lws_b64_decode_string(const char *in, char *out, int out_size);
4124 
4125 
4135 #ifdef LWS_WITH_CGI
4136 enum lws_enum_stdinouterr {
4137  LWS_STDIN = 0,
4138  LWS_STDOUT = 1,
4139  LWS_STDERR = 2,
4140 };
4141 
4142 enum lws_cgi_hdr_state {
4143  LCHS_HEADER,
4144  LCHS_CR1,
4145  LCHS_LF1,
4146  LCHS_CR2,
4147  LCHS_LF2,
4148  LHCS_PAYLOAD,
4149  LCHS_SINGLE_0A,
4150 };
4151 
4153  struct lws **stdwsi;
4154  enum lws_enum_stdinouterr ch;
4155  unsigned char *data;
4156  enum lws_cgi_hdr_state hdr_state;
4157  int len;
4158 };
4159 
4160 
4170 LWS_VISIBLE LWS_EXTERN int
4171 lws_cgi(struct lws *wsi, const char * const *exec_array,
4172  int script_uri_path_len, int timeout_secs,
4173  const struct lws_protocol_vhost_options *mp_cgienv);
4174 
4180 LWS_VISIBLE LWS_EXTERN int
4181 lws_cgi_write_split_stdout_headers(struct lws *wsi);
4182 
4188 LWS_VISIBLE LWS_EXTERN int
4189 lws_cgi_kill(struct lws *wsi);
4190 #endif
4191 
4193 
4210 
4217 #if defined(LWS_WITH_ESP32)
4218 /* sdk preprocessor defs? compiler issue? gets confused with member names */
4219 #define LWS_FOP_OPEN _open
4220 #define LWS_FOP_CLOSE _close
4221 #define LWS_FOP_SEEK_CUR _seek_cur
4222 #define LWS_FOP_READ _read
4223 #define LWS_FOP_WRITE _write
4224 #else
4225 #define LWS_FOP_OPEN open
4226 #define LWS_FOP_CLOSE close
4227 #define LWS_FOP_SEEK_CUR seek_cur
4228 #define LWS_FOP_READ read
4229 #define LWS_FOP_WRITE write
4230 #endif
4231 
4232 #define LWS_FOP_FLAGS_MASK ((1 << 23) - 1)
4233 #define LWS_FOP_FLAG_COMPR_ACCEPTABLE_GZIP (1 << 24)
4234 #define LWS_FOP_FLAG_COMPR_IS_GZIP (1 << 25)
4235 
4237  lws_filefd_type (*LWS_FOP_OPEN)(struct lws *wsi, const char *filename,
4238  unsigned long *filelen, int *flags);
4247  int (*LWS_FOP_CLOSE)(struct lws *wsi, lws_filefd_type fd);
4249  unsigned long (*LWS_FOP_SEEK_CUR)(struct lws *wsi, lws_filefd_type fd,
4250  long offset_from_cur_pos);
4252  int (*LWS_FOP_READ)(struct lws *wsi, lws_filefd_type fd,
4253  unsigned long *amount, unsigned char *buf,
4254  unsigned long len);
4256  int (*LWS_FOP_WRITE)(struct lws *wsi, lws_filefd_type fd,
4257  unsigned long *amount, unsigned char *buf,
4258  unsigned long len);
4261  /* Add new things just above here ---^
4262  * This is part of the ABI, don't needlessly break compatibility */
4263 };
4264 
4270 LWS_VISIBLE LWS_EXTERN struct lws_plat_file_ops * LWS_WARN_UNUSED_RESULT
4271 lws_get_fops(struct lws_context *context);
4272 LWS_VISIBLE LWS_EXTERN void
4273 lws_set_fops(struct lws_context *context, struct lws_plat_file_ops *fops);
4282 static LWS_INLINE lws_filefd_type LWS_WARN_UNUSED_RESULT
4283 lws_plat_file_open(struct lws *wsi, const char *filename,
4284  unsigned long *filelen, int *flags)
4285 {
4286  return lws_get_fops(lws_get_context(wsi))->LWS_FOP_OPEN(wsi, filename,
4287  filelen, flags);
4288 }
4289 
4296 static LWS_INLINE int
4297 lws_plat_file_close(struct lws *wsi, lws_filefd_type fd)
4298 {
4299  return lws_get_fops(lws_get_context(wsi))->LWS_FOP_CLOSE(wsi, fd);
4300 }
4301 
4309 static LWS_INLINE unsigned long
4310 lws_plat_file_seek_cur(struct lws *wsi, lws_filefd_type fd, long offset)
4311 {
4312  return lws_get_fops(lws_get_context(wsi))->LWS_FOP_SEEK_CUR(wsi,
4313  fd, offset);
4314 }
4324 static LWS_INLINE int LWS_WARN_UNUSED_RESULT
4325 lws_plat_file_read(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
4326  unsigned char *buf, unsigned long len)
4327 {
4328  return lws_get_fops(lws_get_context(wsi))->LWS_FOP_READ(wsi, fd,
4329  amount, buf, len);
4330 }
4340 static LWS_INLINE int LWS_WARN_UNUSED_RESULT
4341 lws_plat_file_write(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
4342  unsigned char *buf, unsigned long len)
4343 {
4344  return lws_get_fops(lws_get_context(wsi))->LWS_FOP_WRITE(wsi, fd,
4345  amount, buf, len);
4346 }
4348 
4380 #ifdef LWS_WITH_SMTP
4381 
4393 };
4394 
4396 struct lws_email {
4397  void *data;
4399  uv_loop_t *loop;
4402  char email_smtp_ip[32];
4403  char email_helo[32];
4404  char email_from[100];
4405  char email_to[100];
4407  unsigned int max_content_size;
4410  /* Fill all the callbacks before init */
4411 
4412  int (*on_next)(struct lws_email *email);
4417  int (*on_sent)(struct lws_email *email);
4422  int (*on_get_body)(struct lws_email *email, char *buf, int len);
4428  /* private things */
4429  uv_timer_t timeout_email;
4431  uv_connect_t email_connect_req;
4432  uv_tcp_t email_client;
4434  char email_buf[256];
4435  char *content;
4436 };
4437 
4447 LWS_VISIBLE LWS_EXTERN int
4448 lws_email_init(struct lws_email *email, uv_loop_t *loop, int max_content);
4449 
4458 LWS_VISIBLE LWS_EXTERN void
4459 lws_email_check(struct lws_email *email);
4467 LWS_VISIBLE LWS_EXTERN void
4468 lws_email_destroy(struct lws_email *email);
4469 
4470 #endif
4471 
4472 
4473 #ifdef __cplusplus
4474 }
4475 #endif
4476 
4477 #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:4152
size_t rx_buffer_size
Definition: libwebsockets.h:1339
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:777
Definition: libwebsockets.h:905
LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_daemonize(const char *_lock_path)
int(* LWS_FOP_CLOSE)(struct lws *wsi, lws_filefd_type fd)
Definition: libwebsockets.h:4247
Definition: libwebsockets.h:2044
Definition: libwebsockets.h:3339
Definition: libwebsockets.h:4386
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:181
unsigned int auth_mask
Definition: libwebsockets.h:2079
Definition: libwebsockets.h:3362
void * data
Definition: libwebsockets.h:4397
const char * uri_replace_from
Definition: libwebsockets.h:2157
lws_callback_reasons
Definition: libwebsockets.h:670
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:1487
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:903
Definition: libwebsockets.h:1143
unsigned int id
Definition: libwebsockets.h:1348
LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_hdr_total_length(struct lws *wsi, enum lws_token_indexes h)
Definition: libwebsockets.h:1141
Definition: libwebsockets.h:808
LWS_VISIBLE LWS_EXTERN int lws_service_fd_tsi(struct lws_context *context, struct lws_pollfd *pollfd, int tsi)
LWS_VISIBLE LWS_EXTERN int lws_service_adjust_timeout(struct lws_context *context, int timeout_ms, 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)
LWS_VISIBLE LWS_EXTERN struct lws * lws_adopt_socket_vhost(struct lws_vhost *vh, lws_sockfd_type accept_fd)
Definition: libwebsockets.h:754
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:4417
Definition: libwebsockets.h:1482
struct lws ** pwsi
Definition: libwebsockets.h:2164
Definition: libwebsockets.h:788
const char * path
Definition: libwebsockets.h:2136
LWS_VISIBLE LWS_EXTERN size_t lws_remaining_packet_payload(struct lws *wsi)
Definition: libwebsockets.h:589
Definition: libwebsockets.h:1438
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)
const char * client_ssl_private_key_password
Definition: libwebsockets.h:1784
time_t email_connect_started
Definition: libwebsockets.h:4433
lws_close_status
Definition: libwebsockets.h:560
LWS_VISIBLE LWS_EXTERN int lws_callback_all_protocol(struct lws_context *context, const struct lws_protocols *protocol, int reason)
Definition: libwebsockets.h:600
int token_len
Definition: libwebsockets.h:2664
const struct lws_http_mount * mounts
Definition: libwebsockets.h:1730
Definition: libwebsockets.h:929
LWS_VISIBLE LWS_EXTERN struct lws_context *LWS_WARN_UNUSED_RESULT lws_get_context(const struct lws *wsi)
const char * value
Definition: libwebsockets.h:2033
Definition: libwebsockets.h:2984
Definition: libwebsockets.h:4391
const char * username
Definition: libwebsockets.h:1513
LWS_VISIBLE LWS_EXTERN struct lws * lws_client_connect_via_info(struct lws_client_connect_info *ccinfo)
const char * protocol
Definition: libwebsockets.h:2063
struct lws ** stdwsi
Definition: libwebsockets.h:4153
LWS_VISIBLE LWS_EXTERN int lws_json_dump_vhost(const struct lws_vhost *vh, char *buf, int len)
Definition: libwebsockets.h:875
LWS_VISIBLE LWS_EXTERN const char * lws_get_mimetype(const char *file, const struct lws_http_mount *m)
Definition: libwebsockets.h:1484
int cache_max_age
Definition: libwebsockets.h:2077
long ssl_options_clear
Definition: libwebsockets.h:1748
Definition: libwebsockets.h:768
Definition: libwebsockets.h:1616
const char * client_ssl_private_key_filepath
Definition: libwebsockets.h:1790
LWS_VISIBLE LWS_EXTERN void lws_context_destroy(struct lws_context *context)
Definition: libwebsockets.h:616
char * start
Definition: libwebsockets.h:2603
LWS_VISIBLE LWS_EXTERN int lws_snprintf(char *str, size_t size, const char *format,...) LWS_FORMAT(3)
LWS_VISIBLE LWS_EXTERN void lws_set_allocator(void *(*realloc)(void *ptr, size_t size))
lws_callback_function * callback
Definition: libwebsockets.h:1330
Definition: libwebsockets.h:3329
LWS_VISIBLE LWS_EXTERN void lws_context_deprecate(struct lws_context *context, lws_reload_func cb)
LWS_VISIBLE LWS_EXTERN int lws_get_socket_fd(struct lws *wsi)
Definition: libwebsockets.h:966
const char * protocol
Definition: libwebsockets.h:2142
Definition: libwebsockets.h:955
unsigned int pt_serv_buf_size
Definition: libwebsockets.h:1735
LWS_VISIBLE LWS_EXTERN struct lws * lws_adopt_socket(struct lws_context *context, lws_sockfd_type accept_fd)
int len
Definition: libwebsockets.h:2595
int ka_time
Definition: libwebsockets.h:1671
Definition: libwebsockets.h:1558
LWS_VISIBLE LWS_EXTERN int lws_callback_on_writable_all_protocol(const struct lws_context *context, const struct lws_protocols *protocol)
LWS_VISIBLE LWS_EXTERN void lws_set_log_level(int level, void(*log_emit_function)(int level, const char *line))
unsigned short ws_ping_pong_interval
Definition: libwebsockets.h:1750
int count_extensions
Definition: libwebsockets.h:1443
Definition: libwebsockets.h:3333
int port
Definition: libwebsockets.h:2132
struct lws_context * context
Definition: libwebsockets.h:2128
Definition: libwebsockets.h:1490
const char * client_ssl_cert_filepath
Definition: libwebsockets.h:1786
int ietf_version_or_minus_one
Definition: libwebsockets.h:2144
LWS_VISIBLE LWS_EXTERN int lws_callback_all_protocol_vhost(struct lws_vhost *vh, const struct lws_protocols *protocol, int reason)
Definition: libwebsockets.h:4384
Definition: libwebsockets.h:2029
LWS_VISIBLE LWS_EXTERN int lws_callback_on_writable(struct lws *wsi)
const char *const * vars
Definition: libwebsockets.h:2607
LWS_VISIBLE LWS_EXTERN SSL * lws_get_ssl(struct lws *wsi)
Definition: libwebsockets.h:568
Definition: libwebsockets.h:2127
Definition: libwebsockets.h:1588
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:1230
int len
Definition: libwebsockets.h:1166
Definition: libwebsockets.h:2054
const char * def
Definition: libwebsockets.h:2061
Definition: libwebsockets.h:729
Definition: libwebsockets.h:1570
lws_context_options
Definition: libwebsockets.h:1541
Definition: libwebsockets.h:907
Definition: libwebsockets.h:1507
Definition: libwebsockets.h:1576
Definition: libwebsockets.h:895
const char * option_name
Definition: libwebsockets.h:1163
Definition: libwebsockets.h:2042
lws_sockfd_type fd
Definition: libwebsockets.h:538
LWS_VISIBLE LWS_EXTERN int lws_json_dump_context(const struct lws_context *context, char *buf, int len, int hide_vhosts)
const char * ssl_private_key_password
Definition: libwebsockets.h:1639
short events
Definition: libwebsockets.h:393
Definition: libwebsockets.h:1451
const struct lws_extension * extensions
Definition: libwebsockets.h:1442
const struct lws_http_mount * mount_next
Definition: libwebsockets.h:2055
LWS_VISIBLE LWS_EXTERN void lws_set_timeout(struct lws *wsi, enum pending_timeout reason, int secs)
void * userdata
Definition: libwebsockets.h:2146
Definition: libwebsockets.h:726
Definition: libwebsockets.h:913
LWS_VISIBLE LWS_EXTERN int lws_service_tsi(struct lws_context *context, int timeout_ms, int tsi)
unsigned char * data
Definition: libwebsockets.h:4155
const struct lws_protocol_vhost_options * extra_mimetypes
Definition: libwebsockets.h:2070
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:719
LWS_VISIBLE LWS_EXTERN const char * lws_urlencode(char *escaped, const char *string, int len)
Definition: libwebsockets.h:800
uv_loop_t * loop
Definition: libwebsockets.h:4399
Definition: libwebsockets.h:898
Definition: libwebsockets.h:3365
int pos
Definition: libwebsockets.h:2605
struct lws_plugin * list
Definition: libwebsockets.h:1452
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:1691
LWS_VISIBLE LWS_EXTERN int lws_spa_process(struct lws_spa *spa, const char *in, int len)
const char * client_ssl_cipher_list
Definition: libwebsockets.h:1798
void * provided_client_ssl_ctx
Definition: libwebsockets.h:1688
LWS_VISIBLE LWS_EXTERN struct lws_vhost * lws_get_vhost(struct lws *wsi)
LWS_VISIBLE LWS_EXTERN void lwsl_emit_syslog(int level, const char *line)
const struct lws_protocols * protocols
Definition: libwebsockets.h:1440
Definition: libwebsockets.h:1142
int ka_probes
Definition: libwebsockets.h:1674
const char * origin
Definition: libwebsockets.h:2140
SHORT revents
Definition: libwebsockets.h:375
const char * method
Definition: libwebsockets.h:2150
LWS_VISIBLE LWS_EXTERN const char * lws_spa_get_string(struct lws_spa *spa, int n)
Definition: libwebsockets.h:1236
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:935
unsigned char origin_protocol
Definition: libwebsockets.h:2086
const char * log_filepath
Definition: libwebsockets.h:1727
Definition: libwebsockets.h:775
unsigned int max_content_size
Definition: libwebsockets.h:4407
int option_index
Definition: libwebsockets.h:1164
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:771
const char * uri_replace_to
Definition: libwebsockets.h:2160
struct lws * parent_wsi
Definition: libwebsockets.h:2153
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:4430
LWS_VISIBLE LWS_EXTERN int lws_spa_finalize(struct lws_spa *spa)
Definition: libwebsockets.h:671
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:1718
char name[64]
Definition: libwebsockets.h:1458
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:4434
LWS_VISIBLE LWS_EXTERN int lws_is_ssl(struct lws *wsi)
Definition: libwebsockets.h:1547
uv_lib_t lib
Definition: libwebsockets.h:1454
x509_crt certificate
Definition: libwebsockets.h:183
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:4385
LWS_VISIBLE LWS_EXTERN int lws_is_cgi(struct lws *wsi)
int ssl_connection
Definition: libwebsockets.h:2134
Definition: libwebsockets.h:1506
SSL_CTX * provided_client_ssl_ctx
Definition: libwebsockets.h:1682
LWS_VISIBLE LWS_EXTERN int lws_rx_flow_control(struct lws *wsi, int enable)
Definition: libwebsockets.h:2593
LWS_VISIBLE LWS_EXTERN struct lws_plat_file_ops *LWS_WARN_UNUSED_RESULT lws_get_fops(struct lws_context *context)
Definition: libwebsockets.h:537
const struct lws_protocol_vhost_options * cgienv
Definition: libwebsockets.h:2066
const char * name
Definition: libwebsockets.h:2032
unsigned char mountpoint_len
Definition: libwebsockets.h:2087
Definition: libwebsockets.h:3336
Definition: libwebsockets.h:1565
lws_sockfd_type fd
Definition: libwebsockets.h:373
Definition: libwebsockets.h:2043
LWS_VISIBLE LWS_EXTERN int lws_is_final_fragment(struct lws *wsi)
const struct lws_extension * extensions
Definition: libwebsockets.h:1633
lws_filefd_type(* LWS_FOP_OPEN)(struct lws *wsi, const char *filename, unsigned long *filelen, int *flags)
Definition: libwebsockets.h:4237
Definition: libwebsockets.h:1549
LWS_VISIBLE LWS_EXTERN void * lws_protocol_vh_priv_zalloc(struct lws_vhost *vhost, const struct lws_protocols *prot, int size)
Definition: libwebsockets.h:1554
lws_ext_options_types
Definition: libwebsockets.h:1140
const struct lws_protocols * protocols
Definition: libwebsockets.h:1629
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)
Definition: libwebsockets.h:1059
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:1165
Definition: libwebsockets.h:1055
const char * ssl_cipher_list
Definition: libwebsockets.h:1653
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:2057
const char * http_proxy_address
Definition: libwebsockets.h:1657
rsa_context key
Definition: libwebsockets.h:184
const char * ssl_cert_filepath
Definition: libwebsockets.h:1641
const char * ecdh_curve
Definition: libwebsockets.h:1712
int cgi_timeout
Definition: libwebsockets.h:2075
Definition: libwebsockets.h:2045
Definition: libwebsockets.h:1491
Definition: libwebsockets.h:391
Definition: libwebsockets.h:594
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 int lwsl_visible(int level)
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:739
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:773
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:1574
LWS_VISIBLE LWS_EXTERN int lws_http_client_read(struct lws *wsi, char **buf, int *len)
LWS_VISIBLE LWS_EXTERN int lwsl_timestamp(int level, char *p, int len)
Definition: libwebsockets.h:1057
Definition: libwebsockets.h:1011
Definition: libwebsockets.h:1586
uv_timer_t timeout_email
Definition: libwebsockets.h:4429
Definition: libwebsockets.h:1556
short max_http_header_pool
Definition: libwebsockets.h:1694
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:2594
x509_crt ca
Definition: libwebsockets.h:182
size_t per_session_data_size
Definition: libwebsockets.h:1334
Definition: libwebsockets.h:578
const struct lws_protocol_vhost_options * reject_service_keywords
Definition: libwebsockets.h:1766
lwsgs_smtp_states
Definition: libwebsockets.h:4383
Definition: libwebsockets.h:1568
Definition: libwebsockets.h:851
LWS_VISIBLE LWS_EXTERN struct lws * lws_adopt_socket_vhost_readbuf(struct lws_vhost *vhost, lws_sockfd_type accept_fd, const char *readbuf, size_t len)
Definition: libwebsockets.h:737
Definition: libwebsockets.h:1326
Definition: libwebsockets.h:583
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:1701
const char * email
Definition: libwebsockets.h:1514
LWS_VISIBLE LWS_EXTERN int lws_get_random(struct lws_context *context, void *buf, int len)
Definition: libwebsockets.h:565
uv_connect_t email_connect_req
Definition: libwebsockets.h:4431
const char * server_string
Definition: libwebsockets.h:1732
Definition: libwebsockets.h:1579
SHORT events
Definition: libwebsockets.h:374
Definition: libwebsockets.h:742
Definition: libwebsockets.h:1563
const char * vhost_name
Definition: libwebsockets.h:1714
Definition: libwebsockets.h:2046
LWS_VISIBLE LWS_EXTERN const struct lws_protocols * lws_get_protocol(struct lws *wsi)
Definition: libwebsockets.h:1489
Definition: libwebsockets.h:1511
unsigned int fd_limit_per_thread
Definition: libwebsockets.h:1703
LWS_VISIBLE LWS_EXTERN int lws_cgi_write_split_stdout_headers(struct lws *wsi)
lws_gs_event
Definition: libwebsockets.h:1505
LWS_VISIBLE LWS_EXTERN int lws_finalize_startup(struct lws_context *context)
int(* LWS_FOP_WRITE)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount, unsigned char *buf, unsigned long len)
Definition: libwebsockets.h:4256
int ka_interval
Definition: libwebsockets.h:1678
Definition: libwebsockets.h:1488
int uid
Definition: libwebsockets.h:1664
Definition: libwebsockets.h:2986
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:1327
LWS_VISIBLE LWS_EXTERN int lws_init_vhost_client_ssl(const struct lws_context_creation_info *info, struct lws_vhost *vhost)
Definition: libwebsockets.h:1061
Definition: libwebsockets.h:4389
unsigned int http_proxy_port
Definition: libwebsockets.h:1660
LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_partial_buffered(struct lws *wsi)
unsigned int timeout_secs
Definition: libwebsockets.h:1707
int port
Definition: libwebsockets.h:1617
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:1666
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:2031
int prev_events
Definition: libwebsockets.h:540
int keepalive_timeout
Definition: libwebsockets.h:1724
Definition: libwebsockets.h:1495
Definition: libwebsockets.h:1153
const struct lws_protocol_vhost_options * headers
Definition: libwebsockets.h:1762
Definition: libwebsockets.h:2783
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:1721
const char * basic_auth_login_file
Definition: libwebsockets.h:2089
const char * host
Definition: libwebsockets.h:2138
Definition: libwebsockets.h:1162
Definition: libwebsockets.h:604
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:4157
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:1622
Definition: libwebsockets.h:4236
LWS_VISIBLE LWS_EXTERN void lwsl_hexdump(void *buf, size_t len)
Definition: libwebsockets.h:1016
lws_spa_fileupload_states
Definition: libwebsockets.h:2981
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:562
Definition: libwebsockets.h:571
LWS_VISIBLE LWS_EXTERN const char * lws_sql_purify(char *escaped, const char *string, int len)
uv_tcp_t email_client
Definition: libwebsockets.h:4432
Definition: libwebsockets.h:372
Definition: libwebsockets.h:675
lws_write_protocol
Definition: libwebsockets.h:3328
const char * client_offer
Definition: libwebsockets.h:1239
LWS_VISIBLE LWS_EXTERN void lws_cancel_service(struct lws_context *context)
Definition: libwebsockets.h:2982
unsigned long(* LWS_FOP_SEEK_CUR)(struct lws *wsi, lws_filefd_type fd, long offset_from_cur_pos)
Definition: libwebsockets.h:4249
Definition: libwebsockets.h:576
Definition: libwebsockets.h:476
const char * origin
Definition: libwebsockets.h:2059
const char * name
Definition: libwebsockets.h:1154
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:752
const char * name
Definition: libwebsockets.h:1237
Definition: libwebsockets.h:4388
short revents
Definition: libwebsockets.h:394
lws_extension_callback_function * callback
Definition: libwebsockets.h:1238
long ssl_options_set
Definition: libwebsockets.h:1746
Definition: libwebsockets.h:1066
LWS_VISIBLE LWS_EXTERN const struct lws_protocols * lws_protocol_get(struct lws *wsi) LWS_WARN_DEPRECATED
unsigned int mask
Definition: libwebsockets.h:1499
LWS_VISIBLE LWS_EXTERN int lws_email_init(struct lws_email *email, uv_loop_t *loop, int max_content)
const void * client_exts
Definition: libwebsockets.h:2148
lws_mount_protocols
Definition: libwebsockets.h:2040
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)
const char * client_ssl_ca_filepath
Definition: libwebsockets.h:1796
lws_sockfd_type fd
Definition: libwebsockets.h:392
unsigned int max_http_header_data2
Definition: libwebsockets.h:1741
Definition: libwebsockets.h:2041
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:2072
void * external_baggage_free_on_destroy
Definition: libwebsockets.h:1773
LWS_VISIBLE LWS_EXTERN int lws_service(struct lws_context *context, int timeout_ms)
Definition: libwebsockets.h:1561
LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_http_transaction_completed(struct lws *wsi)
int count_vars
Definition: libwebsockets.h:2608
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:2662
LWS_VISIBLE LWS_EXTERN struct lws_context * lws_create_context(struct lws_context_creation_info *info)
Definition: libwebsockets.h:731
void * data
Definition: libwebsockets.h:2606
char * content
Definition: libwebsockets.h:4435
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:1636
Definition: libwebsockets.h:4396
const char * address
Definition: libwebsockets.h:2130
void * user
Definition: libwebsockets.h:1355
int events
Definition: libwebsockets.h:539
LWS_VISIBLE LWS_EXTERN unsigned int lws_http_client_http_response(struct lws *wsi)
int(* on_get_body)(struct lws_email *email, char *buf, int len)
Definition: libwebsockets.h:4422
Definition: libwebsockets.h:2047
void * user
Definition: libwebsockets.h:1668
Definition: libwebsockets.h:4392
Definition: libwebsockets.h:3351
char * token
Definition: libwebsockets.h:2663
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:1441
void * l
Definition: libwebsockets.h:1456
const char * ssl_private_key_filepath
Definition: libwebsockets.h:1645
Definition: libwebsockets.h:1594
int max_len
Definition: libwebsockets.h:2596
Definition: libwebsockets.h:733
const struct lws_protocol_vhost_options * next
Definition: libwebsockets.h:2030
Definition: libwebsockets.h:744
LWS_VISIBLE LWS_EXTERN void lws_rx_flow_allow_all_protocol(const struct lws_context *context, const struct lws_protocols *protocol)
Definition: libwebsockets.h:2602
LWS_VISIBLE LWS_EXTERN const char *LWS_WARN_UNUSED_RESULT lws_canonical_hostname(struct lws_context *context)
Definition: libwebsockets.h:943
const char * ssl_ca_filepath
Definition: libwebsockets.h:1651
int(* LWS_FOP_READ)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount, unsigned char *buf, unsigned long len)
Definition: libwebsockets.h:4252
lws_client_connect_ssl_connection_flags
Definition: libwebsockets.h:2117
int gid
Definition: libwebsockets.h:1662
struct lws_vhost * vhost
Definition: libwebsockets.h:2162
int lws_callback_function(struct lws *wsi, enum lws_callback_reasons reason, void *user, void *in, size_t len)
Definition: libwebsockets.h:1088
LWS_VISIBLE LWS_EXTERN void lws_cancel_service_pt(struct lws *wsi)
Definition: libwebsockets.h:1581
Definition: libwebsockets.h:612
Definition: libwebsockets.h:4387
unsigned int api_magic
Definition: libwebsockets.h:1439
Definition: libwebsockets.h:1584
LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_send_pipe_choked(struct lws *wsi)
Definition: libwebsockets.h:4390
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:3003