mirror of
https://github.com/asterisk/asterisk.git
synced 2025-11-08 19:08:14 +00:00
res_http_websocket: websocket write timeout fails to fully disconnect
When writing to a websocket if a timeout occurred the underlying socket did not get closed/disconnected. This patch makes sure the websocket gets disconnected on a write timeout. ASTERISK-24701 #close Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/4412/ git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/11@431669 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -255,11 +255,15 @@ int AST_OPTIONAL_API_NAME(ast_websocket_write)(struct ast_websocket *session, en
|
|||||||
|
|
||||||
if (ast_careful_fwrite(session->f, session->fd, frame, header_size, session->timeout)) {
|
if (ast_careful_fwrite(session->f, session->fd, frame, header_size, session->timeout)) {
|
||||||
ao2_unlock(session);
|
ao2_unlock(session);
|
||||||
|
/* 1011 - server terminating connection due to not being able to fulfill the request */
|
||||||
|
ast_websocket_close(session, 1011);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ast_careful_fwrite(session->f, session->fd, payload, actual_length, session->timeout)) {
|
if (ast_careful_fwrite(session->f, session->fd, payload, actual_length, session->timeout)) {
|
||||||
ao2_unlock(session);
|
ao2_unlock(session);
|
||||||
|
/* 1011 - server terminating connection due to not being able to fulfill the request */
|
||||||
|
ast_websocket_close(session, 1011);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
fflush(session->f);
|
fflush(session->f);
|
||||||
|
|||||||
Reference in New Issue
Block a user