#include <mstcpip.h>
#include <io.h>
+#if !defined(LWS_HAVE_ATOLL)
+#if defined(LWS_HAVE__ATOI64)
+#define atoll _atoi64
+#else
+#warning No atoll or _atoi64 available, using atoi
+#define atoll atoi
+#endif
+#endif
+
#ifndef __func__
#define __func__ __FUNCTION__
#endif
struct lws *lserv_wsi;
const char *name;
const char *iface;
+#if !defined(LWS_WITH_ESP8266) && !defined(LWS_WITH_ESP32) && !defined(OPTEE_TA) && !defined(WIN32)
+ int bind_iface;
+#endif
const struct lws_protocols *protocols;
void **protocol_vh_privs;
const struct lws_protocol_vhost_options *pvo;
int ka_probes;
int ka_interval;
int keepalive_timeout;
+ int ssl_info_event_mask;
#ifdef LWS_WITH_ACCESS_LOG
int log_fd;
#endif
const struct lws_protocol_vhost_options *reject_service_keywords;
lws_reload_func deprecation_cb;
+#if defined(LWS_HAVE_SYS_CAPABILITY_H) && defined(LWS_HAVE_LIBCAP)
+ cap_value_t caps[4];
+ char count_caps;
+#endif
+
#if defined(LWS_USE_LIBEV)
lws_ev_signal_cb_t * lws_ev_sigint_cb;
#endif
lws_close_free_wsi_final(struct lws *wsi);
LWS_EXTERN void
lws_libuv_closehandle(struct lws *wsi);
+LWS_EXTERN void
+lws_libuv_closehandle_manually(struct lws *wsi);
+LWS_EXTERN int
+lws_libuv_check_watcher_active(struct lws *wsi);
LWS_VISIBLE LWS_EXTERN int
lws_plat_plugins_init(struct lws_context * context, const char * const *d);
#else
#define LWS_UNIX_SOCK_ENABLED(vhost) (0)
#endif
+
+typedef union {
+#ifdef LWS_USE_IPV6
+ struct sockaddr_in6 sa6;
+#endif
+ struct sockaddr_in sa4;
+} sockaddr46;
+
enum uri_path_states {
URIPS_IDLE,
URIPS_SEEN_SLASH,
char origin[256];
char protocol[256];
char method[16];
+ char iface[16];
};
#endif
enum http_version request_version;
enum http_connection_type connection_type;
- unsigned int content_length;
- unsigned int content_remain;
+ lws_filepos_t content_length;
+ lws_filepos_t content_remain;
};
#ifdef LWS_USE_HTTP2
#ifdef LWS_WITH_CGI
+enum {
+ SIGNIFICANT_HDR_CONTENT_LENGTH,
+ SIGNIFICANT_HDR_LOCATION,
+ SIGNIFICANT_HDR_STATUS,
+ SIGNIFICANT_HDR_TRANSFER_ENCODING,
+
+ SIGNIFICANT_HDR_COUNT
+};
+
/* wsi who is master of the cgi points to an lws_cgi */
struct lws_cgi {
struct lws_cgi *cgi_list;
struct lws *stdwsi[3]; /* points to the associated stdin/out/err wsis */
struct lws *wsi; /* owner */
- unsigned long content_length;
- unsigned long content_length_seen;
+ unsigned char *headers_buf;
+ unsigned char *headers_pos;
+ unsigned char *headers_dumped;
+ unsigned char *headers_end;
+ lws_filepos_t content_length;
+ lws_filepos_t content_length_seen;
int pipe_fds[3][2];
+ int match[SIGNIFICANT_HDR_COUNT];
int pid;
+ int response_code;
+ int lp;
+ char l[12];
unsigned int being_closed:1;
+ unsigned int explicitly_chunked:1;
unsigned char chunked_grace;
};
unsigned int sending_chunked:1;
unsigned int already_did_cce:1;
unsigned int told_user_closed:1;
+ unsigned int ipv6:1;
#if defined(LWS_WITH_ESP8266)
unsigned int pending_send_completion:3;
lws_socket_bind(struct lws_vhost *vhost, lws_sockfd_type sockfd, int port,
const char *iface);
+#if defined(LWS_USE_IPV6)
+LWS_EXTERN unsigned long
+lws_get_addr_scope(const char *ipaddr);
+#endif
+
LWS_EXTERN void
lws_close_free_wsi(struct lws *wsi, enum lws_close_status);
LWS_EXTERN int
lws_context_init_client_ssl(struct lws_context_creation_info *info,
struct lws_vhost *vhost);
+
+LWS_EXTERN void
+lws_ssl_info_callback(const SSL *ssl, int where, int ret);
+
#else
#define lws_context_init_client_ssl(_a, _b) (0)
#endif
time_in_microseconds(void);
LWS_EXTERN const char * LWS_WARN_UNUSED_RESULT
lws_plat_inet_ntop(int af, const void *src, char *dst, int cnt);
+LWS_EXTERN int LWS_WARN_UNUSED_RESULT
+lws_plat_inet_pton(int af, const char *src, void *dst);
LWS_EXTERN int LWS_WARN_UNUSED_RESULT
lws_check_utf8(unsigned char *state, unsigned char *buf, size_t len);