libwebsockets
Lightweight C library for HTML5 websockets
libwebsockets.h File Reference

Go to the source code of this file.

Data Structures

class  lws_conn
 
class  lws_conn_listener
 
struct  lws_polarssl_context
 
struct  lws_pollfd
 
struct  pollfd
 
struct  pollfd
 
struct  lws_pollargs
 
struct  lws_ext_options
 
struct  lws_ext_option_arg
 
struct  lws_extension
 
struct  lws_protocols
 
struct  lws_plugin_capability
 
struct  lws_plugin
 
struct  lwsgw_hash_bin
 
struct  lwsgw_hash
 
struct  lws_session_info
 
struct  lws_gs_event_args
 
struct  lws_context_creation_info
 
struct  lws_protocol_vhost_options
 
struct  lws_http_mount
 
struct  lws_client_connect_info
 
struct  lws_process_html_args
 
struct  lws_process_html_state
 
struct  lws_tokens
 
struct  lws_token_limits
 
struct  lws_cgi_args
 
struct  lws_plat_file_ops
 
struct  lws_email
 

Typedefs

typedef struct lws_polarssl_context SSL_CTX
 
typedef ssl_context SSL
 
typedef SOCKET lws_sockfd_type
 
typedef HANDLE lws_filefd_type
 
typedef os_timer_t uv_timer_t
 
typedef void uv_cb_t(uv_timer_t *)
 
typedef int lws_callback_function(struct lws *wsi, enum lws_callback_reasons reason, void *user, void *in, size_t len)
 
typedef 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)
 
typedef int(* lws_plugin_init_func) (struct lws_context *, struct lws_plugin_capability *)
 
typedef int(* lws_plugin_destroy_func) (struct lws_context *)
 
typedef const char *(* lws_process_html_state_cb) (void *data, int index)
 
typedef int(* lws_spa_fileupload_cb) (void *data, const char *name, const char *filename, char *buf, int len, enum lws_spa_fileupload_states state)
 
typedef void() lws_ev_signal_cb_t(EV_P_ struct ev_signal *w, int revents)
 

Enumerations

enum  lws_log_levels {
  LLL_ERR = 1 << 0, LLL_WARN = 1 << 1, LLL_NOTICE = 1 << 2, LLL_INFO = 1 << 3,
  LLL_DEBUG = 1 << 4, LLL_PARSER = 1 << 5, LLL_HEADER = 1 << 6, LLL_EXT = 1 << 7,
  LLL_CLIENT = 1 << 8, LLL_LATENCY = 1 << 9, LLL_COUNT = 10
}
 
enum  lws_close_status {
  LWS_CLOSE_STATUS_NOSTATUS = 0, LWS_CLOSE_STATUS_NORMAL = 1000, LWS_CLOSE_STATUS_GOINGAWAY = 1001, LWS_CLOSE_STATUS_PROTOCOL_ERR = 1002,
  LWS_CLOSE_STATUS_UNACCEPTABLE_OPCODE = 1003, LWS_CLOSE_STATUS_RESERVED = 1004, LWS_CLOSE_STATUS_NO_STATUS = 1005, LWS_CLOSE_STATUS_ABNORMAL_CLOSE = 1006,
  LWS_CLOSE_STATUS_INVALID_PAYLOAD = 1007, LWS_CLOSE_STATUS_POLICY_VIOLATION = 1008, LWS_CLOSE_STATUS_MESSAGE_TOO_LARGE = 1009, LWS_CLOSE_STATUS_EXTENSION_REQUIRED = 1010,
  LWS_CLOSE_STATUS_UNEXPECTED_CONDITION = 1011, LWS_CLOSE_STATUS_TLS_FAILURE = 1015, LWS_CLOSE_STATUS_NOSTATUS_CONTEXT_DESTROY = 9999
}
 
