diff --git a/lib/libwebsockets.c b/lib/libwebsockets.c index 3e21aaf8..a1d08245 100644 --- a/lib/libwebsockets.c +++ b/lib/libwebsockets.c @@ -852,8 +852,12 @@ just_kill_connection: wsi->protocol->callback && wsi->mode != LWSCM_RAW && (wsi->state_pre_close & _LSF_CCB)) { - wsi->protocol->callback(wsi, LWS_CALLBACK_CLOSED, - wsi->user_space, NULL, 0); + if (wsi->mode == LWSCM_WS_CLIENT) + wsi->protocol->callback(wsi, LWS_CALLBACK_CLIENT_CLOSED, + wsi->user_space, NULL, 0); + else + wsi->protocol->callback(wsi, LWS_CALLBACK_CLOSED, + wsi->user_space, NULL, 0); } else if (wsi->mode == LWSCM_HTTP_SERVING_ACCEPTED) { lwsl_debug("calling back CLOSED_HTTP\n"); wsi->vhost->protocols->callback(wsi, LWS_CALLBACK_CLOSED_HTTP, diff --git a/lib/libwebsockets.h b/lib/libwebsockets.h index aa614a3d..264dd994 100644 --- a/lib/libwebsockets.h +++ b/lib/libwebsockets.h @@ -1462,6 +1462,8 @@ enum lws_callback_reasons { * reported to the vhost in question here, including completion * and failure. in points to optional JSON, and len represents the * connection state using enum lws_cert_update_state */ + LWS_CALLBACK_CLIENT_CLOSED = 75, + /**< when a client websocket session ends */ /****** add new things just above ---^ ******/ diff --git a/minimal-examples/minimal-ws-client/minimal-ws-client.c b/minimal-examples/minimal-ws-client/minimal-ws-client.c index c040dcba..e3cb44d4 100644 --- a/minimal-examples/minimal-ws-client/minimal-ws-client.c +++ b/minimal-examples/minimal-ws-client/minimal-ws-client.c @@ -42,7 +42,7 @@ callback_dumb_increment(struct lws *wsi, enum lws_callback_reasons reason, lwsl_user("RX: %s\n", (const char *)in); break; - case LWS_CALLBACK_CLOSED: + case LWS_CALLBACK_CLIENT_CLOSED: client_wsi = NULL; break;