Asterisk - The Open Source Telephony Project GIT-master-0bf3178
|
Basic bridge class. It is a subclass of struct ast_bridge. More...
#include "asterisk.h"
#include "asterisk/channel.h"
#include "asterisk/utils.h"
#include "asterisk/linkedlists.h"
#include "asterisk/bridge.h"
#include "asterisk/bridge_internal.h"
#include "asterisk/bridge_basic.h"
#include "asterisk/bridge_after.h"
#include "asterisk/astobj2.h"
#include "asterisk/features_config.h"
#include "asterisk/pbx.h"
#include "asterisk/file.h"
#include "asterisk/app.h"
#include "asterisk/dial.h"
#include "asterisk/stasis_bridges.h"
#include "asterisk/stasis_channels.h"
#include "asterisk/features.h"
#include "asterisk/format_cache.h"
#include "asterisk/test.h"
Go to the source code of this file.
Data Structures | |
struct | attended_transfer_properties |
Collection of data related to an attended transfer attempt. More... | |
struct | attended_transfer_state_properties |
Properties of an attended transfer state. More... | |
struct | bridge_basic_personality |
structure that organizes different personalities for basic bridges. More... | |
struct | dynamic_dtmf_hook_data |
struct | dynamic_dtmf_hook_run |
struct | personality_details |
Details for specific basic bridge personalities. More... | |
struct | stimulus_list |
Macros | |
#define | NORMAL_FLAGS |
#define | TRANSFER_FLAGS AST_BRIDGE_FLAG_SMART |
Functions | |
static int | add_normal_hooks (struct ast_bridge *bridge, struct ast_bridge_channel *bridge_channel) |
static int | add_transferer_role (struct ast_channel *chan, struct ast_bridge_features_attended_transfer *attended_transfer) |
struct ast_bridge * | ast_bridge_basic_new (void) |
Create a new basic class bridge. More... | |
void | ast_bridge_basic_set_flags (struct ast_bridge *bridge, unsigned int flags) |
Set feature flags on a basic bridge. More... | |
int | ast_bridge_features_ds_append (struct ast_channel *chan, struct ast_flags *flags) |
Append basic bridge DTMF feature flags on the channel. More... | |
struct ast_flags * | ast_bridge_features_ds_get (struct ast_channel *chan) |
Get DTMF feature flags from the channel. More... | |
int | ast_bridge_features_ds_get_string (struct ast_channel *chan, char *buffer, size_t buf_size) |
writes a channel's DTMF features to a buffer string More... | |
int | ast_bridge_features_ds_set (struct ast_channel *chan, struct ast_flags *flags) |
Set basic bridge DTMF feature flags datastore on the channel. More... | |
int | ast_bridge_features_ds_set_string (struct ast_channel *chan, const char *features) |
Sets the features a channel will use upon being bridged. More... | |
void | ast_bridging_init_basic (void) |
static int | attach_framehook (struct attended_transfer_properties *props, struct ast_channel *channel) |
static void * | attended_transfer_monitor_thread (void *data) |
The main loop for the attended transfer monitor thread. More... | |
static struct attended_transfer_properties * | attended_transfer_properties_alloc (struct ast_channel *transferer, const char *context) |
Allocate and initialize attended transfer properties. More... | |
static void | attended_transfer_properties_destructor (void *obj) |
static void | attended_transfer_properties_shutdown (struct attended_transfer_properties *props) |
Initiate shutdown of attended transfer properties. More... | |
static int | atxfer_abort (struct ast_bridge_channel *bridge_channel, void *hook_pvt) |
DTMF hook when transferer presses abort sequence. More... | |
static int | atxfer_complete (struct ast_bridge_channel *bridge_channel, void *hook_pvt) |
DTMF hook when transferer presses complete sequence. More... | |
static int | atxfer_swap (struct ast_bridge_channel *bridge_channel, void *hook_pvt) |
DTMF hook when transferer presses swap sequence. More... | |
static int | atxfer_threeway (struct ast_bridge_channel *bridge_channel, void *hook_pvt) |
DTMF hook when transferer presses threeway sequence. More... | |
static int | atxfer_transferer_hangup (struct ast_bridge_channel *bridge_channel, void *hook_pvt) |
Hangup hook for transferer channel. More... | |
static int | basic_hangup_hook (struct ast_bridge_channel *bridge_channel, void *hook_pvt) |
static void | blind_transfer_cb (struct ast_channel *new_channel, struct transfer_channel_data *user_data_wrapper, enum ast_transfer_type transfer_type) |
static int | blond_enter (struct attended_transfer_properties *props) |
static int | blond_nonfinal_enter (struct attended_transfer_properties *props) |
static enum attended_transfer_state | blond_nonfinal_exit (struct attended_transfer_properties *props, enum attended_transfer_stimulus stimulus) |
static void | bridge_basic_change_personality (struct ast_bridge *bridge, enum bridge_basic_personality_type type, void *user_data) |
Change basic bridge personality. More... | |
static void | bridge_basic_destroy (struct ast_bridge *self) |
static struct ast_bridge * | bridge_basic_personality_alloc (struct ast_bridge *bridge) |
static void | bridge_basic_pull (struct ast_bridge *self, struct ast_bridge_channel *bridge_channel) |
static int | bridge_basic_push (struct ast_bridge *self, struct ast_bridge_channel *bridge_channel, struct ast_bridge_channel *swap) |
static int | bridge_basic_setup_features (struct ast_bridge_channel *bridge_channel) |
static int | bridge_features_ds_set_full (struct ast_channel *chan, struct ast_flags *flags, int replace) |
static void | bridge_hold (struct ast_bridge *bridge) |
Helper method to send a hold frame to all channels in a bridge. More... | |
static void | bridge_merge (struct ast_bridge *dest, struct ast_bridge *src, struct ast_channel **kick_channels, unsigned int num_channels) |
Wrapper for bridge_do_merge. More... | |
static void | bridge_move (struct ast_bridge *dest, struct ast_bridge *src, struct ast_channel *channel, struct ast_channel *swap) |
Wrapper for bridge_do_move. More... | |
static void | bridge_personality_atxfer_pull (struct ast_bridge *self, struct ast_bridge_channel *bridge_channel) |
static int | bridge_personality_atxfer_push (struct ast_bridge *self, struct ast_bridge_channel *bridge_channel, struct ast_bridge_channel *swap) |
static int | bridge_personality_normal_push (struct ast_bridge *self, struct ast_bridge_channel *bridge_channel, struct ast_bridge_channel *swap) |
static void | bridge_ringing (struct ast_bridge *bridge) |
Helper method to send a ringing indication to all channels in a bridge. More... | |
static void | bridge_unhold (struct ast_bridge *bridge) |
Helper method to send an unhold frame to all channels in a bridge. More... | |
static int | build_dtmf_features (struct ast_flags *flags, const char *features) |
static int | builtin_feature_get_exten (struct ast_channel *chan, const char *feature_name, char *buf, size_t len) |
static int | builtin_features_helper (struct ast_bridge_features *features, struct ast_channel *chan, struct ast_flags *flags, unsigned int feature_flag, const char *feature_name, enum ast_bridge_builtin_feature feature_bridge) |
static int | calling_target_enter (struct attended_transfer_properties *props) |
static enum attended_transfer_state | calling_target_exit (struct attended_transfer_properties *props, enum attended_transfer_stimulus stimulus) |
static void | clear_stimulus_queue (struct attended_transfer_properties *props) |
Free backlog of stimuli in the queue. More... | |
static void | common_recall_channel_setup (struct ast_channel *recall, struct ast_channel *transferer) |
static int | complete_enter (struct attended_transfer_properties *props) |
static int | consulting_enter (struct attended_transfer_properties *props) |
static enum attended_transfer_state | consulting_exit (struct attended_transfer_properties *props, enum attended_transfer_stimulus stimulus) |
static void | copy_caller_data (struct ast_channel *dest, struct ast_channel *caller) |
static struct ast_channel * | dial_transfer (struct ast_channel *caller, const char *destination) |
Helper function that creates an outgoing channel and returns it immediately. More... | |
static int | double_checking_enter (struct attended_transfer_properties *props) |
static enum attended_transfer_state | double_checking_exit (struct attended_transfer_properties *props, enum attended_transfer_stimulus stimulus) |
static int | dtmf_features_flags_to_string (struct ast_flags *feature_flags, char *buffer, size_t buffer_size) |
static int | dynamic_dtmf_hook_add (struct ast_bridge_features *features, unsigned int flags, const char *dtmf, const char *feature_name, const char *app_name, const char *app_args, const char *moh_class) |
static void | dynamic_dtmf_hook_callback (struct ast_bridge_channel *bridge_channel, const void *payload, size_t payload_size) |
static int | dynamic_dtmf_hook_trip (struct ast_bridge_channel *bridge_channel, void *hook_pvt) |
static int | fail_enter (struct attended_transfer_properties *props) |
static int | feature_attended_transfer (struct ast_bridge_channel *bridge_channel, void *hook_pvt) |
Internal built in feature for attended transfers. More... | |
static int | feature_blind_transfer (struct ast_bridge_channel *bridge_channel, void *hook_pvt) |
Internal built in feature for blind transfers. More... | |
static const char * | get_transfer_context (struct ast_channel *transferer, const char *context) |
static const char * | get_transfer_exten (struct ast_channel *transferer, const char *exten) |
static void | get_transfer_parties (struct ast_channel *transferer, struct ast_bridge *transferee_bridge, struct ast_bridge *target_bridge, struct ast_channel **transferee, struct ast_channel **transfer_target) |
determine transferee and transfer target for an attended transfer More... | |
static void | get_transfer_parties_transferer_bridge (struct ast_bridge *transferer_bridge, struct ast_bridge *other_bridge, struct ast_channel *transferer, struct ast_channel **transferer_peer, struct ast_channel **other_party) |
Get the transferee and transfer target when the transferer is in a bridge with one of the desired parties. More... | |
static void | get_transfer_party_non_transferer_bridge (struct ast_bridge *bridge, struct ast_channel **party) |
Get a desired transfer party for a bridge the transferer is not in. More... | |
static int | grab_transfer (struct ast_channel *chan, char *exten, size_t exten_len, const char *context) |
Helper function that presents dialtone and grabs extension. More... | |
static int | hesitant_enter (struct attended_transfer_properties *props) |
static enum attended_transfer_state | hesitant_exit (struct attended_transfer_properties *props, enum attended_transfer_stimulus stimulus) |
static void | hold (struct ast_channel *chan) |
Helper method to place a channel in a bridge on hold. More... | |
static void | init_details (struct personality_details *details, enum bridge_basic_personality_type type) |
static void | on_personality_change_normal (struct ast_bridge *bridge) |
static void | personality_destructor (void *obj) |
static void | play_failsound (struct ast_channel *chan) |
Helper method to play a fail sound on a channel in a bridge. More... | |
static void | play_sound (struct ast_channel *chan, const char *sound) |
Helper method to play a sound on a channel in a bridge. More... | |
static void | publish_transfer_fail (struct attended_transfer_properties *props) |
Send a stasis publication for a failed attended transfer. More... | |
static void | publish_transfer_success (struct attended_transfer_properties *props, struct ast_channel *transferee_channel, struct ast_channel *target_channel) |
Send a stasis publication for a successful attended transfer. More... | |
static void | publish_transfer_threeway (struct attended_transfer_properties *props, struct ast_channel *transferee_channel, struct ast_channel *target_channel) |
Send a stasis publication for an attended transfer that ends in a threeway call. More... | |
static int | rebridge_enter (struct attended_transfer_properties *props) |
static void | recall_callback (struct ast_dial *dial) |
Dial callback when attempting to recall the original transferer channel. More... | |
static void | recall_pull (struct ast_bridge *self, struct ast_bridge_channel *bridge_channel, struct attended_transfer_properties *props) |
static int | recalling_enter (struct attended_transfer_properties *props) |
static enum attended_transfer_state | recalling_exit (struct attended_transfer_properties *props, enum attended_transfer_stimulus stimulus) |
static void | remove_attended_transfer_stimulus (struct attended_transfer_properties *props, enum attended_transfer_stimulus stimulus) |
static void | remove_hooks_on_personality_change (struct ast_bridge *bridge) |
Remove appropriate hooks when basic bridge personality changes. More... | |
static int | resume_enter (struct attended_transfer_properties *props) |
static int | retransfer_enter (struct attended_transfer_properties *props) |
static enum attended_transfer_state | retransfer_exit (struct attended_transfer_properties *props, enum attended_transfer_stimulus stimulus) |
static void | ringing (struct ast_channel *chan) |
Helper method to send a ringing indication to a channel in a bridge. More... | |
static int | set_feature_flag_from_char (struct ast_flags *feature_flags, char feature) |
static int | setup_bridge_features_builtin (struct ast_bridge_features *features, struct ast_channel *chan) |
static int | setup_bridge_features_dynamic (struct ast_bridge_features *features, struct ast_channel *chan) |
static int | setup_dynamic_feature (void *obj, void *arg, void *data, int flags) |
static void | stimulate_attended_transfer (struct attended_transfer_properties *props, enum attended_transfer_stimulus stimulus) |
static void | stream_failsound (struct ast_channel *chan) |
Helper method to stream a fail sound on a channel. More... | |
static int | threeway_enter (struct attended_transfer_properties *props) |
static void | transfer_pull (struct ast_bridge *self, struct ast_bridge_channel *bridge_channel, struct attended_transfer_properties *props) |
static struct ast_frame * | transfer_target_framehook_cb (struct ast_channel *chan, struct ast_frame *frame, enum ast_framehook_event event, void *data) |
Frame hook for transfer target channel. More... | |
static int | transfer_target_framehook_consume (void *data, enum ast_frame_type type) |
Callback function which informs upstream if we are consuming a frame of a specific type. More... | |
static void | transfer_target_framehook_destroy_cb (void *data) |
static void | unhold (struct ast_channel *chan) |
Helper method to take a channel in a bridge off hold. More... | |
static enum attended_transfer_stimulus | wait_for_stimulus (struct attended_transfer_properties *props) |
static int | wait_to_recall_enter (struct attended_transfer_properties *props) |
static enum attended_transfer_state | wait_to_recall_exit (struct attended_transfer_properties *props, enum attended_transfer_stimulus stimulus) |
static int | wait_to_retransfer_enter (struct attended_transfer_properties *props) |
static enum attended_transfer_state | wait_to_retransfer_exit (struct attended_transfer_properties *props, enum attended_transfer_stimulus stimulus) |
Variables | |
struct ast_bridge_methods | ast_bridge_basic_v_table |
Bridge basic class virtual method table. More... | |
static const struct ast_datastore_info | dtmf_features_info |
struct ast_bridge_methods | personality_atxfer_v_table |
struct ast_bridge_methods | personality_normal_v_table |
static const struct attended_transfer_state_properties | state_properties [] |
const char * | stimulus_strs [] |
String representations of the various stimuli. More... | |
Basic bridge class. It is a subclass of struct ast_bridge.
See Also:
Definition in file bridge_basic.c.
#define NORMAL_FLAGS |
Definition at line 51 of file bridge_basic.c.
#define TRANSFER_FLAGS AST_BRIDGE_FLAG_SMART |
Definition at line 54 of file bridge_basic.c.
The states in the attended transfer state machine.
Definition at line 773 of file bridge_basic.c.
Flags that indicate properties of attended transfer states.
Definition at line 1955 of file bridge_basic.c.
Stimuli that can cause transfer state changes.
Definition at line 1235 of file bridge_basic.c.
Attended transfer superstates.
An attended transfer's progress is facilitated by a state machine. The individual states of the state machine fall into the realm of one of two superstates.
Definition at line 736 of file bridge_basic.c.
Definition at line 58 of file bridge_basic.c.
|
static |
Definition at line 640 of file bridge_basic.c.
References ast_bridge_hangup_hook(), AST_BRIDGE_HOOK_REMOVE_ON_PULL, basic_hangup_hook(), bridge_basic_setup_features(), ast_bridge_channel::features, and NULL.
Referenced by bridge_personality_normal_push(), and on_personality_change_normal().
|
static |
Definition at line 3141 of file bridge_basic.c.
References ast_bridge_features_attended_transfer::abort, ao2_ref, ast_channel_add_bridge_role(), ast_channel_set_bridge_role_option(), ast_get_chan_features_xfer_config(), ast_strdupa, AST_TRANSFERER_ROLE_NAME, atxfer_abort(), atxfer_complete(), atxfer_swap(), atxfer_threeway(), ast_features_xfer_config::atxferabort, ast_features_xfer_config::atxfercomplete, ast_features_xfer_config::atxferswap, ast_features_xfer_config::atxferthreeway, ast_bridge_features_attended_transfer::complete, lock, S_OR, SCOPED_CHANNELLOCK, ast_bridge_features_attended_transfer::swap, and ast_bridge_features_attended_transfer::threeway.
Referenced by feature_attended_transfer().
struct ast_bridge * ast_bridge_basic_new | ( | void | ) |
Create a new basic class bridge.
NULL | on failure |
Example usage:
This creates a basic two party bridge with any configured DTMF features enabled that will be destroyed once one of the channels hangs up.
Definition at line 3661 of file bridge_basic.c.
References ast_bridge_basic_v_table, AST_BRIDGE_CAPABILITY_1TO1MIX, AST_BRIDGE_CAPABILITY_MULTIMIX, AST_BRIDGE_CAPABILITY_NATIVE, bridge_alloc(), bridge_base_init(), bridge_basic_personality_alloc(), bridge_register(), NORMAL_FLAGS, and NULL.
Referenced by action_bridge(), agent_request_exec(), ast_bridge_call_with_flags(), AST_TEST_DEFINE(), bridge_exec(), feature_attended_transfer(), and parked_call_app_exec().
void ast_bridge_basic_set_flags | ( | struct ast_bridge * | bridge, |
unsigned int | flags | ||
) |
Set feature flags on a basic bridge.
Using this function instead of setting flags directly will ensure that after operations such as an attended transfer, the bridge will maintain the flags that were set on it.
bridge | |
flags | These are added to the flags already set. |
Definition at line 3674 of file bridge_basic.c.
References ast_bridge_lock, ast_bridge_unlock, ast_set_flag, personality_details::bridge_flags, bridge_basic_personality::current, bridge_basic_personality::details, ast_bridge::feature_flags, lock, ast_bridge::personality, and SCOPED_LOCK.
Referenced by ast_bridge_call_with_flags().
int ast_bridge_features_ds_append | ( | struct ast_channel * | chan, |
struct ast_flags * | flags | ||
) |
Append basic bridge DTMF feature flags on the channel.
chan | Channel to append DTMF features datastore. |
flags | Builtin DTMF feature flags. (ast_bridge_config flags) |
0 | on success. |
-1 | on error. |
Definition at line 263 of file bridge_basic.c.
References bridge_features_ds_set_full(), and ast_flags::flags.
Referenced by pre_bridge_setup().
struct ast_flags * ast_bridge_features_ds_get | ( | struct ast_channel * | chan | ) |
Get DTMF feature flags from the channel.
chan | Channel to get DTMF features datastore. |
NULL | if the datastore does not exist. |
Definition at line 268 of file bridge_basic.c.
References ast_channel_datastore_find(), ast_datastore::data, dtmf_features_info, and NULL.
Referenced by ast_bridge_features_ds_get_string(), attended_transfer_properties_alloc(), parked_call_retrieve_enable_features(), and setup_bridge_features_builtin().
int ast_bridge_features_ds_get_string | ( | struct ast_channel * | chan, |
char * | buffer, | ||
size_t | buf_size | ||
) |
writes a channel's DTMF features to a buffer string
chan | channel whose feature flags should be checked |
buffer | pointer string buffer where the output should be stored |
buf_size | size of the provided buffer (ideally enough for all features, 6+) |
0 | on successful write |
-1 | on failure |
Definition at line 208 of file bridge_basic.c.
References ast_bridge_features_ds_get(), ast_channel_lock, ast_channel_unlock, and dtmf_features_flags_to_string().
Referenced by func_channel_read().
int ast_bridge_features_ds_set | ( | struct ast_channel * | chan, |
struct ast_flags * | flags | ||
) |
Set basic bridge DTMF feature flags datastore on the channel.
chan | Channel to set DTMF features datastore. |
flags | Builtin DTMF feature flags. (ast_bridge_config flags) |
0 | on success. |
-1 | on error. |
Definition at line 258 of file bridge_basic.c.
References bridge_features_ds_set_full(), and ast_flags::flags.
Referenced by ast_bridge_features_ds_set_string(), parked_call_retrieve_enable_features(), and recalling_exit().
int ast_bridge_features_ds_set_string | ( | struct ast_channel * | chan, |
const char * | features | ||
) |
Sets the features a channel will use upon being bridged.
chan | Which channel to set features for |
features | Which feature codes to set for the channel |
0 | on success |
-1 | on failure |
Definition at line 189 of file bridge_basic.c.
References ast_bridge_features_ds_set(), ast_channel_lock, ast_channel_name(), ast_channel_unlock, ast_log, build_dtmf_features(), ast_flags::flags, and LOG_ERROR.
Referenced by func_channel_write_real().
void ast_bridging_init_basic | ( | void | ) |
Initialize the basic bridge class for use by the system.
Definition at line 3683 of file bridge_basic.c.
References ast_bridge_base_v_table, ast_bridge_basic_v_table, AST_BRIDGE_BUILTIN_ATTENDEDTRANSFER, AST_BRIDGE_BUILTIN_BLINDTRANSFER, ast_bridge_features_register(), bridge_basic_destroy(), bridge_basic_pull(), bridge_basic_push(), bridge_personality_atxfer_pull(), bridge_personality_atxfer_push(), bridge_personality_normal_push(), ast_bridge_methods::destroy, feature_attended_transfer(), feature_blind_transfer(), ast_bridge_methods::name, NULL, personality_atxfer_v_table, personality_normal_v_table, ast_bridge_methods::pull, and ast_bridge_methods::push.
Referenced by ast_bridging_init().
|
static |
Definition at line 3118 of file bridge_basic.c.
References ao2_ref, ast_channel_lock, ast_channel_unlock, ast_framehook_attach(), AST_FRAMEHOOK_INTERFACE_VERSION, ast_framehook_interface::data, attended_transfer_properties::target_framehook_id, transfer_target_framehook_cb(), transfer_target_framehook_consume(), transfer_target_framehook_destroy_cb(), and ast_framehook_interface::version.
Referenced by feature_attended_transfer(), and retransfer_enter().
|
static |
The main loop for the attended transfer monitor thread.
This loop runs continuously until the attended transfer reaches a terminal state. Stimuli for changes in the attended transfer state are handled in this thread so that all factors in an attended transfer can be handled in an orderly fashion.
data | The attended transfer properties |
Definition at line 3064 of file bridge_basic.c.
References ast_assert, ast_callid_threadassoc_add(), ast_callid_threadassoc_remove(), ast_channel_callid(), ast_channel_lock, ast_channel_unlock, ast_debug, ast_log, attended_transfer_properties_shutdown(), attended_transfer_state_properties::enter, attended_transfer_state_properties::exit, attended_transfer_state_properties::flags, LOG_ERROR, NULL, attended_transfer_properties::state, attended_transfer_state_properties::state_name, state_properties, stimulus_strs, TRANSFER_STATE_FLAG_TERMINAL, attended_transfer_properties::transferer, and wait_for_stimulus().
Referenced by feature_attended_transfer().
|
static |
Allocate and initialize attended transfer properties.
transferer | The channel performing the attended transfer |
context | Suggestion for what context the transfer target extension can be found in |
NULL | Failure to allocate or initialize |
non-NULL | Newly allocated properties |
Definition at line 1425 of file bridge_basic.c.
References ao2_alloc, ao2_ref, ast_bridge_features_ds_get(), ast_channel_connected(), ast_channel_lock, ast_channel_name(), ast_channel_ref, ast_channel_unlock, ast_cond_init, ast_debug, ast_get_chan_features_xfer_config(), ast_log, ast_party_connected_line_copy(), ast_strdupa, ast_string_field_init, ast_string_field_set, attended_transfer_properties_destructor(), ast_features_xfer_config::atxfercallbackretries, attended_transfer_properties::atxfercallbackretries, ast_features_xfer_config::atxferdropcall, attended_transfer_properties::atxferdropcall, ast_features_xfer_config::atxferloopdelay, attended_transfer_properties::atxferloopdelay, ast_features_xfer_config::atxfernoanswertimeout, attended_transfer_properties::atxfernoanswertimeout, attended_transfer_properties::cond, voicemailpwcheck::context, get_transfer_context(), LOG_ERROR, NULL, attended_transfer_properties::original_transferer_colp, attended_transfer_properties::target_framehook_id, attended_transfer_properties::transferer, attended_transfer_properties::transferer_features, and ast_features_xfer_config::xfersound.
Referenced by feature_attended_transfer().
|
static |
Definition at line 1352 of file bridge_basic.c.
References ao2_cleanup, ast_channel_cleanup, ast_cond_destroy, ast_debug, ast_party_connected_line_free(), ast_string_field_free_memory, attended_transfer_properties::cond, attended_transfer_properties::original_transferer_colp, attended_transfer_properties::recall_target, attended_transfer_properties::target_bridge, attended_transfer_properties::transfer_target, attended_transfer_properties::transferee_bridge, and attended_transfer_properties::transferer.
Referenced by attended_transfer_properties_alloc().
|
static |
Initiate shutdown of attended transfer properties.
Calling this indicates that the attended transfer properties are no longer needed because the transfer operation has concluded.
Definition at line 1524 of file bridge_basic.c.
References ao2_cleanup, ast_bridge_destroy(), ast_bridge_merge_inhibit(), ast_channel_remove_bridge_role(), ast_debug, AST_TRANSFERER_ROLE_NAME, bridge_basic_change_personality(), BRIDGE_BASIC_PERSONALITY_NORMAL, clear_stimulus_queue(), NULL, attended_transfer_properties::target_bridge, attended_transfer_properties::transferee_bridge, and attended_transfer_properties::transferer.
Referenced by attended_transfer_monitor_thread(), and feature_attended_transfer().
|
static |
DTMF hook when transferer presses abort sequence.
Sends a stimulus to the attended transfer monitor thread that the abort sequence has been pressed
Definition at line 2761 of file bridge_basic.c.
References ast_debug, stimulate_attended_transfer(), and STIMULUS_DTMF_ATXFER_ABORT.
Referenced by add_transferer_role(), and bridge_personality_atxfer_push().
|
static |
DTMF hook when transferer presses complete sequence.
Sends a stimulus to the attended transfer monitor thread that the complete sequence has been pressed
Definition at line 2775 of file bridge_basic.c.
References ast_debug, stimulate_attended_transfer(), and STIMULUS_DTMF_ATXFER_COMPLETE.
Referenced by add_transferer_role(), and bridge_personality_atxfer_push().
|
static |
DTMF hook when transferer presses swap sequence.
Sends a stimulus to the attended transfer monitor thread that the swap sequence has been pressed
Definition at line 2803 of file bridge_basic.c.
References ast_debug, stimulate_attended_transfer(), and STIMULUS_DTMF_ATXFER_SWAP.
Referenced by add_transferer_role(), and bridge_personality_atxfer_push().
|
static |
DTMF hook when transferer presses threeway sequence.
Sends a stimulus to the attended transfer monitor thread that the threeway sequence has been pressed
Definition at line 2789 of file bridge_basic.c.
References ast_debug, stimulate_attended_transfer(), and STIMULUS_DTMF_ATXFER_THREEWAY.
Referenced by add_transferer_role(), and bridge_personality_atxfer_push().
|
static |
Hangup hook for transferer channel.
Sends a stimulus to the attended transfer monitor thread that the transferer has hung up.
Definition at line 2817 of file bridge_basic.c.
References ast_debug, stimulate_attended_transfer(), and STIMULUS_TRANSFERER_HANGUP.
Referenced by bridge_personality_atxfer_push().
|
static |
Definition at line 290 of file bridge_basic.c.
References ast_bridge_channel_leave_bridge(), ast_bridge_channel_lock_bridge(), ast_bridge_unlock, AST_LIST_TRAVERSE, ast_bridge_channel::bridge, BRIDGE_CHANNEL_STATE_END_NO_DISSOLVE, BRIDGE_CHANNEL_STATE_WAIT, ast_bridge::channels, and ast_bridge_channel::state.
Referenced by add_normal_hooks().
|
static |
Definition at line 3505 of file bridge_basic.c.
References AST_BRIDGE_TRANSFER_MULTI_PARTY, copy_caller_data(), and transfer_channel_data::data.
Referenced by feature_blind_transfer().
|
static |
Definition at line 2344 of file bridge_basic.c.
References ast_channel_cleanup, bridge_merge(), get_transfer_parties(), publish_transfer_success(), ringing(), attended_transfer_properties::target_bridge, attended_transfer_properties::transfer_target, attended_transfer_properties::transferee_bridge, and attended_transfer_properties::transferer.
Referenced by blond_nonfinal_enter().
|
static |
Definition at line 2360 of file bridge_basic.c.
References ast_channel_ref, ast_channel_unref, blond_enter(), attended_transfer_properties::recall_target, attended_transfer_properties::superstate, SUPERSTATE_RECALL, and attended_transfer_properties::transfer_target.
|
static |
Definition at line 2371 of file bridge_basic.c.
References ast_channel_unref, ast_log, ast_softhangup(), AST_SOFTHANGUP_EXPLICIT, LOG_WARNING, attended_transfer_properties::recall_target, remove_attended_transfer_stimulus(), attended_transfer_properties::state, attended_transfer_state_properties::state_name, state_properties, STIMULUS_DTMF_ATXFER_ABORT, STIMULUS_DTMF_ATXFER_COMPLETE, STIMULUS_DTMF_ATXFER_SWAP, STIMULUS_DTMF_ATXFER_THREEWAY, STIMULUS_NONE, STIMULUS_RECALL_TARGET_ANSWER, STIMULUS_RECALL_TARGET_HANGUP, stimulus_strs, STIMULUS_TIMEOUT, STIMULUS_TRANSFER_TARGET_ANSWER, STIMULUS_TRANSFER_TARGET_HANGUP, STIMULUS_TRANSFEREE_HANGUP, STIMULUS_TRANSFERER_HANGUP, TRANSFER_FAIL, TRANSFER_RECALLING, and TRANSFER_RESUME.
|
static |
Change basic bridge personality.
Changing personalities allows for the bridge to remain in use but have properties such as its v_table and its flags change.
bridge | The bridge |
type | The personality to change the bridge to |
user_data | Private data to attach to the personality. |
Definition at line 3574 of file bridge_basic.c.
References ao2_cleanup, ao2_ref, ast_bridge_lock, ast_bridge_unlock, ast_clear_flag, AST_FLAGS_ALL, ast_set_flag, personality_details::bridge_flags, bridge_basic_personality::current, bridge_basic_personality::details, ast_bridge::feature_flags, lock, NULL, personality_details::on_personality_change, ast_bridge::personality, personality_details::pvt, remove_hooks_on_personality_change(), SCOPED_LOCK, and type.
Referenced by attended_transfer_properties_shutdown(), consulting_exit(), and feature_attended_transfer().
|
static |
Definition at line 702 of file bridge_basic.c.
References ao2_cleanup, ast_bridge_base_v_table, ast_bridge_methods::destroy, and ast_bridge::personality.
Referenced by ast_bridging_init_basic().
|
static |
Definition at line 3638 of file bridge_basic.c.
References ao2_alloc, ao2_ref, BRIDGE_BASIC_PERSONALITY_END, BRIDGE_BASIC_PERSONALITY_NORMAL, bridge_basic_personality::current, bridge_basic_personality::details, init_details(), NULL, ast_bridge::personality, and personality_destructor().
Referenced by ast_bridge_basic_new().
|
static |
Definition at line 687 of file bridge_basic.c.
References ast_assert, ast_bridge_base_v_table, ast_bridge_channel_update_accountcodes(), bridge_basic_personality::current, bridge_basic_personality::details, NULL, ast_bridge::personality, ast_bridge_methods::pull, and personality_details::v_table.
Referenced by ast_bridging_init_basic().
|
static |
Definition at line 670 of file bridge_basic.c.
References ast_assert, ast_bridge_base_v_table, ast_bridge_channel_update_accountcodes(), ast_bridge_channel_update_linkedids(), bridge_basic_personality::current, bridge_basic_personality::details, NULL, ast_bridge::personality, ast_bridge_methods::push, and personality_details::v_table.
Referenced by ast_bridging_init_basic().
|
static |
Definition at line 630 of file bridge_basic.c.
References ast_bridge_channel::chan, ast_bridge_channel::features, setup_bridge_features_builtin(), and setup_bridge_features_dynamic().
Referenced by add_normal_hooks().
|
static |
Definition at line 224 of file bridge_basic.c.
References ast_channel_datastore_add(), ast_channel_datastore_find(), ast_datastore_alloc, ast_datastore_free(), ast_malloc, ast_datastore::data, dtmf_features_info, ast_flags::flags, NULL, and replace().
Referenced by ast_bridge_features_ds_append(), and ast_bridge_features_ds_set().
|
static |
Helper method to send a hold frame to all channels in a bridge.
Definition at line 1862 of file bridge_basic.c.
References ast_bridge_lock, ast_bridge_queue_everyone_else(), ast_bridge_unlock, AST_CONTROL_HOLD, AST_FRAME_CONTROL, hold(), and NULL.
Referenced by wait_to_recall_enter(), and wait_to_retransfer_enter().
|
static |
Wrapper for bridge_do_merge.
Definition at line 1919 of file bridge_basic.c.
References ast_alloca, ast_bridge_lock_both, ast_bridge_unlock, bridge_do_merge(), bridge_find_channel(), and NULL.
Referenced by blond_enter(), complete_enter(), and threeway_enter().
|
static |
Wrapper for bridge_do_move.
Definition at line 1892 of file bridge_basic.c.
References ao2_cleanup, ao2_lock, ao2_unlock, ast_bridge_lock_both, ast_bridge_unlock, ast_channel_get_bridge_channel(), ast_channel_lock, ast_channel_unlock, bridge_do_move(), and ast_bridge_channel::swap.
Referenced by calling_target_enter(), consulting_exit(), double_checking_exit(), hesitant_enter(), and rebridge_enter().
|
static |
Definition at line 3000 of file bridge_basic.c.
References bridge_basic_personality::current, bridge_basic_personality::details, ast_bridge::personality, personality_details::pvt, recall_pull(), attended_transfer_properties::superstate, SUPERSTATE_RECALL, SUPERSTATE_TRANSFER, and transfer_pull().
Referenced by ast_bridging_init_basic().
|
static |
Definition at line 2875 of file bridge_basic.c.
References ast_bridge_dtmf_hook(), ast_bridge_hangup_hook(), AST_BRIDGE_HOOK_REMOVE_ON_PERSONALITY_CHANGE, AST_BRIDGE_HOOK_REMOVE_ON_PULL, ast_channel_get_role_option(), ast_channel_has_role(), ast_strlen_zero(), AST_TRANSFERER_ROLE_NAME, atxfer_abort(), atxfer_complete(), atxfer_swap(), atxfer_threeway(), atxfer_transferer_hangup(), ast_bridge_channel::chan, bridge_basic_personality::current, bridge_basic_personality::details, ast_bridge_channel::features, NULL, ast_bridge::personality, and personality_details::pvt.
Referenced by ast_bridging_init_basic().
|
static |
Definition at line 661 of file bridge_basic.c.
References add_normal_hooks().
Referenced by ast_bridging_init_basic().
|
static |
Helper method to send a ringing indication to all channels in a bridge.
Definition at line 1847 of file bridge_basic.c.
References ast_bridge_lock, ast_bridge_queue_everyone_else(), ast_bridge_unlock, AST_CONTROL_RINGING, AST_FRAME_CONTROL, NULL, and ringing().
Referenced by recalling_enter().
|
static |
Helper method to send an unhold frame to all channels in a bridge.
Definition at line 1877 of file bridge_basic.c.
References ast_bridge_lock, ast_bridge_queue_everyone_else(), ast_bridge_unlock, AST_CONTROL_UNHOLD, AST_FRAME_CONTROL, NULL, and unhold().
Referenced by calling_target_exit(), consulting_exit(), double_checking_exit(), wait_to_recall_exit(), and wait_to_retransfer_exit().
|
static |
Definition at line 162 of file bridge_basic.c.
References ast_log, LOG_ERROR, LOG_WARNING, and set_feature_flag_from_char().
Referenced by ast_bridge_features_ds_set_string().
|
static |
Definition at line 346 of file bridge_basic.c.
References ast_get_builtin_feature(), buf, len(), lock, and SCOPED_CHANNELLOCK.
Referenced by builtin_features_helper().
|
static |
Definition at line 368 of file bridge_basic.c.
References ast_bridge_features_enable(), AST_BRIDGE_HOOK_REMOVE_ON_PERSONALITY_CHANGE, AST_BRIDGE_HOOK_REMOVE_ON_PULL, ast_channel_name(), AST_FEATURE_MAX_LEN, ast_log, ast_strlen_zero(), ast_test_flag, builtin_feature_get_exten(), LOG_ERROR, and NULL.
Referenced by setup_bridge_features_builtin().
|
static |
Definition at line 2122 of file bridge_basic.c.
References bridge_move(), NULL, attended_transfer_properties::target_bridge, attended_transfer_properties::transferee_bridge, and attended_transfer_properties::transferer.
|
static |
Definition at line 2128 of file bridge_basic.c.
References ast_log, attended_transfer_properties::atxferdropcall, bridge_unhold(), LOG_WARNING, play_failsound(), publish_transfer_fail(), attended_transfer_properties::state, attended_transfer_state_properties::state_name, state_properties, STIMULUS_DTMF_ATXFER_ABORT, STIMULUS_DTMF_ATXFER_COMPLETE, STIMULUS_DTMF_ATXFER_SWAP, STIMULUS_DTMF_ATXFER_THREEWAY, STIMULUS_NONE, STIMULUS_RECALL_TARGET_ANSWER, STIMULUS_RECALL_TARGET_HANGUP, stimulus_strs, STIMULUS_TIMEOUT, STIMULUS_TRANSFER_TARGET_ANSWER, STIMULUS_TRANSFER_TARGET_HANGUP, STIMULUS_TRANSFEREE_HANGUP, STIMULUS_TRANSFERER_HANGUP, TRANSFER_BLOND, TRANSFER_BLOND_NONFINAL, TRANSFER_CONSULTING, TRANSFER_FAIL, TRANSFER_HESITANT, TRANSFER_REBRIDGE, TRANSFER_THREEWAY, attended_transfer_properties::transferee_bridge, and attended_transfer_properties::transferer.
|
static |
Free backlog of stimuli in the queue.
Definition at line 1508 of file bridge_basic.c.
References ast_free, AST_LIST_REMOVE_HEAD, lock, stimulus_list::next, SCOPED_AO2LOCK, and attended_transfer_properties::stimulus_queue.
Referenced by attended_transfer_properties_shutdown().
|
static |
Definition at line 2453 of file bridge_basic.c.
References ast_channel_callid_set(), ast_channel_datastore_inherit(), ast_channel_inherit_variables(), ast_channel_req_accountcodes(), AST_CHANNEL_REQUESTOR_REPLACEMENT, ast_channel_stage_snapshot(), ast_channel_stage_snapshot_done(), ast_read_threadstorage_callid(), and attended_transfer_properties::transferer.
Referenced by recalling_enter(), and retransfer_enter().
|
static |
Definition at line 2328 of file bridge_basic.c.
References ast_channel_cleanup, bridge_merge(), get_transfer_parties(), play_sound(), publish_transfer_success(), attended_transfer_properties::target_bridge, attended_transfer_properties::transfer_target, attended_transfer_properties::transferee_bridge, attended_transfer_properties::transferer, and attended_transfer_properties::xfersound.
|
static |
Definition at line 2231 of file bridge_basic.c.
|
static |
Definition at line 2236 of file bridge_basic.c.
References ao2_ref, ast_bridge_merge_inhibit(), ast_log, bridge_basic_change_personality(), BRIDGE_BASIC_PERSONALITY_NORMAL, bridge_move(), bridge_unhold(), hold(), LOG_WARNING, NULL, play_failsound(), attended_transfer_properties::state, attended_transfer_state_properties::state_name, state_properties, STIMULUS_DTMF_ATXFER_ABORT, STIMULUS_DTMF_ATXFER_COMPLETE, STIMULUS_DTMF_ATXFER_SWAP, STIMULUS_DTMF_ATXFER_THREEWAY, STIMULUS_NONE, STIMULUS_RECALL_TARGET_ANSWER, STIMULUS_RECALL_TARGET_HANGUP, stimulus_strs, STIMULUS_TIMEOUT, STIMULUS_TRANSFER_TARGET_ANSWER, STIMULUS_TRANSFER_TARGET_HANGUP, STIMULUS_TRANSFEREE_HANGUP, STIMULUS_TRANSFERER_HANGUP, attended_transfer_properties::target_bridge, TRANSFER_COMPLETE, TRANSFER_DOUBLECHECKING, TRANSFER_FAIL, TRANSFER_REBRIDGE, TRANSFER_THREEWAY, attended_transfer_properties::transferee_bridge, attended_transfer_properties::transferer, and unhold().
|
static |
Definition at line 3282 of file bridge_basic.c.
References ast_channel_caller(), ast_channel_connected(), ast_channel_datastore_inherit(), ast_channel_inherit_variables(), ast_channel_lock_both, ast_channel_unlock, and ast_connected_line_copy_from_caller().
Referenced by blind_transfer_cb(), and dial_transfer().
|
static |
Helper function that creates an outgoing channel and returns it immediately.
Definition at line 3293 of file bridge_basic.c.
References ao2_bump, ao2_cleanup, ast_bridge_set_transfer_variables(), ast_channel_lock, ast_channel_lock_both, ast_channel_name(), ast_channel_nativeformats(), ast_channel_req_accountcodes(), AST_CHANNEL_REQUESTOR_BRIDGE_PEER, ast_channel_unlock, ast_request(), copy_caller_data(), NULL, and pbx_builtin_setvar_helper().
Referenced by feature_attended_transfer().
|
static |
Definition at line 2286 of file bridge_basic.c.
|
static |
Definition at line 2291 of file bridge_basic.c.
References ast_log, bridge_move(), bridge_unhold(), hold(), LOG_WARNING, NULL, play_failsound(), publish_transfer_fail(), attended_transfer_properties::state, attended_transfer_state_properties::state_name, state_properties, STIMULUS_DTMF_ATXFER_ABORT, STIMULUS_DTMF_ATXFER_COMPLETE, STIMULUS_DTMF_ATXFER_SWAP, STIMULUS_DTMF_ATXFER_THREEWAY, STIMULUS_NONE, STIMULUS_RECALL_TARGET_ANSWER, STIMULUS_RECALL_TARGET_HANGUP, stimulus_strs, STIMULUS_TIMEOUT, STIMULUS_TRANSFER_TARGET_ANSWER, STIMULUS_TRANSFER_TARGET_HANGUP, STIMULUS_TRANSFEREE_HANGUP, STIMULUS_TRANSFERER_HANGUP, attended_transfer_properties::target_bridge, TRANSFER_COMPLETE, TRANSFER_CONSULTING, TRANSFER_FAIL, TRANSFER_RESUME, TRANSFER_THREEWAY, attended_transfer_properties::transferee_bridge, attended_transfer_properties::transferer, and unhold().
|
static |
Definition at line 133 of file bridge_basic.c.
References ARRAY_LEN, AST_FEATURE_AUTOMIXMON, AST_FEATURE_AUTOMON, AST_FEATURE_DISCONNECT, AST_FEATURE_PARKCALL, AST_FEATURE_REDIRECT, and ast_test_flag.
Referenced by ast_bridge_features_ds_get_string().
|
static |
Definition at line 543 of file bridge_basic.c.
References dynamic_dtmf_hook_data::app_args_offset, app_name(), dynamic_dtmf_hook_data::app_name, ast_bridge_dtmf_hook(), AST_BRIDGE_HOOK_REMOVE_ON_PERSONALITY_CHANGE, AST_BRIDGE_HOOK_REMOVE_ON_PULL, ast_free, ast_free_ptr(), ast_malloc, ast_strlen_zero(), dynamic_dtmf_hook_trip(), dynamic_dtmf_hook_data::feature_offset, dynamic_dtmf_hook_data::flags, and dynamic_dtmf_hook_data::moh_offset.
Referenced by setup_dynamic_feature().
|
static |
Definition at line 435 of file bridge_basic.c.
References dynamic_dtmf_hook_run::activated_offset, dynamic_dtmf_hook_run::app_args_offset, dynamic_dtmf_hook_run::app_name, ast_bridge_channel_run_app(), ast_channel::bridge_channel, ast_bridge_channel::chan, dynamic_dtmf_hook_run::feature_offset, dynamic_dtmf_hook_run::moh_offset, NULL, and pbx_builtin_setvar_helper().
Referenced by dynamic_dtmf_hook_trip().
|
static |
Definition at line 475 of file bridge_basic.c.
References dynamic_dtmf_hook_run::activated_offset, dynamic_dtmf_hook_run::app_args_offset, dynamic_dtmf_hook_data::app_args_offset, dynamic_dtmf_hook_run::app_name, dynamic_dtmf_hook_data::app_name, ast_alloca, AST_BRIDGE_CHANNEL_CB_OPTION_MEDIA, ast_bridge_channel_write_callback(), ast_channel_lock, ast_channel_name(), ast_channel_unlock, AST_FEATURE_FLAG_ONPEER, ast_strdupa, ast_test_flag, ast_bridge_channel::chan, dynamic_dtmf_hook_callback(), dynamic_dtmf_hook_run::feature_offset, dynamic_dtmf_hook_data::feature_offset, dynamic_dtmf_hook_run::moh_offset, and dynamic_dtmf_hook_data::moh_offset.
Referenced by dynamic_dtmf_hook_add().
|
static |
Definition at line 2747 of file bridge_basic.c.
References ast_bridge_destroy(), NULL, and attended_transfer_properties::transferee_bridge.
|
static |
Internal built in feature for attended transfers.
This hook will set up a thread for monitoring the progress of an attended transfer. For more information about attended transfer progress, see documentation on the transfer state machine.
bridge_channel | The channel that pressed the attended transfer DTMF sequence |
hook_pvt | Structure with further information about the attended transfer |
Definition at line 3340 of file bridge_basic.c.
References add_transferer_role(), ao2_ref, ast_bridge_basic_new(), ast_bridge_channel_merge_inhibit(), ast_bridge_channel_write_hold(), ast_bridge_channel_write_unhold(), ast_bridge_impart(), AST_BRIDGE_IMPART_CHAN_INDEPENDENT, ast_bridge_merge_inhibit(), ast_call(), ast_channel_name(), ast_channel_ref, ast_debug, ast_hangup(), ast_log, AST_MAX_CONTEXT, AST_MAX_EXTENSION, ast_pthread_create_detached, ast_string_field_set, ast_verb, attach_framehook(), attended_transfer_monitor_thread(), attended_transfer_properties_alloc(), attended_transfer_properties_shutdown(), bridge_basic_change_personality(), BRIDGE_BASIC_PERSONALITY_ATXFER, ast_bridge_channel::chan, ast_bridge_features_attended_transfer::context, attended_transfer_properties::context, dial_transfer(), attended_transfer_properties::exten, grab_transfer(), ast_bridge::inhibit_merge, LOG_ERROR, ast_bridge_methods::name, NULL, stream_failsound(), attended_transfer_properties::target_bridge, thread, attended_transfer_properties::transfer_target, attended_transfer_properties::transferee_bridge, attended_transfer_properties::transferer, ast_bridge::uniqueid, and ast_bridge::v_table.
Referenced by ast_bridging_init_basic().
|
static |
Internal built in feature for blind transfers.
Definition at line 3516 of file bridge_basic.c.
References ast_bridge_channel_write_hold(), ast_bridge_channel_write_unhold(), ast_bridge_discard_after_goto(), ast_bridge_set_after_go_on(), ast_bridge_transfer_blind(), AST_BRIDGE_TRANSFER_SUCCESS, ast_channel_context(), ast_channel_exten(), ast_channel_lock, ast_channel_name(), ast_channel_priority(), ast_channel_unlock, ast_debug, AST_MAX_EXTENSION, ast_strdupa, ast_strlen_zero(), ast_verb, blind_transfer_cb(), ast_bridge_channel::chan, ast_bridge_features_blind_transfer::context, get_transfer_context(), grab_transfer(), NULL, pbx_builtin_getvar_helper(), and S_OR.
Referenced by ast_bridging_init_basic().
|
static |
Definition at line 1379 of file bridge_basic.c.
References ast_channel_context(), ast_strlen_zero(), voicemailpwcheck::context, pbx_builtin_getvar_helper(), and attended_transfer_properties::transferer.
Referenced by attended_transfer_properties_alloc(), and feature_blind_transfer().
|
static |
Definition at line 1404 of file bridge_basic.c.
References ast_strlen_zero(), attended_transfer_properties::exten, pbx_builtin_getvar_helper(), and attended_transfer_properties::transferer.
Referenced by grab_transfer().
|
static |
determine transferee and transfer target for an attended transfer
In builtin attended transfers, there is a single transferer channel that jumps between the two bridges involved. At the time the attended transfer occurs, the transferer could be in either bridge, so determining the parties is a bit more complex than normal.
The method used here is to determine which of the two bridges the transferer is in, and grabbing the peer from that bridge. The other bridge, if it only has a single channel in it, has the other desired channel.
transferer | The channel performing the transfer | |
transferee_bridge | The bridge that the transferee is in | |
target_bridge | The bridge that the transfer target is in | |
[out] | transferee | The transferee channel |
[out] | transfer_target | The transfer target channel |
Definition at line 1634 of file bridge_basic.c.
References ao2_cleanup, ast_channel_get_bridge(), ast_channel_lock, ast_channel_unlock, get_transfer_parties_transferer_bridge(), and get_transfer_party_non_transferer_bridge().
Referenced by blond_enter(), complete_enter(), and threeway_enter().
|
static |
Get the transferee and transfer target when the transferer is in a bridge with one of the desired parties.
transferer_bridge | The bridge the transferer is in | |
other_bridge | The bridge the transferer is not in. May be NULL. | |
transferer | The transferer party | |
[out] | transferer_peer | The party that is in the bridge with the transferer |
[out] | other_party | The party that is in the other_bridge |
Definition at line 1609 of file bridge_basic.c.
References ast_bridge_peer(), and get_transfer_party_non_transferer_bridge().
Referenced by get_transfer_parties().
|
static |
Get a desired transfer party for a bridge the transferer is not in.
bridge | The bridge to get the party from. May be NULL. | |
[out] | party | The lone channel in the bridge. Will be set NULL if bridge is NULL or multiple parties are present. |
Definition at line 1589 of file bridge_basic.c.
References ast_channel_ref, AST_LIST_FIRST, ast_bridge::channels, NULL, and ast_bridge::num_channels.
Referenced by get_transfer_parties(), and get_transfer_parties_transferer_bridge().
|
static |
Helper function that presents dialtone and grabs extension.
0 | on success |
-1 | on failure |
Definition at line 3180 of file bridge_basic.c.
References ao2_ref, ast_app_dtget(), ast_channel_caller(), ast_channel_lock, ast_channel_name(), ast_channel_unlock, ast_copy_string(), AST_DIGIT_ANY, AST_DIGIT_NONE, ast_exists_extension(), ast_get_chan_features_xfer_config(), ast_log, ast_stopstream(), ast_strdupa, ast_stream_and_wait(), ast_strlen_zero(), ast_test_suite_event_notify, ast_verb, voicemailpwcheck::context, get_transfer_exten(), LOG_ERROR, LOG_WARNING, NULL, S_COR, ast_features_xfer_config::transferannouncesound, ast_features_xfer_config::transferdialattempts, ast_features_xfer_config::transferdigittimeout, ast_features_xfer_config::transferinvalidsound, and ast_features_xfer_config::transferretrysound.
Referenced by feature_attended_transfer(), and feature_blind_transfer().
|
static |
Definition at line 2162 of file bridge_basic.c.
References bridge_move(), NULL, attended_transfer_properties::target_bridge, attended_transfer_properties::transferee_bridge, attended_transfer_properties::transferer, and unhold().
|
static |
Definition at line 2169 of file bridge_basic.c.
References ast_log, attended_transfer_properties::atxferdropcall, hold(), LOG_WARNING, play_failsound(), publish_transfer_fail(), attended_transfer_properties::state, attended_transfer_state_properties::state_name, state_properties, STIMULUS_DTMF_ATXFER_ABORT, STIMULUS_DTMF_ATXFER_COMPLETE, STIMULUS_DTMF_ATXFER_SWAP, STIMULUS_DTMF_ATXFER_THREEWAY, STIMULUS_NONE, STIMULUS_RECALL_TARGET_ANSWER, STIMULUS_RECALL_TARGET_HANGUP, stimulus_strs, STIMULUS_TIMEOUT, STIMULUS_TRANSFER_TARGET_ANSWER, STIMULUS_TRANSFER_TARGET_HANGUP, STIMULUS_TRANSFEREE_HANGUP, STIMULUS_TRANSFERER_HANGUP, TRANSFER_BLOND, TRANSFER_BLOND_NONFINAL, TRANSFER_CALLING_TARGET, TRANSFER_DOUBLECHECKING, TRANSFER_FAIL, TRANSFER_RESUME, TRANSFER_THREEWAY, and attended_transfer_properties::transferer.
|
static |
Helper method to place a channel in a bridge on hold.
Definition at line 1788 of file bridge_basic.c.
References ao2_ref, ast_bridge_channel_write_hold(), ast_channel_get_bridge_channel(), ast_channel_lock, ast_channel_unlock, ast_bridge_channel::chan, and NULL.
Referenced by bridge_hold(), consulting_exit(), double_checking_exit(), hesitant_exit(), and sla_hold_str().
|
static |
Definition at line 3619 of file bridge_basic.c.
References ast_log, BRIDGE_BASIC_PERSONALITY_ATXFER, BRIDGE_BASIC_PERSONALITY_NORMAL, personality_details::bridge_flags, LOG_WARNING, NORMAL_FLAGS, personality_details::on_personality_change, on_personality_change_normal(), personality_atxfer_v_table, personality_normal_v_table, TRANSFER_FLAGS, type, and personality_details::v_table.
Referenced by bridge_basic_personality_alloc().
|
static |
Definition at line 3607 of file bridge_basic.c.
References add_normal_hooks(), ast_channel_name(), AST_LIST_TRAVERSE, ast_log, ast_bridge_channel::bridge, ast_bridge_channel::chan, ast_bridge::channels, and LOG_WARNING.
Referenced by init_details().
|
static |
Definition at line 3597 of file bridge_basic.c.
References ao2_cleanup, BRIDGE_BASIC_PERSONALITY_END, bridge_basic_personality::details, and personality_details::pvt.
Referenced by bridge_basic_personality_alloc().
|
static |
Helper method to play a fail sound on a channel in a bridge.
chan | The channel to play the fail sound to |
Definition at line 1752 of file bridge_basic.c.
References ast_channel_lock, ast_channel_unlock, ast_free, ast_get_chan_features_xferfailsound(), ast_bridge_channel::chan, and play_sound().
Referenced by calling_target_exit(), consulting_exit(), double_checking_exit(), and hesitant_exit().
|
static |
Helper method to play a sound on a channel in a bridge.
chan | The channel to play the sound to |
sound | The sound to play |
Definition at line 1733 of file bridge_basic.c.
References ao2_ref, ast_bridge_channel_queue_playfile(), ast_channel_get_bridge_channel(), ast_channel_lock, ast_channel_unlock, ast_bridge_channel::chan, and NULL.
Referenced by complete_enter(), play_failsound(), and threeway_enter().
|
static |
Send a stasis publication for a failed attended transfer.
Definition at line 1708 of file bridge_basic.c.
References ao2_cleanup, ast_attended_transfer_message_create(), ast_bridge_publish_attended_transfer(), AST_BRIDGE_TRANSFER_FAIL, ast_channel_name(), ast_log, LOG_ERROR, NULL, ast_attended_transfer_message::result, attended_transfer_properties::target_bridge, attended_transfer_properties::transferee_bridge, and attended_transfer_properties::transferer.
Referenced by calling_target_exit(), double_checking_exit(), and hesitant_exit().
|
static |
Send a stasis publication for a successful attended transfer.
Definition at line 1661 of file bridge_basic.c.
References ao2_cleanup, ast_attended_transfer_message_add_merge(), ast_attended_transfer_message_create(), ast_bridge_publish_attended_transfer(), ast_channel_name(), ast_log, LOG_ERROR, attended_transfer_properties::target_bridge, attended_transfer_properties::transferee_bridge, and attended_transfer_properties::transferer.
Referenced by blond_enter(), and complete_enter().
|
static |
Send a stasis publication for an attended transfer that ends in a threeway call.
Definition at line 1684 of file bridge_basic.c.
References ao2_cleanup, ast_attended_transfer_message_add_threeway(), ast_attended_transfer_message_create(), ast_bridge_publish_attended_transfer(), ast_channel_name(), ast_log, LOG_ERROR, attended_transfer_properties::target_bridge, attended_transfer_properties::transferee_bridge, and attended_transfer_properties::transferer.
Referenced by threeway_enter().
|
static |
Definition at line 2202 of file bridge_basic.c.
References bridge_move(), NULL, attended_transfer_properties::target_bridge, attended_transfer_properties::transferee_bridge, attended_transfer_properties::transferer, and unhold().
|
static |
Dial callback when attempting to recall the original transferer channel.
This is how we can monitor if the recall target has answered or has hung up. If one of the two is detected, then an appropriate stimulus is sent to the attended transfer monitor thread.
Definition at line 2410 of file bridge_basic.c.
References ast_dial_answered_steal(), ast_dial_get_user_data(), AST_DIAL_RESULT_ANSWERED, AST_DIAL_RESULT_FAILED, AST_DIAL_RESULT_HANGUP, AST_DIAL_RESULT_INVALID, AST_DIAL_RESULT_PROCEEDING, AST_DIAL_RESULT_PROGRESS, AST_DIAL_RESULT_RINGING, AST_DIAL_RESULT_TIMEOUT, AST_DIAL_RESULT_TRYING, AST_DIAL_RESULT_UNANSWERED, ast_dial_state(), attended_transfer_properties::dial, attended_transfer_properties::recall_target, stimulate_attended_transfer(), STIMULUS_RECALL_TARGET_ANSWER, and STIMULUS_RECALL_TARGET_HANGUP.
Referenced by recalling_enter().
|
static |
Definition at line 2959 of file bridge_basic.c.
References ao2_ref, ast_channel_get_bridge_channel(), ast_channel_lock, ast_channel_unlock, AST_LIST_FIRST, ast_bridge_channel::chan, ast_bridge::channels, ast_bridge::num_channels, attended_transfer_properties::recall_target, stimulate_attended_transfer(), STIMULUS_RECALL_TARGET_HANGUP, STIMULUS_TRANSFEREE_HANGUP, and attended_transfer_properties::target_bridge.
Referenced by bridge_personality_atxfer_pull().
|
static |
Definition at line 2475 of file bridge_basic.c.
References ao2_cleanup, ao2_ref, ast_channel_caller(), ast_channel_connected(), ast_channel_lock_both, ast_channel_unlock, ast_dial_append(), ast_dial_create(), ast_dial_get_channel(), ast_dial_prerun(), AST_DIAL_RESULT_FAILED, ast_dial_run(), ast_dial_set_state_callback(), ast_dial_set_user_data(), ast_format_cap_alloc, ast_format_cap_append, AST_FORMAT_CAP_FLAG_DEFAULT, ast_format_slin, ast_party_caller_copy(), ast_party_connected_line_copy(), bridge_ringing(), common_recall_channel_setup(), attended_transfer_properties::dial, NULL, attended_transfer_properties::original_transferer_colp, RAII_VAR, recall_callback(), attended_transfer_properties::transferee_bridge, attended_transfer_properties::transferer, attended_transfer_properties::transferer_addr, and attended_transfer_properties::transferer_type.
|
static |
Definition at line 2537 of file bridge_basic.c.
References ao2_ref, ast_bridge_features_ds_set(), ast_bridge_impart(), AST_BRIDGE_IMPART_CHAN_INDEPENDENT, ast_channel_ref, ast_channel_unref, ast_dial_destroy(), ast_dial_join(), ast_hangup(), ast_log, attended_transfer_properties::atxfercallbackretries, attended_transfer_properties::atxferloopdelay, attended_transfer_properties::dial, LOG_WARNING, NULL, attended_transfer_properties::recall_target, attended_transfer_properties::retry_attempts, attended_transfer_properties::state, attended_transfer_state_properties::state_name, state_properties, STIMULUS_DTMF_ATXFER_ABORT, STIMULUS_DTMF_ATXFER_COMPLETE, STIMULUS_DTMF_ATXFER_SWAP, STIMULUS_DTMF_ATXFER_THREEWAY, STIMULUS_NONE, STIMULUS_RECALL_TARGET_ANSWER, STIMULUS_RECALL_TARGET_HANGUP, stimulus_strs, STIMULUS_TIMEOUT, STIMULUS_TRANSFER_TARGET_ANSWER, STIMULUS_TRANSFER_TARGET_HANGUP, STIMULUS_TRANSFEREE_HANGUP, STIMULUS_TRANSFERER_HANGUP, TRANSFER_FAIL, TRANSFER_RESUME, TRANSFER_RETRANSFER, TRANSFER_WAIT_TO_RETRANSFER, attended_transfer_properties::transferee_bridge, and attended_transfer_properties::transferer_features.
|
static |
Definition at line 1566 of file bridge_basic.c.
References ao2_lock, ao2_unlock, ast_free, AST_LIST_REMOVE_CURRENT, AST_LIST_TRAVERSE_SAFE_BEGIN, AST_LIST_TRAVERSE_SAFE_END, stimulus_list::next, stimulus_list::stimulus, and attended_transfer_properties::stimulus_queue.
Referenced by blond_nonfinal_exit().
|
static |
Remove appropriate hooks when basic bridge personality changes.
Hooks that have the AST_BRIDGE_HOOK_REMOVE_ON_PERSONALITY_CHANGE flag set will be removed from all bridge channels in the bridge.
bridge | Basic bridge undergoing personality change |
Definition at line 719 of file bridge_basic.c.
References ast_bridge_channel_lock, ast_bridge_channel_unlock, ast_bridge_features_remove(), AST_BRIDGE_HOOK_REMOVE_ON_PERSONALITY_CHANGE, AST_LIST_TRAVERSE, ast_bridge_channel::bridge, ast_bridge::channels, ast_bridge_channel::features, lock, and SCOPED_LOCK.
Referenced by bridge_basic_change_personality().
|
static |
Definition at line 2209 of file bridge_basic.c.
|
static |
Definition at line 2623 of file bridge_basic.c.