enum  lws_callback_reasons {
  LWS_CALLBACK_ESTABLISHED = 0, LWS_CALLBACK_CLIENT_CONNECTION_ERROR = 1, LWS_CALLBACK_CLIENT_FILTER_PRE_ESTABLISH = 2, LWS_CALLBACK_CLIENT_ESTABLISHED = 3,
  LWS_CALLBACK_CLOSED = 4, LWS_CALLBACK_CLOSED_HTTP = 5, LWS_CALLBACK_RECEIVE = 6, LWS_CALLBACK_RECEIVE_PONG = 7,
  LWS_CALLBACK_CLIENT_RECEIVE = 8, LWS_CALLBACK_CLIENT_RECEIVE_PONG = 9, LWS_CALLBACK_CLIENT_WRITEABLE = 10, LWS_CALLBACK_SERVER_WRITEABLE = 11,
  LWS_CALLBACK_HTTP = 12, LWS_CALLBACK_HTTP_BODY = 13, LWS_CALLBACK_HTTP_BODY_COMPLETION = 14, LWS_CALLBACK_HTTP_FILE_COMPLETION = 15,
  LWS_CALLBACK_HTTP_WRITEABLE = 16, LWS_CALLBACK_FILTER_NETWORK_CONNECTION = 17, LWS_CALLBACK_FILTER_HTTP_CONNECTION = 18, LWS_CALLBACK_SERVER_NEW_CLIENT_INSTANTIATED = 19,
  LWS_CALLBACK_FILTER_PROTOCOL_CONNECTION = 20, LWS_CALLBACK_OPENSSL_LOAD_EXTRA_CLIENT_VERIFY_CERTS = 21, LWS_CALLBACK_OPENSSL_LOAD_EXTRA_SERVER_VERIFY_CERTS = 22, LWS_CALLBACK_OPENSSL_PERFORM_CLIENT_CERT_VERIFICATION = 23,
  LWS_CALLBACK_CLIENT_APPEND_HANDSHAKE_HEADER = 24, LWS_CALLBACK_CONFIRM_EXTENSION_OKAY = 25, LWS_CALLBACK_CLIENT_CONFIRM_EXTENSION_SUPPORTED = 26, LWS_CALLBACK_PROTOCOL_INIT = 27,
  LWS_CALLBACK_PROTOCOL_DESTROY = 28, LWS_CALLBACK_WSI_CREATE = 29, LWS_CALLBACK_WSI_DESTROY = 30, LWS_CALLBACK_GET_THREAD_ID = 31,
  LWS_CALLBACK_ADD_POLL_FD = 32, LWS_CALLBACK_DEL_POLL_FD = 33, LWS_CALLBACK_CHANGE_MODE_POLL_FD = 34, LWS_CALLBACK_LOCK_POLL = 35,
  LWS_CALLBACK_UNLOCK_POLL = 36, LWS_CALLBACK_OPENSSL_CONTEXT_REQUIRES_PRIVATE_KEY = 37, LWS_CALLBACK_WS_PEER_INITIATED_CLOSE = 38, LWS_CALLBACK_WS_EXT_DEFAULTS = 39,
  LWS_CALLBACK_CGI = 40, LWS_CALLBACK_CGI_TERMINATED = 41, LWS_CALLBACK_CGI_STDIN_DATA = 42, LWS_CALLBACK_CGI_STDIN_COMPLETED = 43,
  LWS_CALLBACK_ESTABLISHED_CLIENT_HTTP = 44, LWS_CALLBACK_CLOSED_CLIENT_HTTP = 45, LWS_CALLBACK_RECEIVE_CLIENT_HTTP = 46, LWS_CALLBACK_COMPLETED_CLIENT_HTTP = 47,
  LWS_CALLBACK_RECEIVE_CLIENT_HTTP_READ = 48, LWS_CALLBACK_HTTP_BIND_PROTOCOL = 49, LWS_CALLBACK_HTTP_DROP_PROTOCOL = 50, LWS_CALLBACK_CHECK_ACCESS_RIGHTS = 51,
  LWS_CALLBACK_PROCESS_HTML = 52, LWS_CALLBACK_ADD_HEADERS = 53, LWS_CALLBACK_SESSION_INFO = 54, LWS_CALLBACK_GS_EVENT = 55,
  LWS_CALLBACK_HTTP_PMO = 56, LWS_CALLBACK_CLIENT_HTTP_WRITEABLE = 57, LWS_CALLBACK_USER = 1000
}
 
enum  lws_extension_callback_reasons {
  LWS_EXT_CB_SERVER_CONTEXT_CONSTRUCT = 0, LWS_EXT_CB_CLIENT_CONTEXT_CONSTRUCT = 1, LWS_EXT_CB_SERVER_CONTEXT_DESTRUCT = 2, LWS_EXT_CB_CLIENT_CONTEXT_DESTRUCT = 3,
  LWS_EXT_CB_CONSTRUCT = 4, LWS_EXT_CB_CLIENT_CONSTRUCT = 5, LWS_EXT_CB_CHECK_OK_TO_REALLY_CLOSE = 6, LWS_EXT_CB_CHECK_OK_TO_PROPOSE_EXTENSION = 7,
  LWS_EXT_CB_DESTROY = 8, LWS_EXT_CB_DESTROY_ANY_WSI_CLOSING = 9, LWS_EXT_CB_ANY_WSI_ESTABLISHED = 10, LWS_EXT_CB_PACKET_RX_PREPARSE = 11,
  LWS_EXT_CB_PACKET_TX_PRESEND = 12, LWS_EXT_CB_PACKET_TX_DO_SEND = 13, LWS_EXT_CB_HANDSHAKE_REPLY_TX = 14, LWS_EXT_CB_FLUSH_PENDING_TX = 15,
  LWS_EXT_CB_EXTENDED_PAYLOAD_RX = 16, LWS_EXT_CB_CAN_PROXY_CLIENT_CONNECTION = 17, LWS_EXT_CB_1HZ = 18, LWS_EXT_CB_REQUEST_ON_WRITEABLE = 19,
  LWS_EXT_CB_IS_WRITEABLE = 20, LWS_EXT_CB_PAYLOAD_TX = 21, LWS_EXT_CB_PAYLOAD_RX = 22, LWS_EXT_CB_OPTION_DEFAULT = 23,
  LWS_EXT_CB_OPTION_SET = 24, LWS_EXT_CB_OPTION_CONFIRM = 25, LWS_EXT_CB_NAMED_OPTION_SET = 26
}
 
