Asterisk - The Open Source Telephony Project
18.5.0
|
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 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.
Referenced by ast_bridge_basic_new(), and init_details().
#define TRANSFER_FLAGS AST_BRIDGE_FLAG_SMART |
Definition at line 54 of file bridge_basic.c.
Referenced by init_details().
The states in the attended transfer state machine.
Definition at line 774 of file bridge_basic.c.
Flags that indicate properties of attended transfer states.
Definition at line 1933 of file bridge_basic.c.
Stimuli that can cause transfer state changes.
Definition at line 1236 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.
Enumerator | |
---|---|
SUPERSTATE_TRANSFER | Transfer superstate. The attended transfer state machine begins in this superstate. The goal of this state is for a transferer channel to facilitate a transfer from a transferee to a transfer target. There are two bridges used in this superstate. The transferee bridge is the bridge that the transferer and transferee channels originally communicate in, and the target bridge is the bridge where the transfer target is being dialed. The transferer channel is capable of moving between the bridges using the DTMF swap sequence. |
SUPERSTATE_RECALL | Recall superstate. The attended transfer state machine moves to this superstate if atxferdropcall is set to "no" and the transferer channel hangs up during a transfer. The goal in this superstate is to call back either the transfer target or transferer and rebridge with the transferee channel(s). In this superstate, there is only a single bridge used, the original transferee bridge. Rather than distinguishing between a transferer and transfer target, all outbound calls are toward a "recall_target" channel. |
Definition at line 737 of file bridge_basic.c.
Definition at line 58 of file bridge_basic.c.
|
static |
Definition at line 641 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 3121 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.
a | pointer to a new bridge on success |
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 3617 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.
Flags to set on the bridge. These are added to the flags already set.
Definition at line 3630 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().
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. |
flags | on success. |
NULL | if the datastore does not exist. |
Definition at line 268 of file bridge_basic.c.
References ast_channel_datastore_find(), ast_datastore::data, 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().
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(), 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 3639 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 3098 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(), retransfer_enter(), and wait_to_retransfer_exit().
|
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 3044 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, 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 1409 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, 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 1353 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 1508 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 2741 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 2755 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 2783 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 2769 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 2797 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 3461 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 2322 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 2338 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 2349 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, 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 Private data to attach to the personality. |
Definition at line 3530 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 ast_datastore_info::type.
Referenced by attended_transfer_properties_shutdown(), consulting_exit(), and feature_attended_transfer().
|
static |
Definition at line 703 of file bridge_basic.c.
References ao2_cleanup, ast_bridge_base_v_table, and ast_bridge_methods::destroy.
Referenced by ast_bridging_init_basic().
|
static |
Definition at line 3594 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 688 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_methods::pull, and personality_details::v_table.
Referenced by ast_bridging_init_basic().
|
static |
Definition at line 671 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_methods::push, and personality_details::v_table.
Referenced by ast_bridging_init_basic().
|
static |
Definition at line 631 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, ast_flags::flags, and NULL.
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 1844 of file bridge_basic.c.
References ast_bridge_queue_everyone_else(), AST_CONTROL_HOLD, AST_FRAME_CONTROL, ast_frame::frametype, and NULL.
Referenced by wait_to_recall_enter(), and wait_to_retransfer_enter().
|
static |
Wrapper for bridge_do_merge.
Definition at line 1897 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 1870 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 2980 of file bridge_basic.c.
References bridge_basic_personality::current, bridge_basic_personality::details, 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 2855 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, and personality_details::pvt.
Referenced by ast_bridging_init_basic().
|
static |
Definition at line 662 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 1831 of file bridge_basic.c.
References ast_bridge_queue_everyone_else(), AST_CONTROL_RINGING, AST_FRAME_CONTROL, ast_frame::frametype, and NULL.
Referenced by recalling_enter().
|
static |
Helper method to send an unhold frame to all channels in a bridge.
Definition at line 1857 of file bridge_basic.c.
References ast_bridge_queue_everyone_else(), AST_CONTROL_UNHOLD, AST_FRAME_CONTROL, ast_frame::frametype, and NULL.
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(), 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 2100 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 2106 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, 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 1492 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 2433 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(), and ast_read_threadstorage_callid().
Referenced by recalling_enter(), and retransfer_enter().
|
static |
Definition at line 2306 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 2209 of file bridge_basic.c.
|
static |
Definition at line 2214 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, 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 3244 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 3255 of file bridge_basic.c.
References ast_bridge_set_transfer_variables(), 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 2264 of file bridge_basic.c.
|
static |
Definition at line 2269 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, 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 544 of file bridge_basic.c.
References dynamic_dtmf_hook_data::app_args_offset, 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 436 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_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 476 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 2727 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 3295 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(), exten, attended_transfer_properties::exten, grab_transfer(), ast_bridge::inhibit_merge, LOG_ERROR, LOG_WARNING, 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 3472 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 1380 of file bridge_basic.c.
References ast_channel_context(), ast_channel_macrocontext(), ast_strlen_zero, context, and pbx_builtin_getvar_helper().
Referenced by attended_transfer_properties_alloc(), and feature_blind_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 1618 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 1593 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 1573 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 3160 of file bridge_basic.c.
References ao2_ref, ast_app_dtget(), ast_channel_lock, ast_channel_name(), ast_channel_unlock, AST_DIGIT_ANY, AST_DIGIT_NONE, 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, LOG_ERROR, 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 2140 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 2147 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, 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 1772 of file bridge_basic.c.
References ao2_ref, ast_bridge_channel_write_hold(), ast_channel_get_bridge_channel(), ast_channel_lock, ast_channel_unlock, and NULL.
Referenced by add_sdp(), consulting_exit(), double_checking_exit(), hesitant_exit(), and sla_hold_str().
|
static |
Definition at line 3575 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, and personality_details::v_table.
Referenced by bridge_basic_personality_alloc().
|
static |
Definition at line 3563 of file bridge_basic.c.
References add_normal_hooks(), ast_channel_name(), AST_LIST_TRAVERSE, ast_log, ast_bridge_channel::chan, ast_bridge::channels, and LOG_WARNING.
Referenced by init_details().
|
static |
Definition at line 3553 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 1736 of file bridge_basic.c.
References ast_channel_lock, ast_channel_unlock, ast_free, ast_get_chan_features_xferfailsound(), 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 1717 of file bridge_basic.c.
References ao2_ref, ast_bridge_channel_queue_playfile(), ast_channel_get_bridge_channel(), ast_channel_lock, ast_channel_unlock, and NULL.
Referenced by complete_enter(), play_failsound(), and threeway_enter().
|
static |
Send a stasis publication for a failed attended transfer.
Definition at line 1692 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 1645 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 1668 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 2180 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 2388 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::recall_target, stimulate_attended_transfer(), STIMULUS_RECALL_TARGET_ANSWER, and STIMULUS_RECALL_TARGET_HANGUP.
Referenced by recalling_enter().
|
static |
Definition at line 2939 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, 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 2455 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 2517 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, 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 1550 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 720 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::channels, ast_bridge_channel::features, lock, and SCOPED_LOCK.
Referenced by bridge_basic_change_personality().
|
static |
Definition at line 2187 of file bridge_basic.c.
|
static |
Definition at line 2603 of file bridge_basic.c.
References ao2_cleanup, ast_bridge_impart(), AST_BRIDGE_IMPART_CHAN_INDEPENDENT, ast_call(), ast_channel_connected(), ast_channel_lock_both, ast_channel_ref, ast_channel_unlock, ast_channel_unref, ast_format_cap_alloc, ast_format_cap_append, AST_FORMAT_CAP_FLAG_DEFAULT, ast_format_slin, ast_hangup(), ast_log, AST_MAX_CONTEXT, AST_MAX_EXTENSION, ast_party_connected_line_copy(), ast_party_id_reset(), ast_request(), attach_framehook(), common_recall_channel_setup(), attended_transfer_properties::context, attended_transfer_properties::exten, LOG_ERROR, NULL, attended_transfer_properties::original_transferer_colp, ast_party_connected_line::priv, RAII_VAR, attended_transfer_properties::recall_target, attended_transfer_properties::transferee_bridge, and attended_transfer_properties::transferer.
|
static |
Definition at line 2664 of file bridge_basic.c.
References ast_channel_unref, ast_log, ast_softhangup(), AST_SOFTHANGUP_EXPLICIT, attended_transfer_properties::atxferloopdelay, LOG_WARNING, attended_transfer_properties::recall_target, attended_transfer_properties::state, attended_transfer_state_properties::state_name, 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, TRANSFER_RESUME, and TRANSFER_WAIT_TO_RECALL.
|
static |
Helper method to send a ringing indication to a channel in a bridge.
Definition at line 1814 of file bridge_basic.c.
References ao2_ref, ast_bridge_channel_write_control_data(), ast_channel_get_bridge_channel(), ast_channel_lock, ast_channel_unlock, AST_CONTROL_RINGING, and NULL.
Referenced by blond_enter(), extensionstate_update(), handle_request_subscribe(), queue_exec(), and update_call_counter().
|
static |
Definition at line 98 of file bridge_basic.c.
References AST_FEATURE_AUTOMIXMON, AST_FEATURE_AUTOMON, AST_FEATURE_DISCONNECT, AST_FEATURE_PARKCALL, AST_FEATURE_REDIRECT, and ast_set_flag.
Referenced by build_dtmf_features().
|
static |
Definition at line 400 of file bridge_basic.c.
References AST_BRIDGE_BUILTIN_ATTENDEDTRANSFER, AST_BRIDGE_BUILTIN_AUTOMIXMON, AST_BRIDGE_BUILTIN_AUTOMON, AST_BRIDGE_BUILTIN_BLINDTRANSFER, AST_BRIDGE_BUILTIN_HANGUP, AST_BRIDGE_BUILTIN_PARKCALL, ast_bridge_features_ds_get(), ast_channel_lock, ast_channel_unlock, AST_FEATURE_AUTOMIXMON, AST_FEATURE_AUTOMON, AST_FEATURE_DISCONNECT, AST_FEATURE_PARKCALL, AST_FEATURE_REDIRECT, builtin_features_helper(), and ast_flags::flags.
Referenced by bridge_basic_setup_features().
|
static |
Definition at line 605 of file bridge_basic.c.
References ao2_callback_data, ao2_ref, ast_channel_lock, ast_channel_unlock, ast_get_chan_applicationmap(), and setup_dynamic_feature().
Referenced by bridge_basic_setup_features().
|
static |
Definition at line 581 of file bridge_basic.c.
References ast_applicationmap_item::activate_on_self, ast_applicationmap_item::app, ast_applicationmap_item::app_data, AST_FEATURE_FLAG_ONPEER, AST_FEATURE_FLAG_ONSELF, ast_applicationmap_item::dtmf, dynamic_dtmf_hook_add(), item, ast_applicationmap_item::moh_class, and ast_applicationmap_item::name.
Referenced by setup_bridge_features_dynamic().
|
static |
Definition at line 1532 of file bridge_basic.c.
References ao2_lock, ao2_unlock, ast_calloc, ast_cond_signal, AST_LIST_INSERT_TAIL, ast_log, attended_transfer_properties::cond, LOG_ERROR, stimulus_list::next, stimulus_list::stimulus, and attended_transfer_properties::stimulus_queue.
Referenced by atxfer_abort(), atxfer_complete(), atxfer_swap(), atxfer_threeway(), atxfer_transferer_hangup(), recall_callback(), recall_pull(), transfer_pull(), and transfer_target_framehook_cb().
|
static |
Helper method to stream a fail sound on a channel.
chan | The channel to stream the fail sound to |
Definition at line 1755 of file bridge_basic.c.
References ast_channel_lock, ast_channel_unlock, AST_DIGIT_NONE, ast_free, ast_get_chan_features_xferfailsound(), and ast_stream_and_wait().
Referenced by feature_attended_transfer().
|
static |
Definition at line 2192 of file bridge_basic.c.
References ast_channel_cleanup, bridge_merge(), get_transfer_parties(), NULL, play_sound(), publish_transfer_threeway(), 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 2901 of file bridge_basic.c.
References ao2_ref, ast_channel_get_bridge_channel(), ast_channel_lock, ast_channel_unlock, AST_LIST_FIRST, BRIDGE_CHANNEL_STATE_WAIT, ast_bridge_channel::state, stimulate_attended_transfer(), STIMULUS_TRANSFER_TARGET_HANGUP, STIMULUS_TRANSFEREE_HANGUP, attended_transfer_properties::transferee_bridge, and attended_transfer_properties::transferer.
Referenced by bridge_personality_atxfer_pull().
|
static |
Frame hook for transfer target channel.
This is used to determine if the transfer target or recall target has answered the outgoing call.
When an answer is detected, a stimulus is sent to the attended transfer monitor thread to indicate that the transfer target or recall target has answered.
chan | The channel the framehook is attached to. |
frame | The frame being read or written. |
event | What is being done with the frame. |
data | The attended transfer properties. |
Definition at line 2820 of file bridge_basic.c.
References ast_check_hangup(), AST_CONTROL_ANSWER, ast_debug, AST_FRAME_CONTROL, ast_framehook_detach(), AST_FRAMEHOOK_EVENT_READ, ast_frame::frametype, ast_frame_subclass::integer, stimulate_attended_transfer(), STIMULUS_RECALL_TARGET_ANSWER, STIMULUS_TRANSFER_TARGET_ANSWER, ast_frame::subclass, attended_transfer_properties::superstate, SUPERSTATE_TRANSFER, and attended_transfer_properties::target_framehook_id.
Referenced by attach_framehook().
|
static |
Callback function which informs upstream if we are consuming a frame of a specific type.
Definition at line 2844 of file bridge_basic.c.
References AST_FRAME_CONTROL.
Referenced by attach_framehook().
|
static |
Definition at line 2849 of file bridge_basic.c.
References ao2_cleanup.
Referenced by attach_framehook().
|
static |
Helper method to take a channel in a bridge off hold.
Definition at line 1793 of file bridge_basic.c.
References ao2_ref, ast_bridge_channel_write_unhold(), ast_channel_get_bridge_channel(), ast_channel_lock, and ast_channel_unlock.
Referenced by consulting_exit(), double_checking_exit(), hesitant_enter(), and rebridge_enter().
|
static |
Definition at line 2995 of file bridge_basic.c.
References ao2_object_get_lockaddr(), ast_cond_timedwait, ast_cond_wait, ast_free, AST_LIST_REMOVE_HEAD, ast_tvadd(), ast_tvnow(), attended_transfer_properties::atxferloopdelay, attended_transfer_properties::atxfernoanswertimeout, attended_transfer_properties::cond, attended_transfer_state_properties::flags, lock, stimulus_list::next, SCOPED_MUTEX, attended_transfer_properties::start, attended_transfer_properties::state, stimulus_list::stimulus, attended_transfer_properties::stimulus_queue, STIMULUS_TIMEOUT, TRANSFER_STATE_FLAG_TIMED, TRANSFER_STATE_FLAG_TIMER_LOOP_DELAY, and TRANSFER_STATE_FLAG_TIMER_RESET.
Referenced by attended_transfer_monitor_thread().
|
static |
Definition at line 2695 of file bridge_basic.c.
References bridge_hold(), and attended_transfer_properties::transferee_bridge.
|
static |
Definition at line 2701 of file bridge_basic.c.
References ast_log, bridge_unhold(), LOG_WARNING, attended_transfer_properties::state, attended_transfer_state_properties::state_name, 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 attended_transfer_properties::transferee_bridge.
|
static |
Definition at line 2569 of file bridge_basic.c.
References bridge_hold(), and attended_transfer_properties::transferee_bridge.
|
static |
Definition at line 2575 of file bridge_basic.c.
References ast_log, attach_framehook(), bridge_unhold(), LOG_WARNING, attended_transfer_properties::state, attended_transfer_state_properties::state_name, 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_RETRANSFER, and attended_transfer_properties::transferee_bridge.
struct ast_bridge_methods ast_bridge_basic_v_table |
Bridge basic class virtual method table.
Definition at line 3526 of file bridge_basic.c.
Referenced by ast_bridge_basic_new(), and ast_bridging_init_basic().
|
static |
Definition at line 82 of file bridge_basic.c.
struct ast_bridge_methods personality_atxfer_v_table |
Definition at line 3528 of file bridge_basic.c.
Referenced by ast_bridging_init_basic(), and init_details().
struct ast_bridge_methods personality_normal_v_table |
Definition at line 3527 of file bridge_basic.c.
Referenced by ast_bridging_init_basic(), and init_details().
|
static |
Definition at line 2015 of file bridge_basic.c.
const char* stimulus_strs[] |
String representations of the various stimuli.
Used for debugging purposes
Definition at line 1268 of file bridge_basic.c.
Referenced by attended_transfer_monitor_thread(), blond_nonfinal_exit(), calling_target_exit(), consulting_exit(), double_checking_exit(), hesitant_exit(), recalling_exit(), retransfer_exit(), wait_to_recall_exit(), and wait_to_retransfer_exit().