Media over Websocket Channel Driver

* Created chan_websocket which can exchange media over both inbound and
outbound websockets which the driver will frame and time.
See http://s.asterisk.net/mow for more information.

* res_http_websocket: Made defines for max message size public and converted
a few nuisance verbose messages to debugs.

* main/channel.c: Changed an obsolete nuisance error to a debug.

* ARI channels: Updated externalMedia to include chan_websocket as a supported
transport.

UserNote: A new channel driver "chan_websocket" is now available. It can
exchange media over both inbound and outbound websockets and will both frame
and re-time the media it receives.
See http://s.asterisk.net/mow for more information.

UserNote: The ARI channels/externalMedia API now includes support for the
WebSocket transport provided by chan_websocket.
This commit is contained in:
George Joseph
2025-04-28 10:39:50 -06:00
parent bf1e0a213f
commit 07fd3af897
8 changed files with 1672 additions and 54 deletions

View File

@@ -3532,16 +3532,12 @@ static struct ast_frame *__ast_read(struct ast_channel *chan, int dropaudio, int
* The ast_waitfor() code records which of the channel's file
* descriptors reported that data is available. In theory,
* ast_read() should only be called after ast_waitfor() reports
* that a channel has data available for reading. However,
* there still may be some edge cases throughout the code where
* ast_read() is called improperly. This can potentially cause
* problems, so if this is a developer build, make a lot of
* noise if this happens so that it can be addressed.
*
* One of the potential problems is blocking on a dead channel.
* that a channel has data available for reading but certain
* situations with stasis and ARI could give a false indication.
* For this reason, we don't stop any processing.
*/
if (ast_channel_fdno(chan) == -1) {
ast_log(LOG_ERROR,
ast_debug(3,
"ast_read() on chan '%s' called with no recorded file descriptor.\n",
ast_channel_name(chan));
}