[Freeswitch-svn] [commit] r9282 - in freeswitch/trunk/src: . mod/applications/mod_dptools

Freeswitch SVN anthm at freeswitch.org
Tue Aug 12 14:00:56 EDT 2008


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;
 



More information about the Freeswitch-svn mailing list