Lines Matching refs:wsi
28 __lws_wsi_remove_from_sul(struct lws *wsi)
30 lws_sul_cancel(&wsi->sul_timeout);
31 lws_sul_cancel(&wsi->sul_hrtimer);
32 lws_sul_cancel(&wsi->sul_validity);
34 lws_sul_cancel(&wsi->sul_fault_timedclose);
45 struct lws *wsi = lws_container_of(sul, struct lws, sul_hrtimer);
47 if (wsi->a.protocol &&
48 wsi->a.protocol->callback(wsi, LWS_CALLBACK_TIMER,
49 wsi->user_space, NULL, 0))
50 __lws_close_free_wsi(wsi, LWS_CLOSE_STATUS_NOSTATUS,
55 __lws_set_timer_usecs(struct lws *wsi, lws_usec_t us)
57 struct lws_context_per_thread *pt = &wsi->a.context->pt[(int)wsi->tsi];
59 wsi->sul_hrtimer.cb = lws_sul_hrtimer_cb;
61 &wsi->sul_hrtimer, us);
65 lws_set_timer_usecs(struct lws *wsi, lws_usec_t usecs)
67 __lws_set_timer_usecs(wsi, usecs);
71 * wsi timeout
77 struct lws *wsi = lws_container_of(sul, struct lws, sul_timeout);
78 struct lws_context *cx = wsi->a.context;
79 struct lws_context_per_thread *pt = &cx->pt[(int)wsi->tsi];
82 // if (wsi->pending_timeout != PENDING_TIMEOUT_HTTP_KEEPALIVE_IDLE)
84 if (wsi->pending_timeout != PENDING_TIMEOUT_USER_OK)
85 lwsl_wsi_info(wsi, "TIMEDOUT WAITING %d, dhdr %d, ah %p, wl %d",
86 wsi->pending_timeout,
87 wsi->hdr_parsing_completed, wsi->http.ah,
90 if (wsi->http.cgi)
91 lwsl_wsi_notice(wsi, "CGI timeout: %s", wsi->http.cgi->summary);
94 if (wsi->pending_timeout != PENDING_TIMEOUT_USER_OK)
95 lwsl_wsi_info(wsi, "TIMEDOUT WAITING on %d ",
96 wsi->pending_timeout);
99 if (wsi->pending_timeout != PENDING_TIMEOUT_HTTP_KEEPALIVE_IDLE)
107 wsi->socket_is_permanently_unusable = 1;
109 if (lwsi_state(wsi) == LRS_WAITING_SSL)
110 lws_inform_client_conn_fail(wsi,
112 if (lwsi_state(wsi) == LRS_WAITING_SERVER_REPLY)
113 lws_inform_client_conn_fail(wsi,
119 __lws_close_free_wsi(wsi, LWS_CLOSE_STATUS_NOSTATUS, "timeout");
125 __lws_set_timeout(struct lws *wsi, enum pending_timeout reason, int secs)
127 struct lws_context_per_thread *pt = &wsi->a.context->pt[(int)wsi->tsi];
129 wsi->sul_timeout.cb = lws_sul_wsitimeout_cb;
131 &wsi->sul_timeout,
134 lwsl_wsi_debug(wsi, "%d secs, reason %d\n", secs, reason);
136 wsi->pending_timeout = (char)reason;
140 lws_set_timeout(struct lws *wsi, enum pending_timeout reason, int secs)
142 struct lws_context_per_thread *pt = &wsi->a.context->pt[(int)wsi->tsi];
146 lws_dll2_remove(&wsi->sul_timeout.list);
153 lwsl_wsi_debug(wsi, "TO_KILL_SYNC");
155 lws_close_free_wsi(wsi, LWS_CLOSE_STATUS_NOSTATUS,
163 // assert(!secs || !wsi->mux_stream_immortal);
164 if (secs && wsi->mux_stream_immortal)
165 lwsl_wsi_err(wsi, "on immortal stream %d %d", reason, secs);
168 __lws_set_timeout(wsi, reason, secs);
176 lws_set_timeout_us(struct lws *wsi, enum pending_timeout reason, lws_usec_t us)
178 struct lws_context_per_thread *pt = &wsi->a.context->pt[(int)wsi->tsi];
181 lws_dll2_remove(&wsi->sul_timeout.list);
189 &wsi->sul_timeout, us);
191 lwsl_wsi_notice(wsi, "%llu us, reason %d",
194 wsi->pending_timeout = (char)reason;
201 struct lws *wsi = lws_container_of(sul, struct lws, sul_validity);
202 struct lws_context_per_thread *pt = &wsi->a.context->pt[(int)wsi->tsi];
203 const lws_retry_bo_t *rbo = wsi->retry_policy;
207 if (wsi->validity_hup) {
208 lwsl_wsi_info(wsi, "validity too old");
209 struct lws_context *cx = wsi->a.context;
210 struct lws_context_per_thread *pt = &cx->pt[(int)wsi->tsi];
214 __lws_close_free_wsi(wsi, LWS_CLOSE_STATUS_NOSTATUS,
223 lwsl_wsi_info(wsi, "scheduling validity check");
225 if (lws_rops_fidx(wsi->role_ops, LWS_ROPS_issue_keepalive))
226 lws_rops_func_fidx(wsi->role_ops, LWS_ROPS_issue_keepalive).
227 issue_keepalive(wsi, 0);
237 wsi->validity_hup = 1;
238 __lws_sul_insert_us(&pt->pt_sul_owner[!!wsi->conn_validity_wakesuspend],
239 &wsi->sul_validity,
245 * The role calls this back to actually confirm validity on a particular wsi
246 * (which may not be the original wsi)
250 _lws_validity_confirmed_role(struct lws *wsi)
252 struct lws_context_per_thread *pt = &wsi->a.context->pt[(int)wsi->tsi];
253 const lws_retry_bo_t *rbo = wsi->retry_policy;
258 wsi->validity_hup = 0;
259 wsi->sul_validity.cb = lws_validity_cb;
261 wsi->validity_hup = rbo->secs_since_valid_ping >=
264 lwsl_wsi_info(wsi, "setting validity timer %ds (hup %d)",
265 wsi->validity_hup ? rbo->secs_since_valid_hangup :
267 wsi->validity_hup);
269 __lws_sul_insert_us(&pt->pt_sul_owner[!!wsi->conn_validity_wakesuspend],
270 &wsi->sul_validity,
271 ((uint64_t)(wsi->validity_hup ?
277 lws_validity_confirmed(struct lws *wsi)
284 if (!wsi->h2_stream_carries_ws && /* only if not encapsulated */
285 wsi->role_ops &&
286 lws_rops_fidx(wsi->role_ops, LWS_ROPS_issue_keepalive))
287 lws_rops_func_fidx(wsi->role_ops, LWS_ROPS_issue_keepalive).
288 issue_keepalive(wsi, 1);