Asterisk - The Open Source Telephony Project GIT-master-c7a8271
|
WebSocket support for RESTful API's. More...
#include "asterisk.h"
#include "resource_events.h"
#include "ari_websockets.h"
#include "internal.h"
#include "ari_model_validators.h"
#include "asterisk/app.h"
#include "asterisk/ari.h"
#include "asterisk/astobj2.h"
#include "asterisk/http_websocket.h"
#include "asterisk/module.h"
#include "asterisk/pbx.h"
#include "asterisk/stasis_app.h"
#include "asterisk/time.h"
#include "asterisk/uuid.h"
#include "asterisk/vector.h"
#include "asterisk/websocket_client.h"
Go to the source code of this file.
Macros | |
#define | APPS_INIT_SIZE 7 |
#define | ARI_CONTEXT_REGISTRAR "res_ari" |
#define | handle_create_error(ser, code, msg, reason) |
#define | MESSAGES_INIT_SIZE 23 |
#define | PER_CALL_FAIL_SAFE_TIMEOUT(owc) |
#define | SESSION_REGISTRY_NUM_BUCKETS 23 |
#define | STASIS_END_MAX_WAIT_MS 5000 |
#define | STASIS_END_POST_WAIT_US (3000 * 1000) |
#define | VALIDATION_FAILED |
Enumerations | |
enum | session_apply_result { SESSION_APPLY_NO_CHANGE , SESSION_APPLY_OK , SESSION_APPLY_RECONNECT_REQUIRED , SESSION_APPLY_FAILED } |
Functions | |
void | ari_handle_websocket (struct ast_tcptls_session_instance *ser, const char *uri, enum ast_http_method method, struct ast_variable *get_params, struct ast_variable *headers) |
Wrapper for invoking the websocket code for an incoming connection. More... | |
int | ari_outbound_websocket_start (struct ari_conf_outbound_websocket *owc) |
struct ari_ws_session * | ari_websocket_get_session (const char *session_id) |
struct ao2_container * | ari_websocket_get_sessions (void) |
int | ari_websocket_load_module (int is_enabled) |
void | ari_websocket_send_event (struct ari_ws_session *session, const char *app_name, struct ast_json *message, int debug_app) |
Callback handler for Stasis application messages. More... | |
void | ari_websocket_shutdown (struct ari_ws_session *session) |
void | ari_websocket_shutdown_all (void) |
int | ari_websocket_unload_module (void) |
void | ast_ari_close_per_call_websocket (char *app_name) |
This function is called by the app_stasis dialplan app to close a per-call websocket after stasis_app_exec() returns. More... | |
char * | ast_ari_create_per_call_websocket (const char *app_name, struct ast_channel *chan) |
This function gets called by app_stasis when a call arrives but a Stasis application isn't already registered. We check to see if a per-call config exists for the application and if so, we create a per-call websocket connection and return a unique app id which app_stasis can use to call stasis_app_exec() with. More... | |
static int | null_validator (struct ast_json *json) |
Validator that always succeeds. More... | |
static enum session_apply_result | outbound_session_apply_config (struct ari_ws_session *session, struct ari_conf_outbound_websocket *new_owc) |
static int | outbound_session_create (void *obj, void *args, int flags) |
static void * | outbound_session_handler_thread (void *obj) |
static void * | outbound_session_pc_close_thread (void *data) |
static void | outbound_sessions_load (const char *name) |
static void | session_cleanup (struct ari_ws_session *session) |
static struct ari_ws_session * | session_create (struct ast_tcptls_session_instance *ser, const char *apps, int subscribe_all, const char *session_id, struct ari_conf_outbound_websocket *ows, enum ast_websocket_type ws_type) |
static void | session_dtor (void *obj) |
static struct ari_ws_session * | session_find_by_app (const char *app_name, unsigned int ws_type) |
static struct ast_json * | session_read (struct ari_ws_session *session) |
static int | session_register_apps (struct ari_ws_session *session, const char *_apps, int subscribe_all) |
static void | session_registry_dtor (void) |
static void | session_reset (struct ari_ws_session *session) |
static void | session_send_app_event (struct ari_ws_session *session, const char *event_type, const char *app_name) |
static void | session_send_or_queue (struct ari_ws_session *session, struct ast_json *message, const char *msg_type, const char *app_name, int debug_app) |
static int | session_shutdown_cb (void *obj, void *arg, int flags) |
static void | session_unref (struct ari_ws_session *session) |
static void | session_unregister_app_cb (char *app_name, struct ari_ws_session *session) |
static void | session_unregister_apps (struct ari_ws_session *session) |
static int | session_update (struct ari_ws_session *ari_ws_session, struct ast_websocket *ast_ws_session, int send_registered_events) |
static int | session_write (struct ari_ws_session *session, struct ast_json *message) |
static void | stasis_app_message_handler (void *data, const char *app_name, struct ast_json *message) |
static int | websocket_attempted_cb (struct ast_tcptls_session_instance *ser, struct ast_variable *get_params, struct ast_variable *headers, const char *session_id) |
static void | websocket_established_cb (struct ast_websocket *ast_ws_session, struct ast_variable *get_params, struct ast_variable *upgrade_headers) |
Variables | |
ari_validator | ari_validate_message_fn = null_validator |
struct ast_websocket_server * | ast_ws_server |
static struct ast_sorcery_observer | observer_callbacks |
static struct ao2_container * | session_registry |
Local registry for created ari_ws_session objects. More... | |
WebSocket support for RESTful API's.
Definition in file ari_websockets.c.
#define APPS_INIT_SIZE 7 |
Initial size of websocket session apps vector
Definition at line 48 of file ari_websockets.c.
#define ARI_CONTEXT_REGISTRAR "res_ari" |
Definition at line 53 of file ari_websockets.c.
#define handle_create_error | ( | ser, | |
code, | |||
msg, | |||
reason | |||
) |
Definition at line 608 of file ari_websockets.c.
#define MESSAGES_INIT_SIZE 23 |
Initial size of the websocket session message queue.
Definition at line 51 of file ari_websockets.c.
#define PER_CALL_FAIL_SAFE_TIMEOUT | ( | owc | ) |
Definition at line 1146 of file ari_websockets.c.
#define SESSION_REGISTRY_NUM_BUCKETS 23 |
Number of buckets for the ari_ws_session registry. Remember to keep it a prime number!
Definition at line 45 of file ari_websockets.c.
#define STASIS_END_MAX_WAIT_MS 5000 |
Definition at line 1257 of file ari_websockets.c.
#define STASIS_END_POST_WAIT_US (3000 * 1000) |
Definition at line 1258 of file ari_websockets.c.
#define VALIDATION_FAILED |
Definition at line 75 of file ari_websockets.c.
enum session_apply_result |
Enumerator | |
---|---|
SESSION_APPLY_NO_CHANGE | |
SESSION_APPLY_OK | |
SESSION_APPLY_RECONNECT_REQUIRED | |
SESSION_APPLY_FAILED |
Definition at line 1034 of file ari_websockets.c.
void ari_handle_websocket | ( | struct ast_tcptls_session_instance * | ser, |
const char * | uri, | ||
enum ast_http_method | method, | ||
struct ast_variable * | get_params, | ||
struct ast_variable * | headers | ||
) |
Wrapper for invoking the websocket code for an incoming connection.
ws_server | WebSocket server to invoke. |
ser | HTTP session. |
uri | Requested URI. |
method | Requested HTTP method. |
get_params | Parsed query parameters. |
headers | Parsed HTTP headers. |
Definition at line 267 of file ari_websockets.c.
References ast_websocket_uri_cb(), ast_ws_server, ast_http_uri::data, method, and ast_http_uri::uri.
Referenced by ast_ari_invoke().
int ari_outbound_websocket_start | ( | struct ari_conf_outbound_websocket * | owc | ) |
Definition at line 1479 of file ari_websockets.c.
References NULL, and outbound_session_create().
Referenced by ari_start_owc().
struct ari_ws_session * ari_websocket_get_session | ( | const char * | session_id | ) |
Definition at line 887 of file ari_websockets.c.
References ao2_find, OBJ_SEARCH_KEY, ari_ws_session::session_id, and session_registry.
Referenced by ari_shut_session(), and outbound_session_create().
struct ao2_container * ari_websocket_get_sessions | ( | void | ) |
Definition at line 1360 of file ari_websockets.c.
References ao2_bump, and session_registry.
Referenced by ari_show_sessions(), and ari_shut_session().
int ari_websocket_load_module | ( | int | is_enabled | ) |
Definition at line 1528 of file ari_websockets.c.
References AO2_ALLOC_OPT_LOCK_MUTEX, AO2_CONTAINER_ALLOC_OPT_DUPS_REPLACE, ao2_container_alloc_rbtree, ari_sorcery_observer_add(), ari_websocket_unload_module(), ast_debug, ast_log, 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, is_enabled(), LOG_WARNING, observer_callbacks, ast_websocket_protocol::session_attempted, ast_websocket_protocol::session_established, session_registry, websocket_attempted_cb(), and websocket_established_cb().
Referenced by load_module().
void ari_websocket_send_event | ( | struct ari_ws_session * | session, |
const char * | app_name, | ||
struct ast_json * | message, | ||
int | debug_app | ||
) |
Callback handler for Stasis application messages.
Definition at line 290 of file ari_websockets.c.
References ao2_lock, ao2_unlock, app_name(), ast_assert, ast_debug, ast_free_ptr(), ast_json_object_get(), ast_json_object_set(), ast_json_string_create(), ast_json_string_get(), ast_sockaddr_stringify(), ast_strings_equal(), ast_strlen_zero(), AST_VECTOR_REMOVE_CMP_ORDERED, ast_websocket_remote_address(), AST_WS_TYPE_CLIENT_PER_CALL, AST_WS_TYPE_INBOUND, LOG_WARNING, NULL, S_OR, SCOPE_ENTER, SCOPE_EXIT, SCOPE_EXIT_LOG_RTN, session, session_send_or_queue(), and stasis_app_event_allowed().
Referenced by send_rest_response(), session_read(), and stasis_app_message_handler().
void ari_websocket_shutdown | ( | struct ari_ws_session * | session | ) |
Definition at line 1487 of file ari_websockets.c.
References NULL, session, and session_shutdown_cb().
Referenced by ari_shut_session().
void ari_websocket_shutdown_all | ( | void | ) |
Definition at line 1494 of file ari_websockets.c.
References ao2_callback, NULL, OBJ_MULTIPLE, OBJ_NODATA, session_registry, and session_shutdown_cb().
Referenced by ari_shut_sessions().
int ari_websocket_unload_module | ( | void | ) |
Definition at line 1516 of file ari_websockets.c.
References ao2_cleanup, ari_sorcery_observer_remove(), ast_ws_server, NULL, observer_callbacks, and session_registry_dtor().
Referenced by ari_websocket_load_module(), and unload_module().
void ast_ari_close_per_call_websocket | ( | char * | app_name | ) |
This function is called by the app_stasis dialplan app to close a per-call websocket after stasis_app_exec() returns.
Close a per-call outbound websocket connection.
Definition at line 1295 of file ari_websockets.c.
References ao2_ref, app_name(), ast_debug, ast_free, ast_log, ast_pthread_create_detached_background, ast_tvdiff_ms(), ast_tvnow(), AST_WS_TYPE_CLIENT_PER_CALL, LOG_WARNING, NULL, outbound_session_pc_close_thread(), session, session_find_by_app(), session_unref(), STASIS_END_MAX_WAIT_MS, and thread.
Referenced by app_exec().
char * ast_ari_create_per_call_websocket | ( | const char * | app_name, |
struct ast_channel * | chan | ||
) |
This function gets called by app_stasis when a call arrives but a Stasis application isn't already registered. We check to see if a per-call config exists for the application and if so, we create a per-call websocket connection and return a unique app id which app_stasis can use to call stasis_app_exec() with.
Create a per-call outbound websocket connection.
Definition at line 1157 of file ari_websockets.c.
References ao2_bump, ao2_cleanup, ao2_ref, app_name(), ari_conf_get_owc_for_app(), ari_conf_owc_get_invalid_fields(), ast_asprintf, ast_channel_name(), ast_channel_uniqueid(), ast_debug, ast_free, ast_log, ast_pthread_create_detached_background, ast_sorcery_object_get_id(), ast_strdup, ast_tvdiff_ms(), ast_tvnow(), AST_WS_TYPE_CLIENT_PER_CALL, AST_WS_TYPE_CLIENT_PER_CALL_CONFIG, LOG_WARNING, NULL, outbound_session_handler_thread(), PER_CALL_FAIL_SAFE_TIMEOUT, RAII_VAR, session, session_cleanup(), session_create(), and session_unref().
Referenced by app_exec().
|
static |
Validator that always succeeds.
Definition at line 66 of file ari_websockets.c.
|
static |
Definition at line 1041 of file ari_websockets.c.
References ao2_replace, app, ari_conf_outbound_websocket::apps, ari_conf_owc_detect_changes(), ARI_OWC_FIELD_NONE, ARI_OWC_FIELD_SUBSCRIBE_ALL, ARI_OWC_NEEDS_RECONNECT, ARI_OWC_NEEDS_REREGISTER, ast_debug, ast_free, ast_in_delimited_string(), ast_log, ast_sorcery_object_get_id(), AST_VECTOR_GET, AST_VECTOR_REMOVE_ORDERED, AST_VECTOR_SIZE, ast_websocket_close(), ast_websocket_client::connection_type, LOG_WARNING, session, SESSION_APPLY_FAILED, SESSION_APPLY_NO_CHANGE, SESSION_APPLY_OK, SESSION_APPLY_RECONNECT_REQUIRED, session_register_apps(), session_unregister_apps(), ari_conf_outbound_websocket::subscribe_all, and ari_conf_outbound_websocket::websocket_client.
Referenced by outbound_session_create().
|
static |
Definition at line 1365 of file ari_websockets.c.
References ao2_lock, ao2_ref, ao2_unlock, ari_conf_outbound_websocket::apps, ari_conf_owc_get_invalid_fields(), ari_websocket_get_session(), ast_debug, ast_log, ast_pthread_create_detached_background, ast_sorcery_object_get_id(), AST_WS_TYPE_CLIENT_PER_CALL_CONFIG, ast_websocket_client::connection_type, LOG_WARNING, NULL, outbound_session_apply_config(), outbound_session_handler_thread(), ari_ws_session::owc, session, SESSION_APPLY_FAILED, session_cleanup(), session_create(), session_unref(), ari_conf_outbound_websocket::subscribe_all, and ari_conf_outbound_websocket::websocket_client.
Referenced by ari_outbound_websocket_start(), and outbound_sessions_load().
|
static |
Definition at line 929 of file ari_websockets.c.
References ao2_cleanup, ao2_ref, ari_websocket_process_request(), ast_debug, ast_http_create_basic_auth_header(), ast_json_unref(), ast_log, ast_variables_destroy(), ast_websocket_client_connect(), ast_websocket_close(), ast_websocket_unref(), AST_WS_TYPE_CLIENT_PER_CALL, AST_WS_TYPE_CLIENT_PERSISTENT, LOG_NOTICE, LOG_WARNING, NULL, RAII_VAR, result, session, session_cleanup(), session_read(), session_update(), stasis_app_control_continue(), stasis_app_control_find_by_channel_id(), stasis_app_control_mark_failed(), and WS_OK.
Referenced by ast_ari_create_per_call_websocket(), and outbound_session_create().
|
static |
Definition at line 1266 of file ari_websockets.c.
References ao2_ref, ast_debug, ast_websocket_close(), NULL, RAII_VAR, session, session_unref(), and STASIS_END_POST_WAIT_US.
Referenced by ast_ari_close_per_call_websocket().
|
static |
Definition at line 1430 of file ari_websockets.c.
References ao2_callback, ao2_cleanup, ao2_iterator_destroy(), ao2_iterator_init(), ao2_iterator_next, ari_conf_get_owc(), ari_conf_get_owcs(), ast_debug, ast_websocket_close(), AST_WS_TYPE_CLIENT_PER_CALL_CONFIG, AST_WS_TYPE_CLIENT_PERSISTENT, cleanup(), NULL, OBJ_NODATA, outbound_session_create(), RAII_VAR, session, session_cleanup(), and session_registry.
|
static |
Definition at line 556 of file ari_websockets.c.
References ao2_ref, ao2_unlink, ast_debug, AST_WS_TYPE_CLIENT_PER_CALL_CONFIG, session, session_registry, session_reset(), and session_unref().
Referenced by ast_ari_create_per_call_websocket(), outbound_session_create(), outbound_session_handler_thread(), outbound_sessions_load(), session_shutdown_cb(), and websocket_established_cb().
|
static |
Definition at line 617 of file ari_websockets.c.
References ao2_alloc, ao2_bump, ao2_cleanup, ao2_link, APPS_INIT_SIZE, ari_validate_message_fn, ast_debug, AST_VECTOR_FREE, AST_VECTOR_INIT, handle_create_error, MESSAGES_INIT_SIZE, NULL, RAII_VAR, session, session_dtor(), ari_ws_session::session_id, session_register_apps(), session_registry, session_reset(), and subscribe_all().
Referenced by ast_ari_create_per_call_websocket(), outbound_session_create(), and websocket_attempted_cb().
|
static |
Definition at line 588 of file ari_websockets.c.
References ao2_cleanup, ast_debug, ast_free, ast_websocket_unref(), NULL, and session.
Referenced by session_create().
|
static |
Definition at line 892 of file ari_websockets.c.
References ao2_iterator_destroy(), ao2_iterator_init(), ao2_iterator_next, app, app_name(), ast_strings_equal(), ast_strlen_zero(), AST_VECTOR_GET_CMP, NULL, session, session_registry, and session_unref().
Referenced by ast_ari_close_per_call_websocket().
|
static |
Definition at line 197 of file ari_websockets.c.
References ari_websocket_send_event(), ast_debug, ast_json_load_buf(), ast_json_pack(), ast_json_ref(), ast_json_unref(), ast_log, ast_wait_for_input(), ast_websocket_fd(), AST_WEBSOCKET_OPCODE_CLOSE, AST_WEBSOCKET_OPCODE_TEXT, ast_websocket_read(), errno, error(), LOG_WARNING, NULL, RAII_VAR, and session.
Referenced by outbound_session_handler_thread(), and websocket_established_cb().
|
static |
Definition at line 413 of file ari_websockets.c.
References app_name(), ARI_CONTEXT_REGISTRAR, ARI_MAX_APP_NAME_LEN, ast_add_extension(), ast_context_find(), ast_context_find_or_create(), ast_debug, ast_free, ast_free_ptr(), ast_log, AST_MAX_CONTEXT, ast_strdup, ast_strdupa, ast_strlen_zero(), ast_strsep(), AST_STRSEP_STRIP, AST_VECTOR_ADD_SORTED, AST_WS_TYPE_CLIENT_PER_CALL_CONFIG, AST_WS_TYPE_INBOUND, context_name, LOG_WARNING, NULL, session, session_send_app_event(), stasis_app_is_registered(), stasis_app_message_handler(), stasis_app_register(), stasis_app_register_all(), STASIS_CONTEXT_PREFIX, and subscribe_all().
Referenced by outbound_session_apply_config(), and session_create().
|
static |
Definition at line 1502 of file ari_websockets.c.
References ao2_callback, ao2_cleanup, NULL, OBJ_MULTIPLE, OBJ_NODATA, session_registry, and session_shutdown_cb().
Referenced by ari_websocket_unload_module().
|
static |
Definition at line 532 of file ari_websockets.c.
References ast_debug, ast_free_ptr(), ast_json_unref(), AST_VECTOR_FREE, AST_VECTOR_RESET, AST_VECTOR_SIZE, lock, SCOPED_AO2LOCK, session, and session_unregister_apps().
Referenced by session_cleanup(), and session_create().
|
static |
Definition at line 172 of file ari_websockets.c.
References app_name(), ast_debug, ast_eid_default, ast_eid_to_str(), ast_json_pack(), ast_json_timeval(), ast_json_unref(), ast_tvnow(), NULL, session, session_send_or_queue(), and stasis_app_get_debug_by_name().
Referenced by session_register_apps(), session_unregister_app_cb(), and session_update().
|
static |
Definition at line 111 of file ari_websockets.c.
References ao2_unlock, app_name(), ast_begins_with(), ast_eid_default, ast_eid_to_str(), ast_json_dump_string_format(), ast_json_free(), ast_json_object_get(), ast_json_object_set(), AST_JSON_PRETTY, ast_json_ref(), ast_json_string_create(), ast_json_string_get(), ast_json_timeval(), ast_log, ast_strlen_zero(), ast_tvnow(), AST_VECTOR_APPEND, ast_verbose(), DEBUG_ATLEAST, LOG_ERROR, LOG_WARNING, msg_timestamp(), NULL, S_OR, session, session_write(), and str.
Referenced by ari_websocket_send_event(), and session_send_app_event().
|
static |
Definition at line 850 of file ari_websockets.c.
References ao2_bump, ari_websocket_type_to_str(), ast_log, ast_websocket_close(), AST_WS_TYPE_CLIENT_PER_CALL_CONFIG, AST_WS_TYPE_INBOUND, LOG_NOTICE, session, and session_cleanup().
Referenced by ari_websocket_shutdown(), ari_websocket_shutdown_all(), and session_registry_dtor().
|
static |
Definition at line 361 of file ari_websockets.c.
References ao2_ref, ast_debug, and session.
Referenced by ast_ari_close_per_call_websocket(), ast_ari_create_per_call_websocket(), outbound_session_create(), outbound_session_pc_close_thread(), session_cleanup(), session_find_by_app(), and websocket_attempted_cb().
|
static |
Definition at line 370 of file ari_websockets.c.
References app_name(), ARI_CONTEXT_REGISTRAR, ast_context_destroy_by_name(), ast_debug, AST_MAX_CONTEXT, AST_WS_TYPE_CLIENT_PER_CALL_CONFIG, AST_WS_TYPE_INBOUND, context_name, session, session_send_app_event(), stasis_app_unregister(), and STASIS_CONTEXT_PREFIX.
Referenced by session_unregister_apps().
|
static |
Definition at line 397 of file ari_websockets.c.
References ast_debug, ast_free_ptr(), AST_VECTOR_CALLBACK_VOID, AST_VECTOR_RESET, AST_VECTOR_SIZE, session, and session_unregister_app_cb().
Referenced by outbound_session_apply_config(), and session_reset().
|
static |
Definition at line 692 of file ari_websockets.c.
References ao2_cleanup, ao2_lock, ao2_ref, ao2_unlock, app, ari_conf_get_general(), ast_json_unref(), ast_log, ast_sockaddr_stringify(), ast_strdup, AST_VECTOR_ELEM_CLEANUP_NOOP, AST_VECTOR_GET, AST_VECTOR_RESET, AST_VECTOR_SIZE, ast_websocket_remote_address(), ast_websocket_set_nonblock(), ast_websocket_set_timeout(), ari_ws_session::ast_ws_session, errno, LOG_ERROR, LOG_WARNING, ari_ws_session::message_queue, NULL, RAII_VAR, ari_ws_session::remote_addr, session_send_app_event(), session_write(), and ari_ws_session::websocket_apps.
Referenced by outbound_session_handler_thread(), and websocket_established_cb().
|
static |
Definition at line 81 of file ari_websockets.c.
References ast_ari_json_format(), ast_json_dump_string_format(), ast_json_free(), ast_log, ast_sockaddr_stringify(), ast_websocket_remote_address(), ast_websocket_write_string(), LOG_ERROR, LOG_NOTICE, NULL, RAII_VAR, session, str, and VALIDATION_FAILED.
Referenced by session_send_or_queue(), and session_update().
|
static |
Definition at line 346 of file ari_websockets.c.
References app_name(), ari_websocket_send_event(), ast_debug, session, and stasis_app_get_debug_by_name().
Referenced by session_register_apps().
|
static |
Definition at line 760 of file ari_websockets.c.
References ast_strlen_zero(), ast_true(), ast_variable_find_in_list(), AST_WS_TYPE_INBOUND, handle_create_error, NULL, session, session_create(), ari_ws_session::session_id, session_unref(), and subscribe_all().
Referenced by ari_websocket_load_module().
|
static |
Definition at line 795 of file ari_websockets.c.
References ao2_find, ari_ws_session::app_name, ari_websocket_process_request(), ast_json_unref(), ast_sockaddr_stringify(), ast_trace, ast_websocket_remote_address(), ast_websocket_session_id(), ast_websocket_unref(), ari_ws_session::ast_ws_session, ari_ws_session::connected, LOG_ERROR, ast_variable::name, ast_variable::next, NULL, OBJ_SEARCH_KEY, RAII_VAR, SCOPE_ENTER, SCOPE_EXIT, SCOPE_EXIT_LOG_RTN, session_cleanup(), session_read(), session_registry, session_update(), TRACE_ATLEAST, and ast_variable::value.
Referenced by ari_websocket_load_module().
ari_validator ari_validate_message_fn = null_validator |
Definition at line 71 of file ari_websockets.c.
Referenced by session_create().
struct ast_websocket_server* ast_ws_server |
Definition at line 58 of file ari_websockets.c.
Referenced by ari_handle_websocket(), ari_websocket_load_module(), and ari_websocket_unload_module().
|
static |
Definition at line 1512 of file ari_websockets.c.
Referenced by ari_websocket_load_module(), and ari_websocket_unload_module().
|
static |
Local registry for created ari_ws_session objects.
Definition at line 56 of file ari_websockets.c.
Referenced by ari_websocket_get_session(), ari_websocket_get_sessions(), ari_websocket_load_module(), ari_websocket_shutdown_all(), outbound_sessions_load(), session_cleanup(), session_create(), session_find_by_app(), session_registry_dtor(), and websocket_established_cb().