From 7089472637a42c0aa9fe628257dc43544e244f58 Mon Sep 17 00:00:00 2001 From: Joshua Colp Date: Thu, 13 Aug 2015 07:26:51 -0300 Subject: [PATCH] res_http_websocket: When shutting down a session don't close closed socket Due to the use of ast_websocket_close in session termination it is possible for the underlying socket to already be closed when the session is terminated. This occurs when the close frame is attempted to be written out but fails. Change-Id: I7572583529a42a7dc911ea77a974d8307d5c0c8b --- res/res_http_websocket.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/res/res_http_websocket.c b/res/res_http_websocket.c index 8319579d58..4731f25951 100644 --- a/res/res_http_websocket.c +++ b/res/res_http_websocket.c @@ -173,9 +173,11 @@ static void session_destroy_fn(void *obj) if (session->f) { ast_websocket_close(session, 0); - fclose(session->f); - ast_verb(2, "WebSocket connection %s '%s' closed\n", session->client ? "to" : "from", - ast_sockaddr_stringify(&session->address)); + if (session->f) { + fclose(session->f); + ast_verb(2, "WebSocket connection %s '%s' closed\n", session->client ? "to" : "from", + ast_sockaddr_stringify(&session->address)); + } } ao2_cleanup(session->client); -- 2.47.2