diff --git a/configure.ac b/configure.ac
index 6e5e0da4275df4e965953056bbc552066617c5d0..94e23c59d30ae1c45561707c80df6feb47dd6e65 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,6 +1,6 @@
 dnl Process this file with autoconf to produce a configure script.
 
-AC_INIT([linphone],[3.4.99.5],[linphone-developers@nongnu.org])
+AC_INIT([linphone],[3.5],[linphone-developers@nongnu.org])
 AC_CANONICAL_SYSTEM
 AC_CONFIG_SRCDIR([coreapi/linphonecore.c])
 
diff --git a/coreapi/Makefile.am b/coreapi/Makefile.am
index 301c059767ed404b407328cdefcead48a6dca6fb..20ab34878fd118dbd7deda536a340932d5de0cf9 100644
--- a/coreapi/Makefile.am
+++ b/coreapi/Makefile.am
@@ -9,9 +9,7 @@ linphone_includedir=$(includedir)/linphone
 linphone_include_HEADERS=linphonecore.h linphonefriend.h linphonecore_utils.h ../config.h lpconfig.h sipsetup.h
 
 INCLUDES = \
-	-I$(top_srcdir)\
-	$(MEDIASTREAMER_CFLAGS)\
-	$(TUNNEL_CFLAGS)
+	-I$(top_srcdir)
 
 
 lib_LTLIBRARIES=liblinphone.la
@@ -42,7 +40,7 @@ liblinphone_la_SOURCES=\
 	linphone_tunnel_manager.h
 
 if BUILD_TUNNEL
-liblinphone_la_SOURCES+=TunnelManager.cc TunnelManager.hh linphone_tunnel_manager.c
+liblinphone_la_SOURCES+=TunnelManager.cc TunnelManager.hh linphone_tunnel_manager.cc
 endif
 
 
@@ -83,3 +81,4 @@ AM_CFLAGS=$(STRICT_OPTIONS)  -DIN_LINPHONE \
 	$(VIDEO_CFLAGS) \
 	$(TUNNEL_CFLAGS)
 
