From 77cad2f045e1471d003c6bfb01ec87e19b1d86cc Mon Sep 17 00:00:00 2001
From: Jehan Monnier <jehan.monnier@linphone.org>
Date: Thu, 22 Dec 2011 13:59:10 +0100
Subject: [PATCH] finilize tunnel api cleanup

---
 coreapi/Makefile.am                           | 11 +++++---
 coreapi/TunnelManager.cc                      |  7 +++++-
 coreapi/TunnelManager.hh                      |  3 +++
 ...e_tunnel_manager.cc => linphone_tunnel.cc} |  6 ++---
 ...one_tunnel_manager.h => linphone_tunnel.h} |  8 ++----
 coreapi/linphonecore.h                        | 25 +++++++++++--------
 coreapi/linphonecore_jni.cc                   |  2 +-
 coreapi/private.h                             |  2 +-
 gtk/propertybox.c                             |  6 ++---
 9 files changed, 41 insertions(+), 29 deletions(-)
 rename coreapi/{linphone_tunnel_manager.cc => linphone_tunnel.cc} (97%)
 rename coreapi/{linphone_tunnel_manager.h => linphone_tunnel.h} (92%)

diff --git a/coreapi/Makefile.am b/coreapi/Makefile.am
index 20ab34878f..659a9f78e5 100644
--- a/coreapi/Makefile.am
+++ b/coreapi/Makefile.am
@@ -6,7 +6,11 @@ EXTRA_DIST=linphonecore_jni.cc
 ## Process this file with automake to produce Makefile.in
 linphone_includedir=$(includedir)/linphone
 
-linphone_include_HEADERS=linphonecore.h linphonefriend.h linphonecore_utils.h ../config.h lpconfig.h sipsetup.h
+linphone_include_HEADERS=linphonecore.h linphonefriend.h linphonecore_utils.h ../config.h lpconfig.h sipsetup.h 
+
+if BUILD_TUNNEL
+linphone_include_HEADERS+=linphone_tunnel.h
+endif
 
 INCLUDES = \
 	-I$(top_srcdir)
@@ -36,11 +40,10 @@ liblinphone_la_SOURCES=\
 	siplogin.c \
 	lsd.c linphonecore_utils.h \
 	ec-calibrator.c \
-	conference.c \
-	linphone_tunnel_manager.h
+	conference.c 
 
 if BUILD_TUNNEL
-liblinphone_la_SOURCES+=TunnelManager.cc TunnelManager.hh linphone_tunnel_manager.cc
+liblinphone_la_SOURCES+=TunnelManager.cc TunnelManager.hh linphone_tunnel.cc
 endif
 
 
diff --git a/coreapi/TunnelManager.cc b/coreapi/TunnelManager.cc
index 9d4ab7c35c..2243119d47 100644
--- a/coreapi/TunnelManager.cc
+++ b/coreapi/TunnelManager.cc
@@ -190,6 +190,9 @@ void TunnelManager::start() {
 			const ServerAddr &addr=*it;
 			mTunnelClient->addServer(addr.mAddr.c_str(), addr.mPort);
 		}
+		if(!mHttpUserName.empty()) {
+			mTunnelClient->setHttpProxyAuthInfo(mHttpUserName.c_str(), mHttpPasswd.c_str());
+		}
 	}
 	mTunnelClient->start();
 
