From 0fc8df84c2613b428187303cd667c0601ad937cd Mon Sep 17 00:00:00 2001
From: Richard Alam <ritzalam@gmail.com>
Date: Fri, 19 Jan 2018 08:45:27 -0800
Subject: [PATCH]  - determine voice connection type

---
 .../phone/managers/ConnectionManager.as       | 36 +++++++++++++++----
 1 file changed, 30 insertions(+), 6 deletions(-)

diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/phone/managers/ConnectionManager.as b/bigbluebutton-client/src/org/bigbluebutton/modules/phone/managers/ConnectionManager.as
index 41342513b1..b66cd5b066 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/modules/phone/managers/ConnectionManager.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/modules/phone/managers/ConnectionManager.as
@@ -36,6 +36,7 @@ package org.bigbluebutton.modules.phone.managers {
 	import org.bigbluebutton.modules.phone.events.FlashCallConnectedEvent;
 	import org.bigbluebutton.modules.phone.events.FlashCallDisconnectedEvent;
 	import org.bigbluebutton.modules.phone.events.FlashVoiceConnectionStatusEvent;
+	import org.bigbluebutton.util.ConnUtil;
 	
 	public class ConnectionManager {
 		private static const LOGGER:ILogger = getClassLogger(ConnectionManager);
@@ -86,13 +87,36 @@ package org.bigbluebutton.modules.phone.managers {
 		public function connect():void {				
 			if (!reconnecting || amIListenOnly) {
 				closedByUser = false;
-				var isTunnelling:Boolean = BBB.initConnectionManager().isTunnelling;
-				if (isTunnelling) {
-					uri = uri.replace(/rtmp:/gi, "rtmpt:");
-				}
-				LOGGER.debug("Connecting to uri=[{0}]", [uri]);
+				
+				var pattern:RegExp = /(?P<protocol>.+):\/\/(?P<server>.+)\/(?P<app>.+)/;
+				var result:Array = pattern.exec(uri);
+				var useRTMPS: Boolean = result.protocol == ConnUtil.RTMPS
+					
 				netConnection = new NetConnection();
-				netConnection.proxyType = "best";
+				
+				if (BBB.initConnectionManager().isTunnelling) {
+					var tunnelProtocol: String = ConnUtil.RTMPT;
+					
+					if (useRTMPS) {
+						netConnection.proxyType = ConnUtil.PROXY_NONE;
+						tunnelProtocol = ConnUtil.RTMPS;
+					}
+						
+					uri = tunnelProtocol + "://" + result.server + "/" + result.app;
+					trace("******* BBB SIP CONNECT tunnel = TRUE " + "url=" +  uri);
+				} else {
+					var nativeProtocol: String = ConnUtil.RTMP;
+					if (useRTMPS) {
+						netConnection.proxyType = ConnUtil.PROXY_BEST;
+						nativeProtocol = ConnUtil.RTMPS;
+					}
+					
+					uri = nativeProtocol + "://" + result.server + "/" + result.app;
+					trace("******* BBB SIP CONNECT tunnel = FALSE " + "url=" +  uri);
+				}
+				
+				LOGGER.debug("******** VOICE CONF == Connecting to uri=[{0}]", [uri]);
+				
 				netConnection.objectEncoding = ObjectEncoding.AMF3;
 				netConnection.client = this;
 				netConnection.addEventListener( NetStatusEvent.NET_STATUS , netStatus );
-- 
GitLab