enum  lws_ext_options_types { EXTARG_NONE, EXTARG_DEC, EXTARG_OPT_DEC }
 
enum  lwsgs_auth_bits { LWSGS_AUTH_LOGGED_IN = 1, LWSGS_AUTH_ADMIN = 2, LWSGS_AUTH_VERIFIED = 4, LWSGS_AUTH_FORGOT_FLOW = 8 }
 
enum  lws_gs_event { LWSGSE_CREATED, LWSGSE_DELETED }
 
enum  lws_context_options {
  LWS_SERVER_OPTION_REQUIRE_VALID_OPENSSL_CLIENT_CERT, LWS_SERVER_OPTION_SKIP_SERVER_CANONICAL_NAME = (1 << 2), LWS_SERVER_OPTION_ALLOW_NON_SSL_ON_SSL_PORT, LWS_SERVER_OPTION_LIBEV = (1 << 4),
  LWS_SERVER_OPTION_DISABLE_IPV6 = (1 << 5), LWS_SERVER_OPTION_DISABLE_OS_CA_CERTS = (1 << 6), LWS_SERVER_OPTION_PEER_CERT_NOT_REQUIRED = (1 << 7), LWS_SERVER_OPTION_VALIDATE_UTF8 = (1 << 8),
  LWS_SERVER_OPTION_SSL_ECDH, LWS_SERVER_OPTION_LIBUV = (1 << 10), LWS_SERVER_OPTION_REDIRECT_HTTP_TO_HTTPS, LWS_SERVER_OPTION_DO_SSL_GLOBAL_INIT = (1 << 12),
  LWS_SERVER_OPTION_EXPLICIT_VHOSTS = (1 << 13), LWS_SERVER_OPTION_UNIX_SOCK = (1 << 14), LWS_SERVER_OPTION_STS = (1 << 15), LWS_SERVER_OPTION_IPV6_V6ONLY_MODIFY = (1 << 16),
  LWS_SERVER_OPTION_IPV6_V6ONLY_VALUE = (1 << 17), LWS_SERVER_OPTION_UV_NO_SIGSEGV_SIGFPE_SPIN = (1 << 18)
}
 
enum  lws_mount_protocols {
  LWSMPRO_HTTP = 0, LWSMPRO_HTTPS = 1, LWSMPRO_FILE = 2, LWSMPRO_CGI = 3,
  LWSMPRO_REDIR_HTTP = 4, LWSMPRO_REDIR_HTTPS = 5, LWSMPRO_CALLBACK = 6
}
 
enum  lws_client_connect_ssl_connection_flags { LCCSCF_USE_SSL = (1 << 0), LCCSCF_ALLOW_SELFSIGNED = (1 << 1), LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK = (1 << 2) }
 
enum  http_status {
  HTTP_STATUS_OK = 200, HTTP_STATUS_NO_CONTENT = 204, HTTP_STATUS_MOVED_PERMANENTLY = 301, HTTP_STATUS_FOUND = 302,
  HTTP_STATUS_SEE_OTHER = 303, HTTP_STATUS_BAD_REQUEST = 400, HTTP_STATUS_UNAUTHORIZED, HTTP_STATUS_PAYMENT_REQUIRED,
  HTTP_STATUS_FORBIDDEN, HTTP_STATUS_NOT_FOUND, HTTP_STATUS_METHOD_NOT_ALLOWED, HTTP_STATUS_NOT_ACCEPTABLE,
  HTTP_STATUS_PROXY_AUTH_REQUIRED, HTTP_STATUS_REQUEST_TIMEOUT, HTTP_STATUS_CONFLICT, HTTP_STATUS_GONE,
  HTTP_STATUS_LENGTH_REQUIRED, HTTP_STATUS_PRECONDITION_FAILED, HTTP_STATUS_REQ_ENTITY_TOO_LARGE, HTTP_STATUS_REQ_URI_TOO_LONG,
  HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE, HTTP_STATUS_REQ_RANGE_NOT_SATISFIABLE, HTTP_STATUS_EXPECTATION_FAILED, HTTP_STATUS_INTERNAL_SERVER_ERROR = 500,
  HTTP_STATUS_NOT_IMPLEMENTED, HTTP_STATUS_BAD_GATEWAY, HTTP_STATUS_SERVICE_UNAVAILABLE, HTTP_STATUS_GATEWAY_TIMEOUT,
  HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED
}
 
