| Asterisk - The Open Source Telephony Project GIT-master-27fb039
    | 
Websocket Media Channel. More...
#include "asterisk.h"#include "asterisk/app.h"#include "asterisk/causes.h"#include "asterisk/channel.h"#include "asterisk/codec.h"#include "asterisk/http_websocket.h"#include "asterisk/format_cache.h"#include "asterisk/frame.h"#include "asterisk/lock.h"#include "asterisk/mod_format.h"#include "asterisk/module.h"#include "asterisk/pbx.h"#include "asterisk/uuid.h"#include "asterisk/timing.h"#include "asterisk/translate.h"#include "asterisk/websocket_client.h"
Go to the source code of this file.
| Data Structures | |
| struct | instance_proxy | 
| struct | websocket_pvt | 
| Macros | |
| #define | ANSWER_CHANNEL "ANSWER" | 
| #define | CONTINUE_MEDIA "CONTINUE_MEDIA" | 
| #define | DRIVER_STATUS "STATUS" | 
| #define | DTMF_END "DTMF_END" | 
| #define | FLUSH_MEDIA "FLUSH_MEDIA" | 
| #define | GET_DRIVER_STATUS "GET_STATUS" | 
| #define | HANGUP_CHANNEL "HANGUP" | 
| #define | INCOMING_CONNECTION_ID "INCOMING" | 
| #define | MAX_TEXT_MESSAGE_LEN MIN(128, (AST_WEBSOCKET_MAX_RX_PAYLOAD_SIZE - 1)) | 
| #define | MEDIA_BUFFERING_COMPLETED "MEDIA_BUFFERING_COMPLETED" | 
| #define | MEDIA_START "MEDIA_START" | 
| #define | MEDIA_WEBSOCKET_CONNECTION_ID "MEDIA_WEBSOCKET_CONNECTION_ID" | 
| #define | MEDIA_WEBSOCKET_OPTIMAL_FRAME_SIZE "MEDIA_WEBSOCKET_OPTIMAL_FRAME_SIZE" | 
| #define | MEDIA_XOFF "MEDIA_XOFF" | 
| #define | MEDIA_XON "MEDIA_XON" | 
| #define | PAUSE_MEDIA "PAUSE_MEDIA" | 
| #define | QUEUE_DRAINED "QUEUE_DRAINED" | 
| #define | QUEUE_LENGTH_MAX 1000 | 
| #define | QUEUE_LENGTH_XOFF_LEVEL 900 | 
| #define | QUEUE_LENGTH_XON_LEVEL 800 | 
| #define | REPORT_QUEUE_DRAINED "REPORT_QUEUE_DRAINED" | 
| #define | START_MEDIA_BUFFERING "START_MEDIA_BUFFERING" | 
| #define | STOP_MEDIA_BUFFERING "STOP_MEDIA_BUFFERING" | 
| Enumerations | |
| enum | { OPT_WS_CODEC = (1 << 0) , OPT_WS_NO_AUTO_ANSWER = (1 << 1) , OPT_WS_URI_PARAM = (1 << 2) , OPT_WS_PASSTHROUGH = (1 << 3) } | 
| enum | { OPT_ARG_WS_CODEC , OPT_ARG_WS_NO_AUTO_ANSWER , OPT_ARG_WS_URI_PARAM , OPT_ARG_WS_PASSTHROUGH , OPT_ARG_ARRAY_SIZE } | 
| Functions | |
| static void | __reg_module (void) | 
| static void | __unreg_module (void) | 
| struct ast_module * | AST_MODULE_SELF_SYM (void) | 
| static struct ast_frame * | dequeue_frame (struct websocket_pvt *instance) | 
| static void | incoming_ws_established_cb (struct ast_websocket *ast_ws_session, struct ast_variable *get_params, struct ast_variable *upgrade_headers) | 
| static int | incoming_ws_http_callback (struct ast_tcptls_session_instance *ser, const struct ast_http_uri *urih, const char *uri, enum ast_http_method method, struct ast_variable *get_params, struct ast_variable *headers) | 
| static void | instance_proxy_cb (void *weakproxy, void *data) | 
| static int | load_module (void) | 
| Function called when our module is loaded. | |
| static int | process_binary_message (struct websocket_pvt *instance, char *payload, uint64_t payload_len) | 
| static int | process_text_message (struct websocket_pvt *instance, char *payload, uint64_t payload_len) | 
| static int | queue_frame_from_buffer (struct websocket_pvt *instance, char *buffer, size_t len) | 
| static int | queue_option_frame (struct websocket_pvt *instance, char *buffer) | 
| static int | read_from_ws_and_queue (struct websocket_pvt *instance) | 
| static void * | read_thread_handler (void *obj) | 
| static void | set_channel_format (struct websocket_pvt *instance, struct ast_format *fmt) | 
| static int | set_channel_timer (struct websocket_pvt *instance) | 
| static int | set_channel_variables (struct websocket_pvt *instance) | 
| static int | set_instance_silence_frame (struct websocket_pvt *instance) | 
| static int | set_instance_translator (struct websocket_pvt *instance) | 
| static int | unload_module (void) | 
| Function called when our module is unloaded. | |
| static int | validate_uri_parameters (const char *uri_params) | 
| static int | webchan_call (struct ast_channel *ast, const char *dest, int timeout) | 
| static int | webchan_hangup (struct ast_channel *ast) | 
| static struct ast_frame * | webchan_read (struct ast_channel *ast) | 
| static struct ast_channel * | webchan_request (const char *type, struct ast_format_cap *cap, const struct ast_assigned_ids *assignedids, const struct ast_channel *requestor, const char *data, int *cause) | 
| static int | webchan_send_dtmf_text (struct ast_channel *ast, char digit, unsigned int duration) | 
| static int | webchan_write (struct ast_channel *ast, struct ast_frame *f) | 
| Function called when we should write a frame to the channel. | |
| static void | websocket_destructor (void *data) | 
| static struct websocket_pvt * | websocket_new (const char *chan_name, const char *connection_id, struct ast_format *fmt) | 
| Variables | |
| static struct ast_module_info | __mod_info = { .name = AST_MODULE, .flags = AST_MODFLAG_LOAD_ORDER , .description = "Websocket Media Channel" , .key = ASTERISK_GPL_KEY , .buildopt_sum = AST_BUILDOPT_SUM, .support_level = AST_MODULE_SUPPORT_CORE, .load = load_module, .unload = unload_module, .load_pri = AST_MODPRI_CHANNEL_DRIVER, .requires = "res_http_websocket,res_websocket_client", } | 
| static const struct ast_module_info * | ast_module_info = &__mod_info | 
| static struct ast_websocket_server * | ast_ws_server | 
| static struct ast_http_uri | http_uri | 
| static struct ao2_container * | instances = NULL | 
| static const struct ast_app_option | websocket_options [128] = { [ 'c' ] = { .flag = OPT_WS_CODEC , .arg_index = OPT_ARG_WS_CODEC + 1 }, [ 'n' ] = { .flag = OPT_WS_NO_AUTO_ANSWER }, [ 'v' ] = { .flag = OPT_WS_URI_PARAM , .arg_index = OPT_ARG_WS_URI_PARAM + 1 }, [ 'p' ] = { .flag = OPT_WS_PASSTHROUGH }, } | 
| static struct ast_channel_tech | websocket_tech | 
Websocket Media Channel.
Definition in file chan_websocket.c.
| #define ANSWER_CHANNEL "ANSWER" | 
Definition at line 159 of file chan_websocket.c.
| #define CONTINUE_MEDIA "CONTINUE_MEDIA" | 
Definition at line 167 of file chan_websocket.c.
| #define DRIVER_STATUS "STATUS" | 
Definition at line 173 of file chan_websocket.c.
| #define DTMF_END "DTMF_END" | 
Definition at line 175 of file chan_websocket.c.
| #define FLUSH_MEDIA "FLUSH_MEDIA" | 
Definition at line 163 of file chan_websocket.c.
| #define GET_DRIVER_STATUS "GET_STATUS" | 
Definition at line 164 of file chan_websocket.c.
| #define HANGUP_CHANNEL "HANGUP" | 
Definition at line 160 of file chan_websocket.c.
| #define INCOMING_CONNECTION_ID "INCOMING" | 
Definition at line 157 of file chan_websocket.c.
| #define MAX_TEXT_MESSAGE_LEN MIN(128, (AST_WEBSOCKET_MAX_RX_PAYLOAD_SIZE - 1)) | 
Definition at line 180 of file chan_websocket.c.
| #define MEDIA_BUFFERING_COMPLETED "MEDIA_BUFFERING_COMPLETED" | 
Definition at line 174 of file chan_websocket.c.
| #define MEDIA_START "MEDIA_START" | 
Definition at line 169 of file chan_websocket.c.
| #define MEDIA_WEBSOCKET_CONNECTION_ID "MEDIA_WEBSOCKET_CONNECTION_ID" | 
Definition at line 156 of file chan_websocket.c.
| #define MEDIA_WEBSOCKET_OPTIMAL_FRAME_SIZE "MEDIA_WEBSOCKET_OPTIMAL_FRAME_SIZE" | 
Definition at line 155 of file chan_websocket.c.
| #define MEDIA_XOFF "MEDIA_XOFF" | 
Definition at line 171 of file chan_websocket.c.
| #define MEDIA_XON "MEDIA_XON" | 
Definition at line 170 of file chan_websocket.c.
| #define PAUSE_MEDIA "PAUSE_MEDIA" | 
Definition at line 166 of file chan_websocket.c.
| #define QUEUE_DRAINED "QUEUE_DRAINED" | 
Definition at line 172 of file chan_websocket.c.
| #define QUEUE_LENGTH_MAX 1000 | 
Definition at line 177 of file chan_websocket.c.
| #define QUEUE_LENGTH_XOFF_LEVEL 900 | 
Definition at line 178 of file chan_websocket.c.
| #define QUEUE_LENGTH_XON_LEVEL 800 | 
Definition at line 179 of file chan_websocket.c.
| #define REPORT_QUEUE_DRAINED "REPORT_QUEUE_DRAINED" | 
Definition at line 165 of file chan_websocket.c.
| #define START_MEDIA_BUFFERING "START_MEDIA_BUFFERING" | 
Definition at line 161 of file chan_websocket.c.
| #define STOP_MEDIA_BUFFERING "STOP_MEDIA_BUFFERING" | 
Definition at line 162 of file chan_websocket.c.
| anonymous enum | 
| Enumerator | |
|---|---|
| OPT_WS_CODEC | |
| OPT_WS_NO_AUTO_ANSWER | |
| OPT_WS_URI_PARAM | |
| OPT_WS_PASSTHROUGH | |
Definition at line 1275 of file chan_websocket.c.
| anonymous enum | 
| Enumerator | |
|---|---|
| OPT_ARG_WS_CODEC | |
| OPT_ARG_WS_NO_AUTO_ANSWER | |
| OPT_ARG_WS_URI_PARAM | |
| OPT_ARG_WS_PASSTHROUGH | |
| OPT_ARG_ARRAY_SIZE | |
Definition at line 1282 of file chan_websocket.c.
| 
 | static | 
