ah: allow configurable ah hold timeout

This commit is contained in:
Andy Green 2017-07-26 11:49:41 +08:00
parent 19a320a578
commit ba45f7cf9f
4 changed files with 14 additions and 0 deletions

View file

@ -470,6 +470,11 @@ lws_create_vhost(struct lws_context *context,
else
vh->keepalive_timeout = 5;
if (info->timeout_secs_ah_idle)
vh->timeout_secs_ah_idle = info->timeout_secs_ah_idle;
else
vh->timeout_secs_ah_idle = 10;
/*
* give the vhost a unified list of protocols including the
* ones that came from plugins

View file

@ -2115,6 +2115,9 @@ struct lws_context_creation_info {
* the form SSL_CB_ALERT, defined in openssl/ssl.h. The default of
* 0 means no info events will be reported.
*/
unsigned int timeout_secs_ah_idle;
/**< VHOST: seconds to allow a client to hold an ah without using it.
* 0 defaults to 10s. */
void *_unused[8]; /**< dummy */
};
@ -3670,6 +3673,7 @@ enum pending_timeout {
PENDING_TIMEOUT_KILLED_BY_SSL_INFO = 22,
PENDING_TIMEOUT_KILLED_BY_PARENT = 23,
PENDING_TIMEOUT_CLOSE_SEND = 24,
PENDING_TIMEOUT_HOLDING_AH = 25,
/****** add new things just above ---^ ******/
};

View file

@ -92,6 +92,10 @@ lws_header_table_reset(struct lws *wsi, int autoservice)
/* since we will restart the ah, our new headers are not completed */
wsi->hdr_parsing_completed = 0;
/* while we hold the ah, keep a timeout on the wsi */
lws_set_timeout(wsi, PENDING_TIMEOUT_HOLDING_AH,
wsi->vhost->timeout_secs_ah_idle);
/*
* if we inherited pending rx (from socket adoption deferred
* processing), apply and free it.

View file

@ -891,6 +891,7 @@ struct lws_vhost {
int ka_probes;
int ka_interval;
int keepalive_timeout;
int timeout_secs_ah_idle;
int ssl_info_event_mask;
#ifdef LWS_WITH_ACCESS_LOG
int log_fd;