enum  lws_token_indexes {
  WSI_TOKEN_GET_URI = 0, WSI_TOKEN_POST_URI = 1, WSI_TOKEN_OPTIONS_URI = 2, WSI_TOKEN_HOST = 3,
  WSI_TOKEN_CONNECTION = 4, WSI_TOKEN_UPGRADE = 5, WSI_TOKEN_ORIGIN = 6, WSI_TOKEN_DRAFT = 7,
  WSI_TOKEN_CHALLENGE = 8, WSI_TOKEN_EXTENSIONS = 9, WSI_TOKEN_KEY1 = 10, WSI_TOKEN_KEY2 = 11,
  WSI_TOKEN_PROTOCOL = 12, WSI_TOKEN_ACCEPT = 13, WSI_TOKEN_NONCE = 14, WSI_TOKEN_HTTP = 15,
  WSI_TOKEN_HTTP2_SETTINGS = 16, WSI_TOKEN_HTTP_ACCEPT = 17, WSI_TOKEN_HTTP_AC_REQUEST_HEADERS = 18, WSI_TOKEN_HTTP_IF_MODIFIED_SINCE = 19,
  WSI_TOKEN_HTTP_IF_NONE_MATCH = 20, WSI_TOKEN_HTTP_ACCEPT_ENCODING = 21, WSI_TOKEN_HTTP_ACCEPT_LANGUAGE = 22, WSI_TOKEN_HTTP_PRAGMA = 23,
  WSI_TOKEN_HTTP_CACHE_CONTROL = 24, WSI_TOKEN_HTTP_AUTHORIZATION = 25, WSI_TOKEN_HTTP_COOKIE = 26, WSI_TOKEN_HTTP_CONTENT_LENGTH = 27,
  WSI_TOKEN_HTTP_CONTENT_TYPE = 28, WSI_TOKEN_HTTP_DATE = 29, WSI_TOKEN_HTTP_RANGE = 30, WSI_TOKEN_HTTP_REFERER = 31,
  WSI_TOKEN_KEY = 32, WSI_TOKEN_VERSION = 33, WSI_TOKEN_SWORIGIN = 34, WSI_TOKEN_HTTP_COLON_AUTHORITY = 35,
  WSI_TOKEN_HTTP_COLON_METHOD = 36, WSI_TOKEN_HTTP_COLON_PATH = 37, WSI_TOKEN_HTTP_COLON_SCHEME = 38, WSI_TOKEN_HTTP_COLON_STATUS = 39,
  WSI_TOKEN_HTTP_ACCEPT_CHARSET = 40, WSI_TOKEN_HTTP_ACCEPT_RANGES = 41, WSI_TOKEN_HTTP_ACCESS_CONTROL_ALLOW_ORIGIN = 42, WSI_TOKEN_HTTP_AGE = 43,
  WSI_TOKEN_HTTP_ALLOW = 44, WSI_TOKEN_HTTP_CONTENT_DISPOSITION = 45, WSI_TOKEN_HTTP_CONTENT_ENCODING = 46, WSI_TOKEN_HTTP_CONTENT_LANGUAGE = 47,
  WSI_TOKEN_HTTP_CONTENT_LOCATION = 48, WSI_TOKEN_HTTP_CONTENT_RANGE = 49, WSI_TOKEN_HTTP_ETAG = 50, WSI_TOKEN_HTTP_EXPECT = 51,
  WSI_TOKEN_HTTP_EXPIRES = 52, WSI_TOKEN_HTTP_FROM = 53, WSI_TOKEN_HTTP_IF_MATCH = 54, WSI_TOKEN_HTTP_IF_RANGE = 55,
  WSI_TOKEN_HTTP_IF_UNMODIFIED_SINCE = 56, WSI_TOKEN_HTTP_LAST_MODIFIED = 57, WSI_TOKEN_HTTP_LINK = 58, WSI_TOKEN_HTTP_LOCATION = 59,
  WSI_TOKEN_HTTP_MAX_FORWARDS = 60, WSI_TOKEN_HTTP_PROXY_AUTHENTICATE = 61, WSI_TOKEN_HTTP_PROXY_AUTHORIZATION = 62, WSI_TOKEN_HTTP_REFRESH = 63,
  WSI_TOKEN_HTTP_RETRY_AFTER = 64, WSI_TOKEN_HTTP_SERVER = 65, WSI_TOKEN_HTTP_SET_COOKIE = 66, WSI_TOKEN_HTTP_STRICT_TRANSPORT_SECURITY = 67,
  WSI_TOKEN_HTTP_TRANSFER_ENCODING = 68, WSI_TOKEN_HTTP_USER_AGENT = 69, WSI_TOKEN_HTTP_VARY = 70, WSI_TOKEN_HTTP_VIA = 71,
  WSI_TOKEN_HTTP_WWW_AUTHENTICATE = 72, WSI_TOKEN_PATCH_URI = 73, WSI_TOKEN_PUT_URI = 74, WSI_TOKEN_DELETE_URI = 75,
  WSI_TOKEN_HTTP_URI_ARGS = 76, WSI_TOKEN_PROXY = 77, WSI_TOKEN_HTTP_X_REAL_IP = 78, WSI_TOKEN_HTTP1_0 = 79,
  _WSI_TOKEN_CLIENT_SENT_PROTOCOLS, _WSI_TOKEN_CLIENT_PEER_ADDRESS, _WSI_TOKEN_CLIENT_URI, _WSI_TOKEN_CLIENT_HOST,
  _WSI_TOKEN_CLIENT_ORIGIN, _WSI_TOKEN_CLIENT_METHOD, WSI_TOKEN_COUNT, WSI_TOKEN_NAME_PART,
  WSI_TOKEN_SKIPPING, WSI_TOKEN_SKIPPING_SAW_CR, WSI_PARSING_COMPLETE, WSI_INIT_TOKEN_MUXURL
}
 