Definition at line 1763 of file chan_websocket.c.
| 
 | static | 
Definition at line 1763 of file chan_websocket.c.
| struct ast_module * AST_MODULE_SELF_SYM | ( | void | ) | 
Definition at line 1763 of file chan_websocket.c.
| 
 | static | 
Definition at line 218 of file chan_websocket.c.
References ast_channel_name(), AST_CONTROL_OPTION, ast_debug, AST_FRAME_CONTROL, ast_frame_free(), AST_LIST_LOCK, AST_LIST_REMOVE_HEAD, AST_LIST_UNLOCK, ast_websocket_write_string(), websocket_pvt::channel, ast_frame::data, websocket_pvt::frame_queue, websocket_pvt::frame_queue_length, ast_frame::frametype, ast_frame_subclass::integer, MEDIA_XON, NULL, ast_frame::ptr, QUEUE_DRAINED, websocket_pvt::queue_full, QUEUE_LENGTH_XON_LEVEL, websocket_pvt::queue_paused, websocket_pvt::report_queue_drained, SCOPED_LOCK, ast_frame::subclass, and websocket_pvt::websocket.
Referenced by webchan_read().
| 
 | static | 
Definition at line 1538 of file chan_websocket.c.
References ao2_bump, ao2_cleanup, ao2_weakproxy_find, AST_CONTROL_HANGUP, ast_debug, ast_log, ast_queue_control(), ast_variable_find_in_list(), ast_websocket_close(), ast_websocket_fd(), ast_websocket_unref(), websocket_pvt::channel, websocket_pvt::connection_id, errno, instances, LOG_WARNING, ast_variable::name, ast_variable::next, NULL, OBJ_NOLOCK, OBJ_SEARCH_KEY, RAII_VAR, read_thread_handler(), ast_variable::value, and websocket_pvt::websocket.
Referenced by load_module().
| 
 | static | 
