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
This commit is contained in:
Joshua Colp
2015-08-13 07:26:51 -03:00
parent 0bc6fe6f7d
commit e18c300550

View File

@@ -167,9 +167,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);