@@ -426,7 +429,9 @@ void TunnelManager::autoDetect() {
 }
 
 void TunnelManager::setHttpProxyAuthInfo(const char* username,const char* passwd) {
-	mTunnelClient->setHttpProxyAuthInfo(username,passwd);
+	mHttpUserName=username?username:"";
+	mHttpPasswd=passwd?passwd:"";
+	if (mTunnelClient) mTunnelClient->setHttpProxyAuthInfo(username,passwd);
 }
 
 LinphoneCore *TunnelManager::getLinphoneCore(){
diff --git a/coreapi/TunnelManager.hh b/coreapi/TunnelManager.hh
index b6bc46723a..89044cce72 100644
--- a/coreapi/TunnelManager.hh
+++ b/coreapi/TunnelManager.hh
@@ -11,6 +11,7 @@
 #ifndef __TUNNEL_CLIENT_MANAGER_H__
 #define __TUNNEL_CLIENT_MANAGER_H__
 #include <list>
+#include <string>
 #include "linphonecore.h"
 #include "tunnel/client.hh"
 extern "C" {
@@ -156,6 +157,8 @@ class UdpMirrorClient;
 		static Mutex sMutex;
 		bool mAutoDetectStarted;
 		LinphoneRtpTransportFactories mTransportFactories;
+		std::string mHttpUserName;
+		std::string mHttpPasswd;		
 	};
 
 /**
diff --git a/coreapi/linphone_tunnel_manager.cc b/coreapi/linphone_tunnel.cc
similarity index 97%
rename from coreapi/linphone_tunnel_manager.cc
rename to coreapi/linphone_tunnel.cc
index 6578b74950..5afccff3d4 100644
--- a/coreapi/linphone_tunnel_manager.cc
+++ b/coreapi/linphone_tunnel.cc
@@ -1,5 +1,5 @@
 /***************************************************************************
- *            linphone_tunnel_manager.cc
+ *            linphone_tunnel.cc
  *
  *  Fri Dec 9, 2011
  *  Copyright  2011  Belledonne Communications
@@ -24,7 +24,7 @@
  */
 
 
-#include "linphone_tunnel_manager.h"
+#include "linphone_tunnel.h"
 #include "TunnelManager.hh"
 #include "linphonecore.h"
 #include "private.h"
@@ -39,7 +39,7 @@ extern "C" LinphoneTunnel* linphone_core_tunnel_new(LinphoneCore *lc){
 	return tunnel;
 }
 
-LinphoneTunnel* linphone_tunnel_get(LinphoneCore *lc){
+LinphoneTunnel* linphone_core_get_tunnel(LinphoneCore *lc){
 	return lc->tunnel;
 }
 
diff --git a/coreapi/linphone_tunnel_manager.h b/coreapi/linphone_tunnel.h
similarity index 92%
rename from coreapi/linphone_tunnel_manager.h
rename to coreapi/linphone_tunnel.h
index 45e0db1678..6a2d5218e0 100644
--- a/coreapi/linphone_tunnel_manager.h
+++ b/coreapi/linphone_tunnel.h
@@ -1,5 +1,5 @@
 /***************************************************************************
- *            linphone_tunnel_manager.h
+ *            linphone_tunnel.h
  *
  *  Fri Dec 9, 2011
  *  Copyright  2011  Belledonne Communications
@@ -33,12 +33,8 @@ extern "C"
 {
 #endif
 
-typedef struct LinphoneTunnel LinphoneTunnel;
 typedef void (*LogHandler)(int log_level, const char *str, va_list l);
 
-
-LinphoneTunnel *linphone_tunnel_get(LinphoneCore *lc);
-
 void linphone_tunnel_add_server(LinphoneTunnel *tunnel, const char *host, int port);
 void linphone_tunnel_add_server_and_mirror(LinphoneTunnel *tunnel, const char *host, int port, int remote_udp_mirror, int delay);
 void linphone_tunnel_clean_servers(LinphoneTunnel *tunnel);
@@ -48,7 +44,7 @@ void linphone_tunnel_enable_logs(LinphoneTunnel *tunnel, bool_t enabled);
 void linphone_tunnel_enable_logs_with_handler(LinphoneTunnel *tunnel, bool_t enabled, LogHandler logHandler);
 void linphone_tunnel_reconnect(LinphoneTunnel *tunnel);
 void linphone_tunnel_auto_detect(LinphoneTunnel *tunnel);
-void linphone_tunnel_set_http_proxy_auth_info(const char* username,const char* passwd);
+void linphone_tunnel_set_http_proxy_auth_info(LinphoneTunnel*tunnel, const char* username,const char* passwd);
 
 
 /**
diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h
index e32c4d0fa6..b9cd9cae50 100644
--- a/coreapi/linphonecore.h
+++ b/coreapi/linphonecore.h
@@ -344,16 +344,6 @@ typedef enum _LinphoneRegistrationState{
  */
 const char *linphone_registration_state_to_string(LinphoneRegistrationState cs);
 
-/**
- * True if tunnel support was compiled.
- */
-bool_t linphone_core_tunnel_available();
-
-/**
- * Update tunnel using configuration.
- */
-void linphone_core_update_tunnel(LinphoneCore *lc);
-
 LinphoneProxyConfig *linphone_proxy_config_new(void);
 int linphone_proxy_config_set_server_addr(LinphoneProxyConfig *obj, const char *server_addr);
 int linphone_proxy_config_set_identity(LinphoneProxyConfig *obj, const char *identity);
@@ -1084,6 +1074,21 @@ void linphone_core_set_media_encryption_mandatory(LinphoneCore *lc, bool_t m);
  */
 void linphone_core_init_default_params(LinphoneCore*lc, LinphoneCallParams *params);
 
+/**
+ * True if tunnel support was compiled.
+ */
+bool_t linphone_core_tunnel_available();
+
+/**
+ * Update tunnel using configuration.
+ */
+void linphone_core_update_tunnel(LinphoneCore *lc);
+typedef struct LinphoneTunnel LinphoneTunnel;
+/**
+* get tunnel instance if available
+*/
+LinphoneTunnel *linphone_core_get_tunnel(LinphoneCore *lc);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc
index 0396fcd485..26dc0e035c 100644
--- a/coreapi/linphonecore_jni.cc
+++ b/coreapi/linphonecore_jni.cc
@@ -21,7 +21,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #include <ortp/zrtp.h>
 
 #ifdef TUNNEL_ENABLED
-#include "linphone_tunnel_manager.h"
+#include "linphone_tunnel.h"
 #endif
 
 extern "C" {
diff --git a/coreapi/private.h b/coreapi/private.h
index 987dd7951d..a21fc8b20a 100644
--- a/coreapi/private.h
+++ b/coreapi/private.h
@@ -28,7 +28,7 @@
 extern "C" {
 #endif
 #include "linphonecore.h"
-#include "linphone_tunnel_manager.h"
+#include "linphone_tunnel.h"
 #include "linphonecore_utils.h"
 #include "sal.h"
 
diff --git a/gtk/propertybox.c b/gtk/propertybox.c
index 0e69550cd2..30890c7651 100644
--- a/gtk/propertybox.c
+++ b/gtk/propertybox.c
@@ -18,7 +18,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 */
 
 #include "linphone.h"
-#include "linphone_tunnel_manager.h"
+#include "linphone_tunnel.h"
 
 typedef enum {
 	CAP_IGNORE,
@@ -1023,7 +1023,7 @@ void linphone_gtk_edit_tunnel(GtkButton *button){
 #ifdef TUNNEL_ENABLED
 	LinphoneCore *lc=linphone_gtk_get_core();
 	GtkWidget *w=linphone_gtk_create_window("tunnel_config");
-	LinphoneTunnel *tunnel=linphone_tunnel_get(lc);
+	LinphoneTunnel *tunnel=linphone_core_get_tunnel(lc);
 	char host[50]={'\0'};
 	int port=0;
 	tunnel_get_server_host_and_port(tunnel, host, sizeof(host), &port);
@@ -1050,7 +1050,7 @@ void linphone_gtk_tunnel_ok(GtkButton *button){
 	LinphoneCore *lc=linphone_gtk_get_core();
 	GtkWidget *w=gtk_widget_get_toplevel(GTK_WIDGET(button));
 	char address[50]={'\0'};
-	LinphoneTunnel *tunnel=linphone_tunnel_get(lc);
+	LinphoneTunnel *tunnel=linphone_core_get_tunnel(lc);
 
 	gint port = (gint)gtk_spin_button_get_value(GTK_SPIN_BUTTON(linphone_gtk_get_widget(w,"port")));
 	gboolean enabled=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(linphone_gtk_get_widget(w,"radio_enable")));
-- 
GitLab