Definition at line 1606 of file chan_websocket.c.
References ao2_cleanup, ao2_weakproxy_find, ast_channel_name(), ast_debug, ast_http_error(), ast_log, ast_variable_list_append, ast_variable_new, ast_variables_destroy(), ast_websocket_uri_cb(), ast_ws_server, ast_http_uri::data, instances, LOG_WARNING, method, ast_variable::name, ast_variable::next, NULL, OBJ_NOLOCK, OBJ_SEARCH_KEY, RAII_VAR, and ast_variable::value.
| 
 | static | 
Definition at line 1045 of file chan_websocket.c.
References ao2_unlink, ast_debug, instance_proxy::connection_id, and instances.
Referenced by websocket_new().
| 
 | static | 
Function called when our module is loaded.
Definition at line 1712 of file chan_websocket.c.
References AO2_ALLOC_OPT_LOCK_RWLOCK, ao2_container_alloc_hash, AO2_CONTAINER_ALLOC_OPT_DUPS_REPLACE, ast_channel_register(), ast_format_cap_alloc, ast_format_cap_append_by_type(), AST_FORMAT_CAP_FLAG_DEFAULT, ast_http_uri_link(), ast_log, AST_MEDIA_TYPE_UNKNOWN, AST_MODULE_LOAD_DECLINE, AST_MODULE_LOAD_SUCCESS, ast_websocket_server_add_protocol2(), ast_websocket_server_create(), ast_websocket_sub_protocol_alloc(), ast_ws_server, ast_channel_tech::capabilities, http_uri, incoming_ws_established_cb(), instances, LOG_ERROR, LOG_WARNING, ast_websocket_protocol::session_established, unload_module(), and websocket_tech.
| 
 | static | 
