libwebsockets
Lightweight C library for HTML5 websockets
Connection timeouts

Enumerations

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_UNUSED1 = 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, PENDING_TIMEOUT_AWAITING_SOCKS_GREETING_REPLY = 19,
  PENDING_TIMEOUT_AWAITING_SOCKS_CONNECT_REPLY = 20, PENDING_TIMEOUT_AWAITING_SOCKS_AUTH_REPLY = 21, PENDING_TIMEOUT_KILLED_BY_SSL_INFO = 22, PENDING_TIMEOUT_KILLED_BY_PARENT = 23,
  PENDING_TIMEOUT_CLOSE_SEND = 24, PENDING_TIMEOUT_HOLDING_AH = 25, PENDING_TIMEOUT_UDP_IDLE = 26, PENDING_TIMEOUT_CLIENT_CONN_IDLE = 27,
  PENDING_TIMEOUT_LAGGING = 28, PENDING_TIMEOUT_USER_REASON_BASE = 1000
}
 

Functions

LWS_VISIBLE LWS_EXTERN void lws_set_timeout (struct lws *wsi, enum pending_timeout reason, int secs)
 
LWS_VISIBLE LWS_EXTERN void lws_set_timer_usecs (struct lws *wsi, lws_usec_t usecs)
 
LWS_VISIBLE LWS_EXTERN int lws_timed_callback_vh_protocol (struct lws_vhost *vh, const struct lws_protocols *prot, int reason, int secs)
 

Detailed Description

APIs related to setting connection timeouts

Function Documentation

◆ lws_set_timeout()

LWS_VISIBLE LWS_EXTERN void lws_set_timeout ( struct lws *  wsi,
enum pending_timeout  reason,
int  secs 
)

#include <lib/libwebsockets.h>

lws_set_timeout() - marks the wsi as subject to a timeout

You will not need this unless you are doing something special

Parameters
wsiWebsocket connection instance
reasontimeout reason
secshow many seconds. You may set to LWS_TO_KILL_ASYNC to force the connection to timeout at the next opportunity, or LWS_TO_KILL_SYNC to close it synchronously if you know the wsi is not the one currently being serviced.

◆ lws_set_timer_usecs()

LWS_VISIBLE LWS_EXTERN void lws_set_timer_usecs ( struct lws *  wsi,
lws_usec_t  usecs 
)

#include <lib/libwebsockets.h>

lws_set_timer_usecs() - schedules a callback on the wsi in the future

Parameters
wsiWebsocket connection instance
usecsLWS_SET_TIMER_USEC_CANCEL removes any existing scheduled callback, otherwise number of microseconds in the future the callback will occur at.

NOTE: event loop support for this:

default poll() loop: yes libuv event loop: yes libev: not implemented (patch welcome) libevent: not implemented (patch welcome)

After the deadline expires, the wsi will get a callback of type LWS_CALLBACK_TIMER and the timer is exhausted. The deadline may be continuously deferred by further calls to lws_set_timer_usecs() with a later deadline, or cancelled by lws_set_timer_usecs(wsi, -1).

If the timer should repeat, lws_set_timer_usecs() must be called again from LWS_CALLBACK_TIMER.

Accuracy depends on the platform and the load on the event loop or system... all that's guaranteed is the callback will come after the requested wait period.