Asterisk - The Open Source Telephony Project GIT-master-0a46be9
|
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 | 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) } |
enum | { OPT_ARG_WS_CODEC , OPT_ARG_WS_NO_AUTO_ANSWER , OPT_ARG_WS_URI_PARAM , 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. More... | |
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. More... | |
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_write (struct ast_channel *ast, struct ast_frame *f) |
Function called when we should write a frame to the channel. More... | |
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 = "This paragraph is copyright (c) 2006 by Digium, Inc. \In order for your module to load, it must return this \key via a function called \"key\". Any code which \includes this paragraph must be licensed under the GNU \General Public License version 2 or later (at your \option). In addition to Digium's general reservations \of rights, Digium expressly reserves the right to \allow other parties to license this paragraph under \different terms. Any use of Digium, Inc. trademarks or \logos (including \"Asterisk\" or \"Digium\") without \express written permission of Digium, Inc. is prohibited.\n" , .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 }, } |
static struct ast_channel_tech | websocket_tech |
Websocket Media Channel.
Definition in file chan_websocket.c.
#define ANSWER_CHANNEL "ANSWER" |
Definition at line 143 of file chan_websocket.c.
#define CONTINUE_MEDIA "CONTINUE_MEDIA" |
Definition at line 151 of file chan_websocket.c.
#define DRIVER_STATUS "STATUS" |
Definition at line 157 of file chan_websocket.c.
#define FLUSH_MEDIA "FLUSH_MEDIA" |
Definition at line 147 of file chan_websocket.c.
#define GET_DRIVER_STATUS "GET_STATUS" |
Definition at line 148 of file chan_websocket.c.
#define HANGUP_CHANNEL "HANGUP" |
Definition at line 144 of file chan_websocket.c.
#define INCOMING_CONNECTION_ID "INCOMING" |
Definition at line 141 of file chan_websocket.c.
#define MAX_TEXT_MESSAGE_LEN MIN(128, (AST_WEBSOCKET_MAX_RX_PAYLOAD_SIZE - 1)) |
Definition at line 163 of file chan_websocket.c.
#define MEDIA_BUFFERING_COMPLETED "MEDIA_BUFFERING_COMPLETED" |
Definition at line 158 of file chan_websocket.c.
#define MEDIA_START "MEDIA_START" |
Definition at line 153 of file chan_websocket.c.
#define MEDIA_WEBSOCKET_CONNECTION_ID "MEDIA_WEBSOCKET_CONNECTION_ID" |
Definition at line 140 of file chan_websocket.c.
#define MEDIA_WEBSOCKET_OPTIMAL_FRAME_SIZE "MEDIA_WEBSOCKET_OPTIMAL_FRAME_SIZE" |
Definition at line 139 of file chan_websocket.c.
#define MEDIA_XOFF "MEDIA_XOFF" |
Definition at line 155 of file chan_websocket.c.
#define MEDIA_XON "MEDIA_XON" |
Definition at line 154 of file chan_websocket.c.
#define PAUSE_MEDIA "PAUSE_MEDIA" |
Definition at line 150 of file chan_websocket.c.
#define QUEUE_DRAINED "QUEUE_DRAINED" |
Definition at line 156 of file chan_websocket.c.
#define QUEUE_LENGTH_MAX 1000 |
Definition at line 160 of file chan_websocket.c.
#define QUEUE_LENGTH_XOFF_LEVEL 900 |
Definition at line 161 of file chan_websocket.c.
#define QUEUE_LENGTH_XON_LEVEL 800 |
Definition at line 162 of file chan_websocket.c.
#define REPORT_QUEUE_DRAINED "REPORT_QUEUE_DRAINED" |
Definition at line 149 of file chan_websocket.c.
#define START_MEDIA_BUFFERING "START_MEDIA_BUFFERING" |
Definition at line 145 of file chan_websocket.c.
#define STOP_MEDIA_BUFFERING "STOP_MEDIA_BUFFERING" |
Definition at line 146 of file chan_websocket.c.
anonymous enum |
Enumerator | |
---|---|
OPT_WS_CODEC | |
OPT_WS_NO_AUTO_ANSWER | |
OPT_WS_URI_PARAM |
Definition at line 1191 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_ARRAY_SIZE |
Definition at line 1197 of file chan_websocket.c.
|
static |
Definition at line 1647 of file chan_websocket.c.
|
static |
Definition at line 1647 of file chan_websocket.c.
struct ast_module * AST_MODULE_SELF_SYM | ( | void | ) |
Definition at line 1647 of file chan_websocket.c.
|
static |
Definition at line 198 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 1422 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 1490 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 982 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 1596 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 586 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, queue_frame_from_buffer(), QUEUE_LENGTH_MAX, and SCOPED_LOCK.
Referenced by read_from_ws_and_queue().
|
static |
Definition at line 467 of file chan_websocket.c.
References ANSWER_CHANNEL, ast_alloca, ast_asprintf, ast_begins_with(), ast_channel_name(), 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, 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 403 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 440 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 706 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 778 of file chan_websocket.c.
References ao2_cleanup, ast_asprintf, ast_channel_name(), 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 182 of file chan_websocket.c.
References ast_channel_rawreadformat(), ast_channel_set_rawreadformat(), ast_debug, ast_format_cmp(), AST_FORMAT_CMP_NOT_EQUAL, ast_format_get_name(), and websocket_pvt::channel.
Referenced by webchan_read().
|
static |
Definition at line 1126 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 1147 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 1103 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 1072 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 1575 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 1164 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 858 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 1382 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 303 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, 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 1210 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_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 |
Function called when we should write a frame to the channel.
Definition at line 828 of file chan_websocket.c.
References ast_channel_name(), ast_channel_tech_pvt(), 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 917 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 989 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_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 1647 of file chan_websocket.c.
|
static |
Definition at line 1647 of file chan_websocket.c.
|
static |
Definition at line 107 of file chan_websocket.c.
Referenced by incoming_ws_http_callback(), load_module(), and unload_module().
|
static |
Definition at line 1564 of file chan_websocket.c.
Referenced by load_module(), and unload_module().
|
static |
Definition at line 109 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 1208 of file chan_websocket.c.
Referenced by webchan_request().
|
static |
Definition at line 172 of file chan_websocket.c.
Referenced by load_module(), unload_module(), and webchan_request().