Definition at line 641 of file chan_websocket.c.
References ast_channel_name(), ast_debug, AST_LIST_LOCK, AST_LIST_UNLOCK, websocket_pvt::bulk_media_in_progress, websocket_pvt::bytes_read, websocket_pvt::channel, websocket_pvt::frame_queue, websocket_pvt::frame_queue_length, websocket_pvt::leftover_data, websocket_pvt::leftover_len, MIN, NULL, websocket_pvt::optimal_frame_size, websocket_pvt::passthrough, queue_frame_from_buffer(), QUEUE_LENGTH_MAX, and SCOPED_LOCK.
Referenced by read_from_ws_and_queue().
| 
 | static | 
Definition at line 487 of file chan_websocket.c.
References ANSWER_CHANNEL, ast_alloca, ast_asprintf, ast_begins_with(), ast_channel_name(), ast_channel_uniqueid(), AST_CONTROL_ANSWER, AST_CONTROL_HANGUP, ast_debug, ast_free, ast_frfree, AST_LIST_LOCK, AST_LIST_REMOVE_HEAD, AST_LIST_UNLOCK, ast_log, ast_queue_control(), ast_strings_equal(), ast_strip(), ast_strlen_zero(), ast_websocket_write_string(), websocket_pvt::bulk_media_in_progress, websocket_pvt::channel, CONTINUE_MEDIA, DRIVER_STATUS, FLUSH_MEDIA, websocket_pvt::frame_queue, websocket_pvt::frame_queue_length, GET_DRIVER_STATUS, HANGUP_CHANNEL, id, websocket_pvt::leftover_data, websocket_pvt::leftover_len, LOG_WARNING, MAX_TEXT_MESSAGE_LEN, MEDIA_BUFFERING_COMPLETED, NULL, websocket_pvt::passthrough, PAUSE_MEDIA, queue_frame_from_buffer(), websocket_pvt::queue_full, QUEUE_LENGTH_XOFF_LEVEL, QUEUE_LENGTH_XON_LEVEL, queue_option_frame(), websocket_pvt::queue_paused, websocket_pvt::report_queue_drained, REPORT_QUEUE_DRAINED, S_COR, S_OR, SCOPED_LOCK, START_MEDIA_BUFFERING, status, STOP_MEDIA_BUFFERING, and websocket_pvt::websocket.
Referenced by read_from_ws_and_queue().
| 
 | static | 