enum  lws_spa_fileupload_states { LWS_UFS_CONTENT, LWS_UFS_FINAL_CONTENT, LWS_UFS_OPEN }
 
enum  pending_timeout {
  NO_PENDING_TIMEOUT = 0, PENDING_TIMEOUT_AWAITING_PROXY_RESPONSE = 1, PENDING_TIMEOUT_AWAITING_CONNECT_RESPONSE = 2, PENDING_TIMEOUT_ESTABLISH_WITH_SERVER = 3,
  PENDING_TIMEOUT_AWAITING_SERVER_RESPONSE = 4, PENDING_TIMEOUT_AWAITING_PING = 5, PENDING_TIMEOUT_CLOSE_ACK = 6, PENDING_TIMEOUT_AWAITING_EXTENSION_CONNECT_RESPONSE = 7,
  PENDING_TIMEOUT_SENT_CLIENT_HANDSHAKE = 8, PENDING_TIMEOUT_SSL_ACCEPT = 9, PENDING_TIMEOUT_HTTP_CONTENT = 10, PENDING_TIMEOUT_AWAITING_CLIENT_HS_SEND = 11,
  PENDING_FLUSH_STORED_SEND_BEFORE_CLOSE = 12, PENDING_TIMEOUT_SHUTDOWN_FLUSH = 13, PENDING_TIMEOUT_CGI = 14, PENDING_TIMEOUT_HTTP_KEEPALIVE_IDLE = 15,
  PENDING_TIMEOUT_WS_PONG_CHECK_SEND_PING = 16, PENDING_TIMEOUT_WS_PONG_CHECK_GET_PONG = 17, PENDING_TIMEOUT_CLIENT_ISSUE_PAYLOAD = 18
}
 
enum  lws_write_protocol {
  LWS_WRITE_TEXT = 0, LWS_WRITE_BINARY = 1, LWS_WRITE_CONTINUATION = 2, LWS_WRITE_HTTP = 3,
  LWS_WRITE_PING = 5, LWS_WRITE_PONG = 6, LWS_WRITE_HTTP_FINAL = 7, LWS_WRITE_HTTP_HEADERS = 8,
  LWS_WRITE_NO_FIN = 0x40, LWS_WRITE_CLIENT_IGNORE_XOR_MASK = 0x80
}
 
enum  lws_enum_stdinouterr { LWS_STDIN = 0, LWS_STDOUT = 1, LWS_STDERR = 2 }
 
enum  lws_cgi_hdr_state {
  LCHS_HEADER, LCHS_CR1, LCHS_LF1, LCHS_CR2,
  LCHS_LF2, LHCS_PAYLOAD, LCHS_SINGLE_0A
}
 
enum  lwsgs_smtp_states {
  LGSSMTP_IDLE, LGSSMTP_CONNECTING, LGSSMTP_CONNECTED, LGSSMTP_SENT_HELO,
  LGSSMTP_SENT_FROM, LGSSMTP_SENT_TO, LGSSMTP_SENT_DATA, LGSSMTP_SENT_BODY,
  LGSSMTP_SENT_QUIT
}
 

Functions

LWS_VISIBLE LWS_EXTERN void _lws_log (int filter, const char *format,...) LWS_FORMAT(2)
 
LWS_VISIBLE LWS_EXTERN void _lws_logv (int filter, const char *format, va_list vl)
 
LWS_VISIBLE LWS_EXTERN int lwsl_timestamp (int level, char *p, int len)
 
LWS_VISIBLE LWS_EXTERN void lwsl_hexdump (void *buf, size_t len)
 
LWS_VISIBLE LWS_EXTERN void lws_set_log_level (int level, void(*log_emit_function)(int level, const char *line))
 
LWS_VISIBLE LWS_EXTERN void lwsl_emit_syslog (int level, const char *line)
 
void * mbed3_create_tcp_stream_socket (void)
 
void mbed3_delete_tcp_stream_socket (void *sockfd)
 
void mbed3_tcp_stream_bind (void *sock, int port, struct lws *)
 
void mbed3_tcp_stream_accept (void *sock, struct lws *)
 
lws_sockfd_type esp8266_create_tcp_listen_socket (struct lws_vhost *vh)
 
void esp8266_tcp_stream_accept (lws_sockfd_type fd, struct lws *wsi)
 
int ets_snprintf (char *str, size_t size, const char *format,...) LWS_FORMAT(3)
 
void os_timer_disarm (void *)
 
void os_timer_setfn (os_timer_t *, os_timer_func_t *, void *)
 
