[commit] r9282 - in freeswitch/trunk/src: . mod/applications/mod_dptools
Author: anthm Date: Tue Aug 12 14:00:56 2008 New Revision: 9282 Modified: freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c freeswitch/trunk/src/switch_ivr_originate.c Log: make error endpoint able to forked dial Modified: freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c ============================================================================== --- freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c (original) +++ freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c Tue Aug 12 14:00:56 2008 @@ -1882,6 +1882,31 @@ } } + +/* fake chan_error */ +switch_endpoint_interface_t *error_endpoint_interface; +static switch_call_cause_t error_outgoing_channel(switch_core_session_t *session, + switch_event_t *var_event, + switch_caller_profile_t *outbound_profile, + switch_core_session_t **new_session, switch_memory_pool_t **pool, switch_originate_flag_t flags); +switch_io_routines_t error_io_routines = { + /*.outgoing_channel */ error_outgoing_channel +}; + +static switch_call_cause_t error_outgoing_channel(switch_core_session_t *session, + switch_event_t *var_event, + switch_caller_profile_t *outbound_profile, + switch_core_session_t **new_session, switch_memory_pool_t **pool, switch_originate_flag_t flags) +{ + switch_call_cause_t cause = switch_channel_str2cause(outbound_profile->destination_number); + if (cause == SWITCH_CAUSE_NONE) { + cause = SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER; + } + + return cause; +} + + /* fake chan_user */ switch_endpoint_interface_t *user_endpoint_interface; static switch_call_cause_t user_outgoing_channel(switch_core_session_t *session, @@ -2189,6 +2214,10 @@ /* connect my internal structure to the blank pointer passed to me */ *module_interface = switch_loadable_module_create_module_interface(pool, modname); + error_endpoint_interface = switch_loadable_module_create_interface(*module_interface, SWITCH_ENDPOINT_INTERFACE); + error_endpoint_interface->interface_name = "ERROR"; + error_endpoint_interface->io_routines = &error_io_routines; + user_endpoint_interface = switch_loadable_module_create_interface(*module_interface, SWITCH_ENDPOINT_INTERFACE); user_endpoint_interface->interface_name = "USER"; user_endpoint_interface->io_routines = &user_io_routines; Modified: freeswitch/trunk/src/switch_ivr_originate.c ============================================================================== --- freeswitch/trunk/src/switch_ivr_originate.c (original) +++ freeswitch/trunk/src/switch_ivr_originate.c Tue Aug 12 14:00:56 2008 @@ -542,11 +542,6 @@ *bleg = NULL; - if (!strncasecmp(bridgeto, "error/", 6)) { - *cause = switch_channel_str2cause(bridgeto + 6); - return SWITCH_STATUS_SUCCESS; - } - switch_zmalloc(write_frame.data, SWITCH_RECOMMENDED_BUFFER_SIZE); write_frame.buflen = SWITCH_RECOMMENDED_BUFFER_SIZE;
participants (1)
-
Freeswitch SVN