Definition at line 423 of file chan_websocket.c.
References ast_channel_name(), ast_debug, AST_FRAME_SET_BUFFER, AST_FRAME_VOICE, ast_frisolate, AST_LIST_INSERT_TAIL, AST_LIST_LOCK, AST_LIST_UNLOCK, ast_log, ast_websocket_write_string(), websocket_pvt::channel, ast_frame::datalen, ast_frame_subclass::format, websocket_pvt::frame_queue, websocket_pvt::frame_queue_length, ast_frame::frametype, len(), LOG_WARNING, MEDIA_XOFF, websocket_pvt::native_codec, websocket_pvt::native_format, NULL, websocket_pvt::queue_full, QUEUE_LENGTH_XOFF_LEVEL, ast_frame::samples, ast_codec::samples_count, SCOPED_LOCK, ast_frame::subclass, and websocket_pvt::websocket.
Referenced by process_binary_message(), and process_text_message().
| 
 | static | 
Definition at line 460 of file chan_websocket.c.
References ast_channel_name(), AST_CONTROL_OPTION, ast_debug, AST_FRAME_CONTROL, AST_FRAME_SET_BUFFER, ast_frisolate, AST_LIST_INSERT_TAIL, AST_LIST_LOCK, AST_LIST_UNLOCK, ast_log, websocket_pvt::channel, websocket_pvt::frame_queue, ast_frame::frametype, ast_frame_subclass::integer, LOG_WARNING, NULL, and ast_frame::subclass.
Referenced by process_text_message().
| 
 | static | 
Definition at line 766 of file chan_websocket.c.
References ao2_lock, ao2_unlock, ast_channel_name(), ast_debug, ast_log, ast_wait_for_input(), ast_websocket_fd(), AST_WEBSOCKET_OPCODE_BINARY, AST_WEBSOCKET_OPCODE_CLOSE, AST_WEBSOCKET_OPCODE_TEXT, ast_websocket_read(), websocket_pvt::channel, errno, LOG_WARNING, NULL, process_binary_message(), process_text_message(), and websocket_pvt::websocket.
Referenced by read_thread_handler().
| 
 | static | 
Definition at line 838 of file chan_websocket.c.
References ao2_cleanup, ast_asprintf, ast_channel_name(), ast_channel_uniqueid(), AST_CONTROL_ANSWER, AST_CONTROL_HANGUP, ast_debug, ast_format_get_name(), ast_free, ast_log, ast_queue_control(), ast_websocket_write_string(), LOG_ERROR, MEDIA_START, NULL, RAII_VAR, and read_from_ws_and_queue().
Referenced by incoming_ws_established_cb(), and webchan_call().
| 
 | static | 
Definition at line 201 of file chan_websocket.c.
References ast_channel_rawreadformat(), ast_channel_readformat(), ast_channel_set_rawreadformat(), ast_debug, ast_format_cmp(), AST_FORMAT_CMP_NOT_EQUAL, ast_format_get_name(), ast_set_read_format(), and websocket_pvt::channel.
Referenced by webchan_read().
| 
 | static | 
Definition at line 1210 of file chan_websocket.c.
References ast_channel_name(), ast_channel_set_fd(), ast_debug, ast_format_get_default_ms(), ast_timer_fd(), ast_timer_open(), ast_timer_set_rate(), websocket_pvt::channel, websocket_pvt::native_format, and websocket_pvt::timer.
Referenced by webchan_request().
| 
 | static | 
Definition at line 1231 of file chan_websocket.c.
References ast_asprintf, ast_free, websocket_pvt::channel, websocket_pvt::connection_id, MEDIA_WEBSOCKET_CONNECTION_ID, MEDIA_WEBSOCKET_OPTIMAL_FRAME_SIZE, NULL, websocket_pvt::optimal_frame_size, and pbx_builtin_setvar_helper().
Referenced by webchan_request().
| 
 | static | 
Definition at line 1187 of file chan_websocket.c.
References ast_calloc, AST_FRAME_VOICE, ast_frame::data, ast_frame::datalen, ast_codec::default_ms, ast_frame_subclass::format, ast_frame::frametype, ast_frame::mallocd, ast_codec::minimum_bytes, ast_codec::minimum_ms, ast_frame::offset, ast_frame::ptr, ast_frame::samples, websocket_pvt::silence, websocket_pvt::slin_codec, websocket_pvt::slin_format, ast_frame::src, and ast_frame::subclass.
Referenced by webchan_request().
| 
 | static | 