void ets_timer_arm_new (os_timer_t *, int, int, int)
 
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 int lws_set_extension_option (struct lws *wsi, const char *ext_name, const char *opt_name, const char *opt_val)
 
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)
 
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 const struct lws_protocolslws_vhost_name_to_protocol (struct lws_vhost *vh, const char *name)
 
LWS_VISIBLE LWS_EXTERN const struct lws_protocolslws_get_protocol (struct lws *wsi)
 
LWS_VISIBLE LWS_EXTERN const struct lws_protocolslws_protocol_get (struct lws *wsi) LWS_WARN_DEPRECATED
 
LWS_VISIBLE LWS_EXTERN void * lws_protocol_vh_priv_zalloc (struct lws_vhost *vhost, const struct lws_protocols *prot, int size)
 
LWS_VISIBLE LWS_EXTERN void * lws_protocol_vh_priv_get (struct lws_vhost *vhost, const struct lws_protocols *prot)
 
LWS_VISIBLE LWS_EXTERN int lws_finalize_startup (struct lws_context *context)
 
LWS_VISIBLE LWS_EXTERN struct lws_context * lws_create_context (struct lws_context_creation_info *info)
 
LWS_VISIBLE LWS_EXTERN void lws_context_destroy (struct lws_context *context)
 
LWS_VISIBLE LWS_EXTERN int lws_set_proxy (struct lws_vhost *vhost, const char *proxy)
 
LWS_EXTERN LWS_VISIBLE struct lws_vhost * lws_create_vhost (struct lws_context *context, struct lws_context_creation_info *info)
 
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 int lwsws_get_config_vhosts (struct lws_context *context, struct lws_context_creation_info *info, const char *d, char **config_strings, int *len)
 
LWS_VISIBLE LWS_EXTERN struct lws_vhost * lws_vhost_get (struct lws *wsi) LWS_WARN_DEPRECATED
 
LWS_VISIBLE LWS_EXTERN struct lws_vhost * lws_get_vhost (struct lws *wsi)
 
LWS_VISIBLE LWS_EXTERN int lws_json_dump_vhost (const struct lws_vhost *vh, char *buf, int len)
 
LWS_VISIBLE LWS_EXTERN int lws_json_dump_context (const struct lws_context *context, char *buf, int len)
 
LWS_VISIBLE LWS_EXTERN void * lws_context_user (struct lws_context *context)
 
LWS_VISIBLE LWS_EXTERN struct lws * lws_client_connect_via_info (struct lws_client_connect_info *ccinfo)
 
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
 
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
 
LWS_VISIBLE LWS_EXTERN int lws_init_vhost_client_ssl (const struct lws_context_creation_info *info, struct lws_vhost *vhost)
 
LWS_VISIBLE LWS_EXTERN int lws_http_client_read (struct lws *wsi, char **buf, int *len)
 
LWS_VISIBLE LWS_EXTERN void lws_client_http_body_pending (struct lws *wsi, int something_left_to_send)
 
LWS_VISIBLE LWS_EXTERN int lws_service (struct lws_context *context, int timeout_ms)
 
LWS_VISIBLE LWS_EXTERN int lws_service_tsi (struct lws_context *context, int timeout_ms, int tsi)
 
LWS_VISIBLE LWS_EXTERN void lws_cancel_service_pt (struct lws *wsi)
 
LWS_VISIBLE LWS_EXTERN void lws_cancel_service (struct lws_context *context)
 
LWS_VISIBLE LWS_EXTERN int lws_service_fd (struct lws_context *context, struct lws_pollfd *pollfd)
 
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_EXTERN LWS_VISIBLE int lws_plat_service_tsi (struct lws_context *context, int timeout_ms, int tsi)
 
LWS_VISIBLE LWS_EXTERN const char * lws_get_mimetype (const char *file, const struct lws_http_mount *m)
 
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 int lws_serve_http_file_fragment (struct lws *wsi)
 
LWS_VISIBLE LWS_EXTERN int lws_chunked_html_process (struct lws_process_html_args *args, struct lws_process_html_state *s)
 
LWS_VISIBLE LWS_EXTERN const unsigned char * lws_token_to_string (enum lws_token_indexes token)
 
LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_hdr_total_length (struct lws *wsi, enum lws_token_indexes h)
 
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_hdr_copy (struct lws *wsi, char *dest, int len, enum lws_token_indexes h)
 
LWS_VISIBLE LWS_EXTERN int lws_hdr_copy_fragment (struct lws *wsi, char *dest, int len, enum lws_token_indexes h, int frag_idx)
 
LWS_VISIBLE LWS_EXTERN const char * lws_get_urlarg_by_name (struct lws *wsi, const char *name, char *buf, int len)
 
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)
 
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)
 
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)
 
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_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_finalize_http_header (struct lws *wsi, unsigned char **p, unsigned char *end)
 
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 int lws_spa_process (struct lws_spa *spa, const char *in, int len)
 
LWS_VISIBLE LWS_EXTERN int lws_spa_finalize (struct lws_spa *spa)
 
LWS_VISIBLE LWS_EXTERN int lws_spa_get_length (struct lws_spa *spa, int n)
 
LWS_VISIBLE LWS_EXTERN const char * lws_spa_get_string (struct lws_spa *spa, int n)
 
