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. Also a notice is logged stating that the websocket was
disconnected.

ASTERISK-24701 #close
Reported by: Matt Jordan
Review: https://reviewboard.asterisk.org/r/4412/
........

Merged revisions 431669 from http://svn.asterisk.org/svn/asterisk/branches/11
........

Merged revisions 431670 from http://svn.asterisk.org/svn/asterisk/branches/13


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431671 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Kevin Harwell
2015-02-11 16:52:55 +00:00
parent 49161d8df8
commit 137c4b0778
2 changed files with 21 additions and 3 deletions

View File

@@ -307,11 +307,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)) {
ao2_unlock(session);
/* 1011 - server terminating connection due to not being able to fulfill the request */
ast_websocket_close(session, 1011);
return -1;
}
if (ast_careful_fwrite(session->f, session->fd, payload, actual_length, session->timeout)) {
ao2_unlock(session);
/* 1011 - server terminating connection due to not being able to fulfill the request */
ast_websocket_close(session, 1011);
return -1;
}
fflush(session->f);