Definition at line 1156 of file chan_websocket.c.
References ao2_bump, ast_channel_name(), ast_debug, ast_format_cache_get_slin_by_rate(), ast_format_cache_is_slinear(), ast_format_get_codec(), ast_format_get_default_ms(), ast_format_get_name(), ast_format_get_sample_rate(), ast_log, ast_translator_build_path(), websocket_pvt::channel, LOG_ERROR, websocket_pvt::native_codec, websocket_pvt::native_format, ast_codec::sample_rate, websocket_pvt::slin_codec, websocket_pvt::slin_format, and websocket_pvt::translator.
Referenced by webchan_request().
| 
 | static | 
Function called when our module is unloaded.
Definition at line 1691 of file chan_websocket.c.
References ao2_cleanup, ast_channel_unregister(), ast_http_uri_unlink(), ast_ws_server, ast_channel_tech::capabilities, http_uri, instances, NULL, and websocket_tech.
Referenced by load_module().
| 
 | static | 
Definition at line 1248 of file chan_websocket.c.
References ast_strdupa, ast_strsep(), ast_uri_verify_encoded(), NULL, and websocket_pvt::uri_params.
Referenced by webchan_request().
| 
 | static | 
Definition at line 921 of file chan_websocket.c.
References ao2_bump, ao2_cleanup, ast_channel_name(), ast_channel_tech_pvt(), ast_debug, ast_log, ast_pthread_create_detached_background, ast_strlen_zero(), ast_websocket_client_add_uri_params(), ast_websocket_client_connect(), ast_websocket_fd(), ast_websocket_result_to_str(), AST_WS_TYPE_SERVER, websocket_pvt::channel, websocket_pvt::client, websocket_pvt::connection_id, errno, LOG_WARNING, NULL, websocket_pvt::outbound_read_thread, read_thread_handler(), result, websocket_pvt::type, websocket_pvt::uri_params, websocket_pvt::websocket, and WS_OK.
| 
 | static | 
Definition at line 1472 of file chan_websocket.c.
References ao2_cleanup, ao2_lock, ao2_unlock, ast_channel_name(), ast_channel_tech_pvt(), ast_channel_tech_pvt_set(), ast_debug, ast_websocket_close(), ast_websocket_unref(), websocket_pvt::connection_id, NULL, and websocket_pvt::websocket.
| 
 | static | 
Definition at line 323 of file chan_websocket.c.
References ast_calloc, ast_channel_name(), ast_channel_tech_pvt(), ast_debug, ast_frame_free(), ast_frdup, ast_free, AST_FRIENDLY_OFFSET, ast_log, AST_MALLOCD_DATA, ast_timer_ack(), ast_timer_get_event(), AST_TIMING_EVENT_EXPIRED, ast_translate(), ast_frame::data, ast_frame::datalen, dequeue_frame(), LOG_WARNING, ast_frame::mallocd, websocket_pvt::native_format, NULL, ast_frame::offset, websocket_pvt::optimal_frame_size, websocket_pvt::passthrough, ast_frame::ptr, ast_frame::samples, set_channel_format(), websocket_pvt::silence, websocket_pvt::slin_format, websocket_pvt::timer, and websocket_pvt::translator.
| 
 | static | 
Definition at line 1297 of file chan_websocket.c.
References ao2_bump, ao2_cleanup, args, AST_APP_ARG, ast_app_parse_options(), AST_CAUSE_FAILURE, ast_channel_alloc, ast_channel_name(), ast_channel_nativeformats_set(), ast_channel_set_rawreadformat(), ast_channel_set_rawwriteformat(), ast_channel_set_readformat(), ast_channel_set_writeformat(), ast_channel_tech_pvt_set(), ast_channel_tech_set(), ast_channel_unlock, ast_debug, AST_DECLARE_APP_ARGS, ast_format_cache_get, ast_format_cap_alloc, ast_format_cap_append, AST_FORMAT_CAP_FLAG_DEFAULT, ast_format_cap_get_format(), ast_log, AST_NONSTANDARD_APP_ARGS, AST_STATE_DOWN, ast_strdup, ast_strdupa, ast_strings_equal(), ast_strlen_zero(), ast_test_flag, INCOMING_CONNECTION_ID, LOG_ERROR, LOG_WARNING, NULL, OPT_ARG_ARRAY_SIZE, OPT_ARG_WS_CODEC, OPT_ARG_WS_URI_PARAM, OPT_WS_CODEC, OPT_WS_NO_AUTO_ANSWER, OPT_WS_PASSTHROUGH, OPT_WS_URI_PARAM, options, RAII_VAR, set_channel_timer(), set_channel_variables(), set_instance_silence_frame(), set_instance_translator(), validate_uri_parameters(), websocket_new(), websocket_options, and websocket_tech.
| 
 | static | 