LWS_VISIBLE LWS_EXTERN int lws_spa_destroy (struct lws_spa *spa)
 
LWS_VISIBLE LWS_EXTERN const char * lws_urlencode (char *escaped, const char *string, int len)
 
LWS_VISIBLE LWS_EXTERN int lws_urldecode (char *string, const char *escaped, int len)
 
LWS_VISIBLE LWS_EXTERN int lws_return_http_status (struct lws *wsi, unsigned int code, const char *html_body)
 
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)
 
LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_http_transaction_completed (struct lws *wsi)
 
LWS_VISIBLE LWS_EXTERN const char * lws_sql_purify (char *escaped, const char *string, int len)
 
LWS_VISIBLE LWS_EXTERN const char * lws_json_purify (char *escaped, const char *string, int len)
 
LWS_VISIBLE LWS_EXTERN int lws_ev_sigint_cfg (struct lws_context *context, int use_ev_sigint, lws_ev_signal_cb_t *cb)
 
LWS_VISIBLE LWS_EXTERN int lws_ev_initloop (struct lws_context *context, struct ev_loop *loop, int tsi)
 
LWS_VISIBLE LWS_EXTERN void lws_ev_sigint_cb (struct ev_loop *loop, struct ev_signal *watcher, int revents)
 
LWS_VISIBLE LWS_EXTERN int lws_uv_sigint_cfg (struct lws_context *context, int use_uv_sigint, uv_signal_cb cb)
 
LWS_VISIBLE LWS_EXTERN void lws_libuv_run (const struct lws_context *context, int tsi)
 
LWS_VISIBLE LWS_EXTERN void lws_libuv_stop (struct lws_context *context)
 
LWS_VISIBLE LWS_EXTERN int lws_uv_initloop (struct lws_context *context, uv_loop_t *loop, int tsi)
 
LWS_VISIBLE LWS_EXTERN uv_loop_t * lws_uv_getloop (struct lws_context *context, int tsi)
 
LWS_VISIBLE LWS_EXTERN void lws_uv_sigint_cb (uv_signal_t *watcher, int signum)
 
LWS_VISIBLE LWS_EXTERN void lws_set_timeout (struct lws *wsi, enum pending_timeout reason, int secs)
 
LWS_VISIBLE LWS_EXTERN int lws_write (struct lws *wsi, unsigned char *buf, size_t len, enum lws_write_protocol protocol)
 
LWS_VISIBLE LWS_EXTERN int lws_callback_on_writable (struct lws *wsi)
 
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 int lws_callback_on_writable_all_protocol_vhost (const struct lws_vhost *vhost, const struct lws_protocols *protocol)
 
LWS_VISIBLE LWS_EXTERN int lws_callback_all_protocol (struct lws_context *context, const struct lws_protocols *protocol, int reason)
 
LWS_VISIBLE LWS_EXTERN int lws_callback_all_protocol_vhost (struct lws_vhost *vh, const struct lws_protocols *protocol, int reason)
 
LWS_VISIBLE LWS_EXTERN int lws_callback_vhost_protocols (struct lws *wsi, int reason, void *in, int len)
 
LWS_VISIBLE LWS_EXTERN int lws_callback_http_dummy (struct lws *wsi, enum lws_callback_reasons reason, void *user, void *in, size_t len)
 
LWS_VISIBLE LWS_EXTERN int lws_get_socket_fd (struct lws *wsi)
 
LWS_VISIBLE LWS_EXTERN size_t lws_get_peer_write_allowance (struct lws *wsi)
 
LWS_VISIBLE LWS_EXTERN int lws_rx_flow_control (struct lws *wsi, int enable)
 
LWS_VISIBLE LWS_EXTERN void lws_rx_flow_allow_all_protocol (const struct lws_context *context, const struct lws_protocols *protocol)
 
LWS_VISIBLE LWS_EXTERN size_t lws_remaining_packet_payload (struct lws *wsi)
 
LWS_VISIBLE LWS_EXTERN struct lws * lws_adopt_socket (struct lws_context *context, lws_sockfd_type accept_fd)
 
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)
 
LWS_VISIBLE LWS_EXTERN const char *LWS_WARN_UNUSED_RESULT lws_canonical_hostname (struct lws_context *context)
 
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)
 
LWS_VISIBLE LWS_EXTERN const char * lws_get_peer_simple (struct lws *wsi, char *name, int namelen)
 
LWS_VISIBLE LWS_EXTERN int lws_interface_to_sa (int ipv6, const char *ifname, struct sockaddr_in *addr, size_t addrlen)
 
LWS_VISIBLE LWS_EXTERN int lws_snprintf (char *str, size_t size, const char *format,...) LWS_FORMAT(3)
 
LWS_VISIBLE LWS_EXTERN int lws_get_random (struct lws_context *context, void *buf, int len)
 
LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_daemonize (const char *_lock_path)
 
LWS_VISIBLE LWS_EXTERN const char *LWS_WARN_UNUSED_RESULT lws_get_library_version (void)
 