+AM_CXXFLAGS=$(AM_CFLAGS)
diff --git a/coreapi/TunnelManager.cc b/coreapi/TunnelManager.cc
index f1fa17bf7fbd2e2d10e923791294f581b3106556..9d4ab7c35c4e28c587e29d889ea4dc1b8bcee938 100644
--- a/coreapi/TunnelManager.cc
+++ b/coreapi/TunnelManager.cc
@@ -68,8 +68,7 @@ int TunnelManager::eXosipSelect(int max_fds, fd_set *s1, fd_set *s2, fd_set *s3,
 	TunnelManager* lTunnelMgr=(TunnelManager*)userdata;
 	if (tv!=0 && tv->tv_sec){
 		/*this is the select from udp.c, the one that is interesting to us*/
-		unsigned int i;
-		fd_set tmp;
+		int i;
 		int udp_fd=eXosip_get_udp_socket();
 		int controlfd=-1;
 
@@ -156,13 +155,13 @@ void TunnelManager::setCallback(StateCallback cb, void *userdata) {
 	mCallbackData=userdata;
 }
 
-static void sCloseRtpTransport(void *userData, RtpTransport *t){
-	((TunnelManager::TunnelManager *) userData)->closeRtpTransport(t);
+static void sCloseRtpTransport(RtpTransport *t, void *userData){
+	TunnelSocket *s=(TunnelSocket*)userData;
+	TunnelManager::TunnelManager *manager=(TunnelManager::TunnelManager*)s->getUserPointer();
+	manager->closeRtpTransport(t, s);
 }
-void TunnelManager::closeRtpTransport(RtpTransport *t){
-	TunnelSocket *socket=(TunnelSocket *) t->data;
-	mTransports.remove(t);
-	mTunnelClient->closeSocket(socket);
+void TunnelManager::closeRtpTransport(RtpTransport *t, TunnelSocket *s){
+	mTunnelClient->closeSocket(s);
 	ms_free(t);
 }
 
@@ -171,14 +170,14 @@ static RtpTransport *sCreateRtpTransport(void* userData, int port){
 }
 
 RtpTransport *TunnelManager::createRtpTransport(int port){
+	TunnelSocket *socket=mTunnelClient->createSocket(port);
+	socket->setUserPointer(this);
 	RtpTransport *t=ms_new0(RtpTransport,1);
-	t->data=mTunnelClient->createSocket(port);
 	t->t_getsocket=NULL;
 	t->t_recvfrom=customRecvfrom;
 	t->t_sendto=customSendto;
-	t->close_fn=sCloseRtpTransport;
-	t->close_data=this;
-	mTransports.push_back(t);
+	t->t_close=sCloseRtpTransport;
+	t->data=socket;
 	return t;
 }
 
@@ -222,9 +221,9 @@ int TunnelManager::customRecvfrom(struct _RtpTransport *t, mblk_t *msg, int flag
 
 TunnelManager::TunnelManager(LinphoneCore* lc) :TunnelClientController()
 ,mCore(lc)
-,mEnabled(false)
 ,mSipSocket(NULL)
 ,mCallback(NULL)
+,mEnabled(false)
 ,mTunnelClient(NULL)
 ,mAutoDetectStarted(false) {
 
diff --git a/coreapi/TunnelManager.hh b/coreapi/TunnelManager.hh
index 20bb75d3d653787e4856bf0d938b0a7698eb2460..b6bc46723a884b35e22f9b8ef727df4234211cd0 100644
--- a/coreapi/TunnelManager.hh
+++ b/coreapi/TunnelManager.hh
@@ -115,7 +115,7 @@ class UdpMirrorClient;
 		/**
 		 * Destroy the given RtpTransport.
 		 */
-		void closeRtpTransport(RtpTransport *t);
+		void closeRtpTransport(RtpTransport *t, TunnelSocket *s);
 
 		/**
 		 * Create an RtpTransport.
@@ -128,7 +128,6 @@ class UdpMirrorClient;
 		LinphoneCore *getLinphoneCore();
 	private:
 		typedef std::list<UdpMirrorClient> UdpMirrorClientList;
-		typedef std::list<RtpTransport*> RtpTransportList;
 		virtual bool isStarted();
 		virtual bool isReady() const;
 		static int customSendto(struct _RtpTransport *t, mblk_t *msg , int flags, const struct sockaddr *to, socklen_t tolen);
@@ -156,7 +155,6 @@ class UdpMirrorClient;
 		void stopClient();
 		static Mutex sMutex;
 		bool mAutoDetectStarted;
-		RtpTransportList mTransports;
 		LinphoneRtpTransportFactories mTransportFactories;
 	};
 
diff --git a/gtk/calllogs.c b/gtk/calllogs.c
index 734496da354b18bd7b29bdb8e9406c6f9b5c2cb3..5ff2a08eb59d9555b391b0ae32aa22fc97079582 100644
--- a/gtk/calllogs.c
+++ b/gtk/calllogs.c
@@ -44,8 +44,8 @@ void linphone_gtk_call_log_update(GtkWidget *w){
 		gtk_tree_view_set_model(v,GTK_TREE_MODEL(store));
 		g_object_unref(G_OBJECT(store));
 		fill_renderers(GTK_TREE_VIEW(linphone_gtk_get_widget(w,"logs_view")));
-		gtk_button_set_image(GTK_BUTTON(linphone_gtk_get_widget(w,"call_back_button")),
-		                     create_pixmap (linphone_gtk_get_ui_config("callback_button","status-green.png")));
+//		gtk_button_set_image(GTK_BUTTON(linphone_gtk_get_widget(w,"call_back_button")),
+//		                     create_pixmap (linphone_gtk_get_ui_config("callback_button","status-green.png")));
 	}
 	gtk_list_store_clear (store);
 
@@ -119,6 +119,10 @@ void linphone_gtk_history_row_activated(GtkWidget *treeview){
 	}
 }
 
+void linphone_gtk_history_row_selected(GtkWidget *treeview){
+	put_selection_to_uribar(treeview);
+}
+
 void linphone_gtk_clear_call_logs(GtkWidget *button){
 	linphone_core_clear_call_logs (linphone_gtk_get_core());
 	linphone_gtk_call_log_update(gtk_widget_get_toplevel(button));
@@ -152,8 +156,8 @@ GtkWidget * linphone_gtk_show_call_logs(void){
 	GtkWidget *w=(GtkWidget*)g_object_get_data(G_OBJECT(linphone_gtk_get_main_window()),"call_logs");
 	if (w==NULL){
 		w=linphone_gtk_create_window("call_logs");
-		gtk_button_set_image(GTK_BUTTON(linphone_gtk_get_widget(w,"call_back_button")),
-		                     create_pixmap (linphone_gtk_get_ui_config("callback_button","status-green.png")));
+//		gtk_button_set_image(GTK_BUTTON(linphone_gtk_get_widget(w,"call_back_button")),
+//		                     create_pixmap (linphone_gtk_get_ui_config("callback_button","status-green.png")));
 		g_object_set_data(G_OBJECT(mw),"call_logs",w);
 		g_signal_connect(G_OBJECT(w),"response",(GCallback)linphone_gtk_call_log_response,NULL);
 		gtk_widget_show(w);
diff --git a/gtk/main.c b/gtk/main.c
index 4c918b18d3c914ece2ca94f0ce72e7528b933739..73e99cc964cf9fbc72239a0d559fdefb23ffa5a9 100644
--- a/gtk/main.c
+++ b/gtk/main.c
@@ -681,7 +681,11 @@ static void linphone_gtk_update_call_buttons(LinphoneCall *call){
 	gtk_widget_set_visible(button,!add_call);
 	
 	button=linphone_gtk_get_widget(mw,"add_call");
-	gtk_widget_set_sensitive(button,start_active);
+	if (linphone_core_sound_resources_locked(lc) || (call && linphone_call_get_state(call)==LinphoneCallIncomingReceived)) {
+		gtk_widget_set_sensitive(button,FALSE);
+	} else {
+		gtk_widget_set_sensitive(button,start_active);
+	}
 	gtk_widget_set_visible(button,add_call);
 	
 	gtk_widget_set_sensitive(linphone_gtk_get_widget(mw,"terminate_call"),stop_active);
diff --git a/gtk/main.ui b/gtk/main.ui
index a94f5e55f06cae5cb2913d38d1e827561c996833..2cfe555e7db37a4e042d66bdb74033336859395c 100644
--- a/gtk/main.ui
+++ b/gtk/main.ui
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <interface>
   <requires lib="gtk+" version="2.22"/>
+  <!-- interface-naming-policy toplevel-contextual -->
   <object class="GtkWindow" id="dummy_conf_window">
     <property name="can_focus">False</property>
     <child>
@@ -651,6 +652,8 @@
                                     <property name="invisible_char">●</property>
                                     <property name="primary_icon_activatable">False</property>
                                     <property name="secondary_icon_activatable">False</property>
+                                    <property name="primary_icon_sensitive">True</property>
+                                    <property name="secondary_icon_sensitive">True</property>
                                     <signal name="activate" handler="linphone_gtk_uri_bar_activate" swapped="no"/>
                                   </object>
                                   <packing>
@@ -742,6 +745,8 @@
                                     <property name="invisible_char_set">True</property>
                                     <property name="primary_icon_activatable">False</property>
                                     <property name="secondary_icon_activatable">False</property>
+                                    <property name="primary_icon_sensitive">True</property>
+                                    <property name="secondary_icon_sensitive">True</property>
                                     <signal name="changed" handler="linphone_gtk_show_friends" swapped="no"/>
                                   </object>
                                   <packing>
@@ -807,9 +812,6 @@
                                     <signal name="cursor-changed" handler="linphone_gtk_contact_clicked" swapped="no"/>
                                     <signal name="row-activated" handler="linphone_gtk_contact_activated" swapped="no"/>
                                     <signal name="popup-menu" handler="linphone_gtk_popup_contact_menu" swapped="no"/>
-                                    <child internal-child="selection">
-                                      <object class="GtkTreeSelection" id="treeview-selection1"/>
-                                    </child>
                                   </object>
                                 </child>
                               </object>
@@ -835,6 +837,8 @@
                                         <property name="invisible_char_set">True</property>
                                         <property name="primary_icon_activatable">False</property>
                                         <property name="secondary_icon_activatable">False</property>
+                                        <property name="primary_icon_sensitive">True</property>
+                                        <property name="secondary_icon_sensitive">True</property>
                                         <signal name="activate" handler="linphone_gtk_directory_search_activate" swapped="no"/>
                                         <signal name="icon-press" handler="linphone_gtk_directory_search_activate" swapped="no"/>
                                         <signal name="focus-in-event" handler="linphone_gtk_directory_search_focus_in" swapped="no"/>
@@ -1008,19 +1012,7 @@
                                   </packing>
                                 </child>
                                 <child>
-                                  <object class="GtkButton" id="call_back_button">
-                                    <property name="label" translatable="yes">Call</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="receives_default">True</property>
-                                    <property name="use_action_appearance">False</property>
-                                    <signal name="clicked" handler="linphone_gtk_call_log_callback" swapped="no"/>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">1</property>
-                                  </packing>
+                                  <placeholder/>
                                 </child>
                                 <child>
                                   <placeholder/>
@@ -1043,10 +1035,8 @@
                                     <property name="visible">True</property>
                                     <property name="can_focus">True</property>
                                     <property name="headers_visible">False</property>
+                                    <signal name="cursor-changed" handler="linphone_gtk_history_row_selected" swapped="no"/>
                                     <signal name="row-activated" handler="linphone_gtk_history_row_activated" swapped="no"/>
-                                    <child internal-child="selection">
-                                      <object class="GtkTreeSelection" id="treeview-selection2"/>
-                                    </child>
                                   </object>
                                 </child>
                               </object>
@@ -1550,6 +1540,8 @@
                                         <property name="invisible_char">●</property>
                                         <property name="primary_icon_activatable">False</property>
                                         <property name="secondary_icon_activatable">False</property>
+                                        <property name="primary_icon_sensitive">True</property>
+                                        <property name="secondary_icon_sensitive">True</property>
                                       </object>
                                       <packing>
                                         <property name="left_attach">1</property>
@@ -1564,6 +1556,8 @@
                                         <property name="invisible_char">●</property>
                                         <property name="primary_icon_activatable">False</property>
                                         <property name="secondary_icon_activatable">False</property>
+                                        <property name="primary_icon_sensitive">True</property>
+                                        <property name="secondary_icon_sensitive">True</property>
                                       </object>
                                       <packing>
                                         <property name="left_attach">1</property>
diff --git a/oRTP b/oRTP
index f1fe7c8502c72cebfcbbee95d27586ba979824c6..cb6bd1b8684d94d473bed38dd02029bd3a48df6e 160000
--- a/oRTP
+++ b/oRTP
@@ -1 +1 @@
-Subproject commit f1fe7c8502c72cebfcbbee95d27586ba979824c6
+Subproject commit cb6bd1b8684d94d473bed38dd02029bd3a48df6e