Definition at line 1503 of file chan_websocket.c.
References ast_asprintf, ast_channel_name(), ast_channel_tech_pvt(), ast_channel_uniqueid(), ast_debug, ast_free, ast_log, ast_websocket_write_string(), websocket_pvt::channel, digit, DTMF_END, LOG_ERROR, and websocket_pvt::websocket.
| 
 | static | 
Function called when we should write a frame to the channel.
Definition at line 889 of file chan_websocket.c.
References ast_channel_name(), ast_channel_tech_pvt(), ast_format_cmp(), AST_FORMAT_CMP_NOT_EQUAL, ast_format_get_name(), AST_FRAME_VOICE, ast_log, AST_WEBSOCKET_OPCODE_BINARY, ast_websocket_write(), ast_frame::data, ast_frame::datalen, ast_frame_subclass::format, ast_frame::frametype, LOG_WARNING, websocket_pvt::native_format, ast_frame::ptr, ast_frame::subclass, and websocket_pvt::websocket.
| 
 | static | 
Definition at line 980 of file chan_websocket.c.
References ao2_cleanup, ast_channel_unref, ast_debug, ast_free, ast_frfree, AST_LIST_LOCK, AST_LIST_REMOVE_HEAD, AST_LIST_UNLOCK, ast_timer_close(), ast_translator_free_path(), ast_websocket_unref(), websocket_pvt::channel, websocket_pvt::client, websocket_pvt::connection_id, ast_frame::data, websocket_pvt::frame_queue, websocket_pvt::leftover_data, websocket_pvt::native_codec, websocket_pvt::native_format, NULL, ast_frame::ptr, websocket_pvt::silence, websocket_pvt::slin_codec, websocket_pvt::slin_format, websocket_pvt::timer, websocket_pvt::translator, websocket_pvt::uri_params, and websocket_pvt::websocket.
Referenced by websocket_new().
| 
 | static | 
Definition at line 1052 of file chan_websocket.c.
References ao2_alloc, ao2_bump, ao2_cleanup, ao2_link_flags, ao2_weakproxy_alloc, ao2_weakproxy_set_object, ao2_weakproxy_subscribe(), ast_calloc, ast_debug, ast_format_get_codec(), ast_format_get_default_ms(), ast_format_get_minimum_bytes(), ast_format_get_minimum_ms(), ast_format_get_name(), ast_format_get_sample_rate(), AST_LIST_HEAD_INIT, ast_log, ast_strings_equal(), ast_uuid_generate_str(), AST_UUID_STR_LEN, ast_websocket_client_retrieve_by_id(), AST_WS_TYPE_CLIENT, AST_WS_TYPE_SERVER, websocket_pvt::connection_id, INCOMING_CONNECTION_ID, instance_proxy_cb(), instances, LOG_ERROR, NULL, OBJ_NOLOCK, RAII_VAR, SCOPED_AO2WRLOCK, uuid(), and websocket_destructor().
Referenced by webchan_request().
| 
 | static | 
Definition at line 1763 of file chan_websocket.c.
| 
 | static | 
Definition at line 1763 of file chan_websocket.c.
| 
 | static | 
Definition at line 122 of file chan_websocket.c.
Referenced by incoming_ws_http_callback(), load_module(), and unload_module().
| 
 | static | 
Definition at line 1680 of file chan_websocket.c.
Referenced by load_module(), and unload_module().
| 
 | static | 
Definition at line 124 of file chan_websocket.c.
Referenced by incoming_ws_established_cb(), incoming_ws_http_callback(), instance_proxy_cb(), load_module(), unload_module(), and websocket_new().
| 
 | static | 
Definition at line 1295 of file chan_websocket.c.
Referenced by webchan_request().
| 
 | static | 
Definition at line 190 of file chan_websocket.c.
Referenced by load_module(), unload_module(), and webchan_request().