LWS_VISIBLE LWS_EXTERN void * lws_wsi_user (struct lws *wsi)
 
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)
 
LWS_VISIBLE LWS_EXTERN unsigned long lws_now_secs (void)
 
LWS_VISIBLE LWS_EXTERN struct lws_context *LWS_WARN_UNUSED_RESULT lws_get_context (const struct lws *wsi)
 
LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_get_count_threads (struct lws_context *context)
 
LWS_VISIBLE LWS_EXTERN struct lws *LWS_WARN_UNUSED_RESULT lws_get_parent (const struct lws *wsi)
 
LWS_VISIBLE LWS_EXTERN struct lws *LWS_WARN_UNUSED_RESULT lws_get_child (const struct lws *wsi)
 
LWS_VISIBLE LWS_EXTERN int lws_read (struct lws *wsi, unsigned char *buf, size_t len)
 
LWS_VISIBLE LWS_EXTERN void lws_set_allocator (void *(*realloc)(void *ptr, size_t size))
 
LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_send_pipe_choked (struct lws *wsi)
 
LWS_VISIBLE LWS_EXTERN int lws_is_final_fragment (struct lws *wsi)
 
LWS_VISIBLE LWS_EXTERN unsigned char lws_get_reserved_bits (struct lws *wsi)
 
LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_partial_buffered (struct lws *wsi)
 
LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_frame_is_binary (struct lws *wsi)
 
LWS_VISIBLE LWS_EXTERN int lws_is_ssl (struct lws *wsi)
 
LWS_VISIBLE LWS_EXTERN int lws_is_cgi (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 lws_b64_encode_string (const char *in, int in_len, char *out, int out_size)
 
LWS_VISIBLE LWS_EXTERN int lws_b64_decode_string (const char *in, char *out, int out_size)
 
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 int lws_cgi_write_split_stdout_headers (struct lws *wsi)
 
LWS_VISIBLE LWS_EXTERN int lws_cgi_kill (struct lws *wsi)
 
LWS_VISIBLE LWS_EXTERN struct lws_plat_file_ops *LWS_WARN_UNUSED_RESULT lws_get_fops (struct lws_context *context)
 
LWS_VISIBLE LWS_EXTERN int lws_email_init (struct lws_email *email, uv_loop_t *loop, int max_content)
 
LWS_VISIBLE LWS_EXTERN void lws_email_check (struct lws_email *email)
 
LWS_VISIBLE LWS_EXTERN void lws_email_destroy (struct lws_email *email)
 

Function Documentation

◆ lws_cgi()

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_cgi: spawn network-connected cgi process

Parameters
wsiconnection to own the process
exec_arrayarray of "exec-name" "arg1" ... "argn" NULL
script_uri_path_lenhow many chars on the left of the uri are the path to the cgi
timeout_secsseconds script should be allowed to run
mp_cgienvpvo list with per-vhost cgi options to put in env

◆ lws_cgi_kill()

LWS_VISIBLE LWS_EXTERN int lws_cgi_kill ( struct lws *  wsi)

lws_cgi_kill: terminate cgi process associated with wsi

Parameters
wsiconnection to own the process

◆ lws_cgi_write_split_stdout_headers()

LWS_VISIBLE LWS_EXTERN int lws_cgi_write_split_stdout_headers ( struct lws *  wsi)

lws_cgi_write_split_stdout_headers: write cgi output accounting for header part

Parameters
wsiconnection to own the process

◆ lws_remaining_packet_payload()

LWS_VISIBLE LWS_EXTERN size_t lws_remaining_packet_payload ( struct lws *  wsi)

lws_remaining_packet_payload() - Bytes to come before "overall" rx packet is complete

Parameters
wsiWebsocket instance (available from user callback)
 This function is intended to be called from the callback if the
user code is interested in "complete packets" from the client. libwebsockets just passes through payload as it comes and issues a buffer additionally when it hits a built-in limit. The LWS_CALLBACK_RECEIVE callback handler can use this API to find out if the buffer it has just been given is the last piece of a "complete packet" from the client – when that is the case lws_remaining_packet_payload() will return 0.

Many protocols won't care becuse their packets are always small.

◆ lws_rx_flow_allow_all_protocol()

LWS_VISIBLE LWS_EXTERN void lws_rx_flow_allow_all_protocol ( const struct lws_context *  context,
const struct lws_protocols protocol 
)

lws_rx_flow_allow_all_protocol() - Allow all connections with this protocol to receive

When the user server code realizes it can accept more input, it can call this to have the RX flow restriction removed from all connections using the given protocol.

Parameters
contextlws_context
protocolall connections using this protocol will be allowed to receive

◆ lws_rx_flow_control()

LWS_VISIBLE LWS_EXTERN int lws_rx_flow_control ( struct lws *  wsi,
int  enable 
)

lws_rx_flow_control() - Enable and disable socket servicing for received packets.

If the output side of a server process becomes choked, this allows flow control for the input side.

Parameters
wsiWebsocket connection instance to get callback for
enable0 = disable read servicing for this connection, 1 = enable