mirror of
https://github.com/warmcat/libwebsockets.git
synced 2025-03-09 00:00:04 +01:00
internal close api: add caller id
This commit is contained in:
parent
0c55e5ad4c
commit
113d623957
11 changed files with 37 additions and 35 deletions
|
@ -434,7 +434,7 @@ failed:
|
|||
wsi->user_space, (void *)cce, strlen(cce));
|
||||
wsi->already_did_cce = 1;
|
||||
failed1:
|
||||
lws_close_free_wsi(wsi, LWS_CLOSE_STATUS_NOSTATUS);
|
||||
lws_close_free_wsi(wsi, LWS_CLOSE_STATUS_NOSTATUS, "client_connect2");
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
@ -310,7 +310,7 @@ start_ws_handshake:
|
|||
return 0;
|
||||
|
||||
lwsl_err("Failed to generate handshake for client\n");
|
||||
lws_close_free_wsi(wsi, LWS_CLOSE_STATUS_NOSTATUS);
|
||||
lws_close_free_wsi(wsi, LWS_CLOSE_STATUS_NOSTATUS, "chs");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -323,7 +323,7 @@ start_ws_handshake:
|
|||
switch (n) {
|
||||
case LWS_SSL_CAPABLE_ERROR:
|
||||
lwsl_debug("ERROR writing to client socket\n");
|
||||
lws_close_free_wsi(wsi, LWS_CLOSE_STATUS_NOSTATUS);
|
||||
lws_close_free_wsi(wsi, LWS_CLOSE_STATUS_NOSTATUS, "cws");
|
||||
return 0;
|
||||
case LWS_SSL_CAPABLE_MORE_SERVICE:
|
||||
lws_callback_on_writable(wsi);
|
||||
|
@ -434,7 +434,7 @@ bail3:
|
|||
LWS_CALLBACK_CLIENT_CONNECTION_ERROR,
|
||||
wsi->user_space, (void *)cce, cce ? strlen(cce) : 0);
|
||||
wsi->already_did_cce = 1;
|
||||
lws_close_free_wsi(wsi, LWS_CLOSE_STATUS_NOSTATUS);
|
||||
lws_close_free_wsi(wsi, LWS_CLOSE_STATUS_NOSTATUS, "cbail3");
|
||||
return -1;
|
||||
|
||||
case LWSCM_WSCL_WAITING_EXTENSION_CONNECT:
|
||||
|
@ -1140,7 +1140,7 @@ bail2:
|
|||
lwsl_info("closing connection due to bail2 connection error\n");
|
||||
|
||||
/* closing will free up his parsing allocations */
|
||||
lws_close_free_wsi(wsi, close_reason);
|
||||
lws_close_free_wsi(wsi, close_reason, "c hs interp");
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -1364,7 +1364,7 @@ lws_context_deprecate(struct lws_context *context, lws_reload_func cb)
|
|||
wsi = vh->lserv_wsi;
|
||||
if (wsi) {
|
||||
wsi->socket_is_permanently_unusable = 1;
|
||||
lws_close_free_wsi(wsi, LWS_CLOSE_STATUS_NOSTATUS);
|
||||
lws_close_free_wsi(wsi, LWS_CLOSE_STATUS_NOSTATUS, "ctx deprecate");
|
||||
wsi->context->deprecation_pending_listen_close_count++;
|
||||
/*
|
||||
* other vhosts can share the listen port, they
|
||||
|
@ -1462,7 +1462,8 @@ lws_vhost_destroy1(struct lws_vhost *vh)
|
|||
continue;
|
||||
|
||||
lws_close_free_wsi(wsi,
|
||||
LWS_CLOSE_STATUS_NOSTATUS_CONTEXT_DESTROY
|
||||
LWS_CLOSE_STATUS_NOSTATUS_CONTEXT_DESTROY,
|
||||
"vh destroy"
|
||||
/* no protocol close */);
|
||||
n--;
|
||||
}
|
||||
|
@ -1696,7 +1697,8 @@ lws_context_destroy(struct lws_context *context)
|
|||
lws_destroy_event_pipe(wsi);
|
||||
else
|
||||
lws_close_free_wsi(wsi,
|
||||
LWS_CLOSE_STATUS_NOSTATUS_CONTEXT_DESTROY
|
||||
LWS_CLOSE_STATUS_NOSTATUS_CONTEXT_DESTROY,
|
||||
"ctx destroy"
|
||||
/* no protocol close */);
|
||||
n--;
|
||||
}
|
||||
|
|
|
@ -461,7 +461,7 @@ lws_libuv_stop(struct lws_context *context)
|
|||
if (!wsi)
|
||||
continue;
|
||||
lws_close_free_wsi(wsi,
|
||||
LWS_CLOSE_STATUS_NOSTATUS_CONTEXT_DESTROY
|
||||
LWS_CLOSE_STATUS_NOSTATUS_CONTEXT_DESTROY, __func__
|
||||
/* no protocol close */);
|
||||
n--;
|
||||
}
|
||||
|
|
|
@ -127,7 +127,7 @@ lws_read(struct lws *wsi, unsigned char *buf, lws_filepos_t len)
|
|||
buf += body_chunk_len;
|
||||
len -= body_chunk_len;
|
||||
}
|
||||
lwsl_debug("%s: used up block\n", __func__);
|
||||
// lwsl_debug("%s: used up block\n", __func__);
|
||||
break;
|
||||
#endif
|
||||
|
||||
|
@ -170,7 +170,7 @@ lws_read(struct lws *wsi, unsigned char *buf, lws_filepos_t len)
|
|||
* appropriately:
|
||||
*/
|
||||
len -= (buf - last_char);
|
||||
lwsl_debug("%s: thinks we have used %ld\n", __func__, (long)len);
|
||||
// lwsl_debug("%s: thinks we have used %ld\n", __func__, (long)len);
|
||||
|
||||
if (!wsi->hdr_parsing_completed)
|
||||
/* More header content on the way */
|
||||
|
@ -303,8 +303,8 @@ postbody_completion:
|
|||
|
||||
read_ok:
|
||||
/* Nothing more to do for now */
|
||||
lwsl_info("%s: %p: read_ok, used %ld (len %d, state %d)\n", __func__,
|
||||
wsi, (long)(buf - oldbuf), (int)len, wsi->state);
|
||||
// lwsl_info("%s: %p: read_ok, used %ld (len %d, state %d)\n", __func__,
|
||||
// wsi, (long)(buf - oldbuf), (int)len, wsi->state);
|
||||
|
||||
return lws_ptr_diff(buf, oldbuf);
|
||||
|
||||
|
@ -315,7 +315,7 @@ bail:
|
|||
* the wsi close.
|
||||
*/
|
||||
if (!wsi->outer_will_close)
|
||||
lws_close_free_wsi(wsi, LWS_CLOSE_STATUS_NOSTATUS);
|
||||
lws_close_free_wsi(wsi, LWS_CLOSE_STATUS_NOSTATUS, "lws_read bail");
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
|
|
@ -655,11 +655,11 @@ int lws_h2_do_pps_send(struct lws *wsi)
|
|||
}
|
||||
cwsi = lws_h2_wsi_from_id(wsi, pps->u.rs.sid);
|
||||
if (cwsi)
|
||||
lws_close_free_wsi(cwsi, 0);
|
||||
lws_close_free_wsi(cwsi, 0, "reset stream");
|
||||
break;
|
||||
|
||||
case LWS_H2_PPS_UPDATE_WINDOW:
|
||||
lwsl_notice("LWS_H2_PPS_UPDATE_WINDOW: sid %d: add %d\n",
|
||||
lwsl_notice("Issuing LWS_H2_PPS_UPDATE_WINDOW: sid %d: add %d\n",
|
||||
pps->u.update_window.sid,
|
||||
pps->u.update_window.credit);
|
||||
*p++ = pps->u.update_window.credit >> 24;
|
||||
|
@ -992,7 +992,7 @@ lws_h2_parse_frame_header(struct lws *wsi)
|
|||
lws_start_foreach_ll(struct lws *, w, wsi->h2.child_list) {
|
||||
if (w->h2.my_sid < h2n->sid &&
|
||||
w->h2.h2_state == LWS_H2_STATE_IDLE)
|
||||
lws_close_free_wsi(w, 0);
|
||||
lws_close_free_wsi(w, 0, "h2 sid close");
|
||||
} lws_end_foreach_ll(w, h2.sibling_list);
|
||||
|
||||
|
||||
|
|
|
@ -215,7 +215,7 @@ lws_set_timeout(struct lws *wsi, enum pending_timeout reason, int secs)
|
|||
if (secs == LWS_TO_KILL_SYNC) {
|
||||
lws_remove_from_timeout_list(wsi);
|
||||
lwsl_debug("synchronously killing %p\n", wsi);
|
||||
lws_close_free_wsi(wsi, LWS_CLOSE_STATUS_NOSTATUS);
|
||||
lws_close_free_wsi(wsi, LWS_CLOSE_STATUS_NOSTATUS, "to sync kill");
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -357,7 +357,7 @@ lws_bind_protocol(struct lws *wsi, const struct lws_protocols *p)
|
|||
}
|
||||
|
||||
void
|
||||
lws_close_free_wsi(struct lws *wsi, enum lws_close_status reason)
|
||||
lws_close_free_wsi(struct lws *wsi, enum lws_close_status reason, const char *caller)
|
||||
{
|
||||
struct lws_context_per_thread *pt;
|
||||
struct lws *wsi1, *wsi2;
|
||||
|
@ -365,7 +365,7 @@ lws_close_free_wsi(struct lws *wsi, enum lws_close_status reason)
|
|||
struct lws_tokens eff_buf;
|
||||
int n, m, ret;
|
||||
|
||||
lwsl_debug("%s: %p\n", __func__, wsi);
|
||||
lwsl_debug("%s: %p: caller: %s\n", __func__, wsi, caller);
|
||||
|
||||
if (!wsi)
|
||||
return;
|
||||
|
@ -387,7 +387,7 @@ lws_close_free_wsi(struct lws *wsi, enum lws_close_status reason)
|
|||
wsi2->parent = NULL;
|
||||
/* stop it doing shutdown processing */
|
||||
wsi2->socket_is_permanently_unusable = 1;
|
||||
lws_close_free_wsi(wsi2, reason);
|
||||
lws_close_free_wsi(wsi2, reason, "general child recurse");
|
||||
wsi2 = wsi1;
|
||||
}
|
||||
wsi->child_list = NULL;
|
||||
|
@ -421,7 +421,7 @@ lws_close_free_wsi(struct lws *wsi, enum lws_close_status reason)
|
|||
wsi2 = (*w)->h2.sibling_list;
|
||||
(*w)->h2.sibling_list = NULL;
|
||||
(*w)->socket_is_permanently_unusable = 1;
|
||||
lws_close_free_wsi(*w, reason);
|
||||
lws_close_free_wsi(*w, reason, "h2 child recurse");
|
||||
*w = wsi2;
|
||||
continue;
|
||||
} lws_end_foreach_llp(w, h2.sibling_list);
|
||||
|
|
|
@ -2016,7 +2016,7 @@ lws_get_addr_scope(const char *ipaddr);
|
|||
#endif
|
||||
|
||||
LWS_EXTERN void
|
||||
lws_close_free_wsi(struct lws *wsi, enum lws_close_status);
|
||||
lws_close_free_wsi(struct lws *wsi, enum lws_close_status, const char *caller);
|
||||
|
||||
LWS_EXTERN void
|
||||
lws_free_wsi(struct lws *wsi);
|
||||
|
|
|
@ -943,7 +943,7 @@ handled:
|
|||
(void *)&args, wsi->cgi->pid);
|
||||
wsi->cgi->pid = -1;
|
||||
if (n && !wsi->cgi->being_closed)
|
||||
lws_close_free_wsi(wsi, 0);
|
||||
lws_close_free_wsi(wsi, 0, "lws_cgi_kill");
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -2124,7 +2124,7 @@ lws_adopt_descriptor_vhost(struct lws_vhost *vh, lws_adoption_type type,
|
|||
|
||||
fail:
|
||||
if (type & LWS_ADOPT_SOCKET)
|
||||
lws_close_free_wsi(new_wsi, LWS_CLOSE_STATUS_NOSTATUS);
|
||||
lws_close_free_wsi(new_wsi, LWS_CLOSE_STATUS_NOSTATUS, "adopt skt fail");
|
||||
|
||||
return NULL;
|
||||
|
||||
|
@ -2227,7 +2227,7 @@ adopt_socket_readbuf(struct lws *wsi, const char *readbuf, size_t len)
|
|||
return wsi;
|
||||
|
||||
bail:
|
||||
lws_close_free_wsi(wsi, LWS_CLOSE_STATUS_NOSTATUS);
|
||||
lws_close_free_wsi(wsi, LWS_CLOSE_STATUS_NOSTATUS, "adopt skt readbuf fail");
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
@ -2700,7 +2700,7 @@ try_pollout:
|
|||
return 0;
|
||||
|
||||
fail:
|
||||
lws_close_free_wsi(wsi, LWS_CLOSE_STATUS_NOSTATUS);
|
||||
lws_close_free_wsi(wsi, LWS_CLOSE_STATUS_NOSTATUS, "server socket svc fail");
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -463,7 +463,7 @@ user_service_go_again:
|
|||
strlen(w->h2.pending_status_body +
|
||||
LWS_PRE), LWS_WRITE_HTTP_FINAL);
|
||||
lws_free_set_NULL(w->h2.pending_status_body);
|
||||
lws_close_free_wsi(w, LWS_CLOSE_STATUS_NOSTATUS);
|
||||
lws_close_free_wsi(w, LWS_CLOSE_STATUS_NOSTATUS, "h2 end stream 1");
|
||||
wa = &wsi->h2.child_list;
|
||||
goto next_child;
|
||||
}
|
||||
|
@ -493,7 +493,7 @@ user_service_go_again:
|
|||
*/
|
||||
if (n || w->h2.send_END_STREAM) {
|
||||
lwsl_info("closing stream after h2 action\n");
|
||||
lws_close_free_wsi(w, LWS_CLOSE_STATUS_NOSTATUS);
|
||||
lws_close_free_wsi(w, LWS_CLOSE_STATUS_NOSTATUS, "h2 end stream");
|
||||
wa = &wsi->h2.child_list;
|
||||
}
|
||||
|
||||
|
@ -519,7 +519,7 @@ user_service_go_again:
|
|||
*/
|
||||
if (n < 0 || w->h2.send_END_STREAM) {
|
||||
lwsl_debug("Closing POLLOUT child %p\n", w);
|
||||
lws_close_free_wsi(w, LWS_CLOSE_STATUS_NOSTATUS);
|
||||
lws_close_free_wsi(w, LWS_CLOSE_STATUS_NOSTATUS, "h2 end stream file");
|
||||
wa = &wsi->h2.child_list;
|
||||
goto next_child;
|
||||
}
|
||||
|
@ -536,7 +536,7 @@ user_service_go_again:
|
|||
|
||||
if (lws_calllback_as_writeable(w) || w->h2.send_END_STREAM) {
|
||||
lwsl_debug("Closing POLLOUT child\n");
|
||||
lws_close_free_wsi(w, LWS_CLOSE_STATUS_NOSTATUS);
|
||||
lws_close_free_wsi(w, LWS_CLOSE_STATUS_NOSTATUS, "h2 pollout handle");
|
||||
wa = &wsi->h2.child_list;
|
||||
}
|
||||
|
||||
|
@ -627,7 +627,7 @@ lws_service_timeout_check(struct lws *wsi, time_t sec)
|
|||
if (wsi->protocol &&
|
||||
wsi->protocol->callback(wsi, LWS_CALLBACK_TIMER,
|
||||
wsi->user_space, NULL, 0)) {
|
||||
lws_close_free_wsi(wsi, LWS_CLOSE_STATUS_NOSTATUS);
|
||||
lws_close_free_wsi(wsi, LWS_CLOSE_STATUS_NOSTATUS, "timer cb errored");
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
@ -682,7 +682,7 @@ lws_service_timeout_check(struct lws *wsi, time_t sec)
|
|||
wsi->user_space,
|
||||
(void *)"Timed out waiting SSL", 21);
|
||||
|
||||
lws_close_free_wsi(wsi, LWS_CLOSE_STATUS_NOSTATUS);
|
||||
lws_close_free_wsi(wsi, LWS_CLOSE_STATUS_NOSTATUS, "timeout");
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
@ -1206,7 +1206,7 @@ lws_service_fd_tsi(struct lws_context *context, struct lws_pollfd *pollfd,
|
|||
/* it was the guy we came to service! */
|
||||
timed_out = 1;
|
||||
|
||||
lws_close_free_wsi(wsi, LWS_CLOSE_STATUS_NOSTATUS);
|
||||
lws_close_free_wsi(wsi, LWS_CLOSE_STATUS_NOSTATUS, "excessive ah");
|
||||
|
||||
ah = pt->ah_list;
|
||||
}
|
||||
|
@ -1838,7 +1838,7 @@ drain:
|
|||
|
||||
close_and_handled:
|
||||
lwsl_debug("%p: Close and handled\n", wsi);
|
||||
lws_close_free_wsi(wsi, LWS_CLOSE_STATUS_NOSTATUS);
|
||||
lws_close_free_wsi(wsi, LWS_CLOSE_STATUS_NOSTATUS, "close_and_handled");
|
||||
/*
|
||||
* pollfd may point to something else after the close
|
||||
* due to pollfd swapping scheme on delete on some platforms
|
||||
|
|
Loading…
Add table
Reference in a new issue