[asterisk-bugs] [JIRA] (ASTERISK-28958) Continue reading string when ping received by websocket
Nickolay V. Shmyrev (JIRA)
noreply at issues.asterisk.org
Mon Jun 22 10:31:25 CDT 2020
Nickolay V. Shmyrev created ASTERISK-28958:
----------------------------------------------
Summary: Continue reading string when ping received by websocket
Key: ASTERISK-28958
URL: https://issues.asterisk.org/jira/browse/ASTERISK-28958
Project: Asterisk
Issue Type: Improvement
Security Level: None
Components: Resources/res_http_websocket
Affects Versions: GIT
Reporter: Nickolay V. Shmyrev
While implementing websocket-based speech recognition server https://github.com/alphacep/vosk-asterisk I had the following issue.
According to websocket specification client can receive ping control frame any time. In that case the following error is thrown by client reading for the string when client uses ast_websocket_read_string:
{code}
if (opcode != AST_WEBSOCKET_OPCODE_TEXT) {
ast_log(LOG_ERROR, "Client WebSocket string read - "
"non string data received\n");
return -1;
}
{code}
The proposed change should solve this problem by continue reading the string after ping is recieved:
{code}
@@ -1435,6 +1435,12 @@ int AST_OPTIONAL_API_NAME(ast_websocket_
return -1;
}
+ if (opcode == AST_WEBSOCKET_OPCODE_PING) {
+ /* Try again, we have sent pong already */
+ fragmented = 1;
+ continue;
+ }
+
if (opcode == AST_WEBSOCKET_OPCODE_CONTINUATION) {
continue;
}
{code}
--
This message was sent by Atlassian JIRA
(v6.2#6252)
More information about the asterisk-bugs
mailing list