From 097d4a66f0a1cfbcb1588c90c3cc4014ac1a1363 Mon Sep 17 00:00:00 2001
From: Anthony Minessale <anthony.minessale@gmail.com>
Date: Tue, 21 Nov 2006 00:29:51 +0000
Subject: [PATCH] send 180 when there is no ringback specified on forked calls

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@3428 d0543943-73ff-0310-b7d9-9358b9ac24b2
---
 src/switch_ivr.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/src/switch_ivr.c b/src/switch_ivr.c
index 58eb40ec63..0987219ef9 100644
--- a/src/switch_ivr.c
+++ b/src/switch_ivr.c
@@ -2260,6 +2260,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess
 	uint8_t to = 0;
 	char *ringback_data = NULL;
 	switch_codec_t *read_codec = NULL;
+	uint8_t sent_ring = 0;
 
 	write_frame.data = fdata;
 	
@@ -2310,6 +2311,11 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess
 
 	or_argc = switch_separate_string(data, '|', pipe_names, (sizeof(pipe_names) / sizeof(pipe_names[0])));
 
+	if (caller_channel && or_argc > 1 && !ringback_data) {
+		switch_channel_ringback(caller_channel);
+		sent_ring = 1;
+	}
+
 	for (r = 0; r < or_argc; r++) {
 		memset(peer_names, 0, sizeof(peer_names));
 		peer_session = NULL;
@@ -2330,6 +2336,11 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess
 
 		and_argc = switch_separate_string(pipe_names[r], '&', peer_names, (sizeof(peer_names) / sizeof(peer_names[0])));
 	
+		if (caller_channel && !sent_ring && and_argc > 1 && !ringback_data) {
+			switch_channel_ringback(caller_channel);
+			sent_ring = 1;
+		}
+
 		for (i = 0; i < and_argc; i++) {
 		
 			chan_type = peer_names[i];