From c06ad401404585d44e5aacfa33a21c7250b4c4ae Mon Sep 17 00:00:00 2001
From: pierre-luc <pierre-luc.bacon@savoirfairelinux.com>
Date: Wed, 26 Aug 2009 12:25:44 -0400
Subject: [PATCH] [#812] Added new tab under GTK-ui Preferences. Moving Direct
 Ip Calls from accountwindow to configwindow.

---
 .../src/config/configwindow.c                 | 233 +++++++++++++-----
 .../src/config/ip2ipdialog.c                  |   2 +-
 sflphone-client-gnome/src/dbus/dbus.c         |   3 +-
 sflphone-client-gnome/src/dbus/dbus.h         |   2 +-
 sflphone-client-gnome/src/sflphone_const.h    |   1 +
 .../src/dbus/configurationmanager.cpp         |  41 +--
 sflphone-common/src/managerimpl.cpp           |   2 +-
 7 files changed, 193 insertions(+), 91 deletions(-)

diff --git a/sflphone-client-gnome/src/config/configwindow.c b/sflphone-client-gnome/src/config/configwindow.c
index d954bd3353..2ad87ef081 100644
--- a/sflphone-client-gnome/src/config/configwindow.c
+++ b/sflphone-client-gnome/src/config/configwindow.c
@@ -68,8 +68,10 @@ GtkWidget * status;
 static int history_limit;
 static gboolean history_enabled = TRUE;
 
-account_t *selectedAccount;
+account_t * selectedAccount = NULL;
 
+GHashTable * directIpCallsProperties = NULL;
+    
 // Account properties
 enum {
     COLUMN_ACCOUNT_ALIAS,
@@ -97,16 +99,6 @@ config_window_fill_account_list()
 
         gtk_list_store_clear(accountStore);
         
-        gtk_list_store_append (accountStore, &iter);
-
-        gtk_list_store_set(accountStore, &iter,
-                COLUMN_ACCOUNT_ALIAS, (gchar *) _("Direct calls account"),
-                COLUMN_ACCOUNT_TYPE, (gchar *) _("SIP"),   // Protocol
-                COLUMN_ACCOUNT_STATUS, (gchar *) _("Active"),      // Status
-                COLUMN_ACCOUNT_ACTIVE, TRUE,  // Enable/Disable
-                COLUMN_ACCOUNT_DATA, NULL,   // Pointer
-                -1);
-                        
         unsigned int i;
         for(i = 0; i < account_list_get_size(); i++) {
             account_t * a = account_list_get_nth (i);
@@ -137,7 +129,7 @@ config_window_fill_account_list()
     static void
 delete_account(GtkWidget *widget UNUSED, gpointer data UNUSED)
 {
-    if(selectedAccount)
+    if(selectedAccount != NULL)
     {
         dbus_remove_account(selectedAccount->accountID);
         if(account_list_get_sip_account_number() == 1 &&
@@ -152,16 +144,10 @@ delete_account(GtkWidget *widget UNUSED, gpointer data UNUSED)
     static void
 edit_account(GtkWidget *widget UNUSED, gpointer data UNUSED)
 {
-    if(selectedAccount)
+    if(selectedAccount != NULL)
     {
         show_account_window(selectedAccount);
-    } else {
-        GHashTable * properties = NULL;
-        properties = sflphone_get_ip2ip_properties();
-        if (properties != NULL) {
-            show_ip2ip_dialog(properties);
-        }
-    }
+    } 
 }
 
 /**
@@ -243,17 +229,6 @@ select_account(GtkTreeSelection *selection, GtkTreeModel *model)
     GtkTreeIter iter;
     GValue val;
 
-    GtkTreePath *path;
-    if(gtk_tree_selection_get_selected (selection, NULL, &iter)) {
-        path = gtk_tree_model_get_path (model, &iter);
-        if(gtk_tree_path_get_indices (path)[0] == 0) {
-            gtk_widget_set_sensitive(GTK_WIDGET(editButton), TRUE);
-            gtk_widget_set_sensitive(GTK_WIDGET(deleteButton), FALSE);
-            gtk_widget_set_sensitive(GTK_WIDGET(accountMoveUpButton), FALSE);
-            gtk_widget_set_sensitive(GTK_WIDGET(accountMoveDownButton), FALSE);
-        }
-    }
-    
     memset (&val, 0, sizeof(val));
     if (!gtk_tree_selection_get_selected(selection, &model, &iter))
     {
@@ -269,13 +244,12 @@ select_account(GtkTreeSelection *selection, GtkTreeModel *model)
     selectedAccount = (account_t*)g_value_get_pointer(&val);
     g_value_unset(&val);
 
-    if(selectedAccount)
+    if(selectedAccount != NULL)
     {
-        gtk_widget_set_sensitive(GTK_WIDGET(editButton), TRUE);
-        gtk_widget_set_sensitive(GTK_WIDGET(deleteButton), TRUE);
         gtk_widget_set_sensitive(GTK_WIDGET(accountMoveUpButton), TRUE);
         gtk_widget_set_sensitive(GTK_WIDGET(accountMoveDownButton), TRUE);
     }
+    
     DEBUG("Selecting account in account window");
 }
 
@@ -283,44 +257,39 @@ select_account(GtkTreeSelection *selection, GtkTreeModel *model)
 enable_account(GtkCellRendererToggle *rend UNUSED, gchar* path,  gpointer data )
 {
     GtkTreeIter iter;
-    GtkTreePath *treePath;
+    GtkTreePath *treePath;    
     GtkTreeModel *model;
     gboolean enable;
     account_t* acc ;
 
-    // Get path of clicked codec active toggle box
+    // Get pointer on object
     treePath = gtk_tree_path_new_from_string(path);
     model = gtk_tree_view_get_model(GTK_TREE_VIEW(data));
     gtk_tree_model_get_iter(model, &iter, treePath);
-    
-    if (gtk_tree_path_get_indices (treePath)[0] != 0) {
-        // Get pointer on object
-        gtk_tree_model_get(model, &iter,
-                COLUMN_ACCOUNT_ACTIVE, &enable,
-                COLUMN_ACCOUNT_DATA, &acc,
-                -1);
-        enable = !enable;
-
-        DEBUG("Account is %d enabled", enable);
-        // Store value
-        gtk_list_store_set(GTK_LIST_STORE(model), &iter,
-                COLUMN_ACCOUNT_ACTIVE, enable,
-                -1);
-
-        gtk_tree_path_free(treePath);
-
-        // Modify account state
-        gchar * registrationState;
-        if (enable == TRUE) {
-            registrationState = g_strdup("true");
-        } else {
-            registrationState = g_strdup("false");
-        }
-        DEBUG("Replacing with %s\n", registrationState);
-        g_hash_table_replace( acc->properties , g_strdup(ACCOUNT_ENABLED), registrationState);
-
-        dbus_send_register(acc->accountID, enable);
+    gtk_tree_model_get(model, &iter,
+            COLUMN_ACCOUNT_ACTIVE, &enable,
+            COLUMN_ACCOUNT_DATA, &acc,
+            -1);
+    enable = !enable;
+
+    DEBUG("Account is %d enabled", enable);
+    // Store value
+    gtk_list_store_set(GTK_LIST_STORE(model), &iter,
+            COLUMN_ACCOUNT_ACTIVE, enable,
+            -1);
+
+    // Modify account state
+    gchar * registrationState;
+    if (enable == TRUE) {
+        registrationState = g_strdup("true");
+    } else {
+        registrationState = g_strdup("false");
     }
+    DEBUG("Replacing with %s\n", registrationState);
+    g_hash_table_replace( acc->properties , g_strdup(ACCOUNT_ENABLED), registrationState);
+
+    dbus_send_register(acc->accountID, enable);
+
 }
 
 /**
@@ -553,6 +522,130 @@ void update_registration( void )
     gtk_widget_set_sensitive(GTK_WIDGET(applyButton) , FALSE );
 }
 
+static void show_advanced_zrtp_options_cb(GtkWidget *widget UNUSED, gpointer data)
+{
+    DEBUG("Advanced options for ZRTP");
+    show_advanced_zrtp_options((GHashTable *) data);
+}
+
+static void show_advanced_tls_options_cb(GtkWidget *widget UNUSED, gpointer data)
+{
+    DEBUG("Advanced options for TLS");
+    show_advanced_tls_options((GHashTable *) data);
+}
+
+static void key_exchange_changed_cb(GtkWidget *widget, gpointer data)
+{
+    DEBUG("Key exchange changed");
+    if (g_strcasecmp(gtk_combo_box_get_active_text(GTK_COMBO_BOX(widget)), (gchar *) "ZRTP") == 0) {
+        gtk_widget_set_sensitive(GTK_WIDGET(data), TRUE);
+        g_hash_table_replace(directIpCallsProperties, g_strdup(ACCOUNT_KEY_EXCHANGE), g_strdup(ZRTP));
+    } else {
+        gtk_widget_set_sensitive(GTK_WIDGET(data), FALSE);
+        DEBUG("Setting key exchange %s to %s\n", ACCOUNT_KEY_EXCHANGE, KEY_EXCHANGE_NONE);
+        g_hash_table_replace(directIpCallsProperties, g_strdup(ACCOUNT_KEY_EXCHANGE), g_strdup(KEY_EXCHANGE_NONE));
+    }
+}
+
+static void use_sip_tls_cb(GtkWidget *widget, gpointer data)
+{
+    if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) {
+        DEBUG("Using sips");
+    	gtk_widget_set_sensitive(GTK_WIDGET(data), TRUE);  
+        g_hash_table_replace(directIpCallsProperties,
+				g_strdup(TLS_ENABLE), g_strdup("true"));    	          
+    } else {
+        gtk_widget_set_sensitive(GTK_WIDGET(data), FALSE);
+        g_hash_table_replace(directIpCallsProperties,
+				g_strdup(TLS_ENABLE), g_strdup("false"));             
+    }   
+}
+
+GtkWidget* create_direct_ip_calls_tab()
+{
+    GtkWidget * frame;
+    GtkWidget * table;
+    GtkWidget * label;
+    GtkWidget * explanationLabel;
+    GtkWidget * keyExchangeCombo;
+    GtkWidget * advancedZrtpButton;
+    GtkWidget * useSipTlsCheckBox;    
+    
+    gchar * curSRTPEnabled = "false";
+    gchar * curTlsEnabled = "false";    
+    gchar * curKeyExchange = "0";
+    gchar * description;
+   
+    directIpCallsProperties = sflphone_get_ip2ip_properties();
+              
+    if(directIpCallsProperties != NULL) {
+        curSRTPEnabled = g_hash_table_lookup(directIpCallsProperties, ACCOUNT_SRTP_ENABLED);
+        curKeyExchange = g_hash_table_lookup(directIpCallsProperties, ACCOUNT_KEY_EXCHANGE);
+        curTlsEnabled = g_hash_table_lookup(directIpCallsProperties, TLS_ENABLE);        
+    }
+                
+	GtkWidget * vbox = gtk_vbox_new(FALSE, 10);
+    gtk_container_set_border_width(GTK_CONTAINER(vbox), 10);
+
+    description = g_markup_printf_escaped(_("This profile is used when you want to reach a remote peer simply by typing a sip URI such as <b>sip:remotepeer</b>. The settings you define here will also be used if no account can be matched to an incoming or outgoing call."));
+    explanationLabel = gtk_label_new(NULL);
+    gtk_label_set_markup(GTK_LABEL(explanationLabel), description);
+ 	gtk_misc_set_alignment(GTK_MISC(explanationLabel), 0, 0.5);    
+    gtk_box_pack_start(GTK_BOX(vbox), explanationLabel, FALSE, FALSE, 0);
+
+    gnome_main_section_new_with_table (_("Security"), &frame, &table, 2, 3);
+	gtk_container_set_border_width (GTK_CONTAINER(table), 10);
+	gtk_table_set_row_spacings (GTK_TABLE(table), 10);
+    gtk_table_set_col_spacings( GTK_TABLE(table), 10);
+    gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 0);
+
+	GtkWidget * sipTlsAdvancedButton;
+	sipTlsAdvancedButton = gtk_button_new_from_stock(GTK_STOCK_EDIT);
+    gtk_table_attach_defaults(GTK_TABLE(table), sipTlsAdvancedButton, 2, 3, 0, 1);
+	gtk_widget_set_sensitive(GTK_WIDGET(sipTlsAdvancedButton), FALSE);    
+    g_signal_connect(G_OBJECT(sipTlsAdvancedButton), "clicked", G_CALLBACK(show_advanced_tls_options_cb), directIpCallsProperties);
+    
+	useSipTlsCheckBox = gtk_check_button_new_with_mnemonic(_("Use TLS transport (sips)"));
+	g_signal_connect (useSipTlsCheckBox, "toggled", G_CALLBACK(use_sip_tls_cb), sipTlsAdvancedButton);
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(useSipTlsCheckBox), (g_strcmp0(curTlsEnabled, "false") == 0) ? FALSE:TRUE);
+	gtk_table_attach_defaults(GTK_TABLE(table), useSipTlsCheckBox, 0, 2, 0, 1);
+       	    
+    label = gtk_label_new_with_mnemonic (_("SRTP key exchange"));
+ 	gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
+    keyExchangeCombo = gtk_combo_box_new_text();
+    gtk_label_set_mnemonic_widget (GTK_LABEL (label), keyExchangeCombo);
+    gtk_combo_box_append_text(GTK_COMBO_BOX(keyExchangeCombo), "ZRTP");
+    //gtk_combo_box_append_text(GTK_COMBO_BOX(keyExchangeCombo), "SDES");
+    gtk_combo_box_append_text(GTK_COMBO_BOX(keyExchangeCombo), _("Disabled"));      
+    
+    advancedZrtpButton = gtk_button_new_from_stock(GTK_STOCK_PREFERENCES);
+    g_signal_connect(G_OBJECT(advancedZrtpButton), "clicked", G_CALLBACK(show_advanced_zrtp_options_cb), directIpCallsProperties);
+    
+    if (g_strcasecmp(curKeyExchange, ZRTP) == 0) {
+        gtk_combo_box_set_active(GTK_COMBO_BOX(keyExchangeCombo),0);
+    } else {
+        gtk_combo_box_set_active(GTK_COMBO_BOX(keyExchangeCombo), 1);
+        gtk_widget_set_sensitive(GTK_WIDGET(advancedZrtpButton), FALSE);
+    }
+    
+	g_signal_connect (G_OBJECT (GTK_COMBO_BOX(keyExchangeCombo)), "changed", G_CALLBACK (key_exchange_changed_cb), advancedZrtpButton);
+    
+    gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 1, 2);
+    gtk_table_attach_defaults(GTK_TABLE(table), keyExchangeCombo, 1, 2, 1, 2);    
+    gtk_table_attach_defaults(GTK_TABLE(table), advancedZrtpButton, 2, 3, 1, 2);
+    
+    gtk_widget_show_all(table);
+        
+    GtkRequisition requisition;
+    gtk_widget_size_request(GTK_WIDGET(table), &requisition);
+    gtk_widget_set_size_request(GTK_WIDGET(explanationLabel), requisition.width * 1.5, -1);        
+    gtk_label_set_line_wrap(GTK_LABEL(explanationLabel), TRUE);
+    
+    gtk_widget_show_all(vbox);
+    
+    return vbox;
+}
+
 GtkWidget* create_network_tab()
 {
     GtkWidget * frame;
@@ -740,7 +833,9 @@ void save_configuration_parameters (void) {
 
     // History config
     dbus_set_history_limit (history_limit);
-
+    
+    // Direct IP calls config
+    dbus_set_ip2ip_details(directIpCallsProperties);
 }
 
 /**
@@ -798,7 +893,12 @@ show_config_window ()
     tab = create_network_tab();
     gtk_notebook_append_page(GTK_NOTEBOOK(notebook), tab, gtk_label_new(_("Network")));
     gtk_notebook_page_num(GTK_NOTEBOOK(notebook), tab);
-    
+
+    // Direct IP calls tab
+    tab = create_direct_ip_calls_tab();
+    gtk_notebook_append_page(GTK_NOTEBOOK(notebook), tab, gtk_label_new(_("Direct IP calls")));
+    gtk_notebook_page_num(GTK_NOTEBOOK(notebook), tab);
+        
     gtk_notebook_set_current_page( GTK_NOTEBOOK( notebook) ,  0);
 
     result = gtk_dialog_run(dialog);
@@ -867,4 +967,3 @@ void config_window_set_stun_visible()
     gtk_widget_set_sensitive( GTK_WIDGET(stunFrame), TRUE );
 }
 
-
diff --git a/sflphone-client-gnome/src/config/ip2ipdialog.c b/sflphone-client-gnome/src/config/ip2ipdialog.c
index ec1434898f..8d6f961a62 100644
--- a/sflphone-client-gnome/src/config/ip2ipdialog.c
+++ b/sflphone-client-gnome/src/config/ip2ipdialog.c
@@ -145,7 +145,7 @@ void show_ip2ip_dialog(GHashTable * properties)
             } else {
                 g_hash_table_replace(properties, g_strdup(ACCOUNT_SRTP_ENABLED), g_strdup("false"));
             }  
-        dbus_set_ip2_ip_details(properties);            
+        dbus_set_ip2ip_details(properties);            
     }    
     
     gtk_widget_destroy (GTK_WIDGET(ip2ipDialog));
diff --git a/sflphone-client-gnome/src/dbus/dbus.c b/sflphone-client-gnome/src/dbus/dbus.c
index b73933e1da..970905a648 100644
--- a/sflphone-client-gnome/src/dbus/dbus.c
+++ b/sflphone-client-gnome/src/dbus/dbus.c
@@ -797,7 +797,7 @@ GHashTable* dbus_get_ip2_ip_details(void)
 }
 
     void
-dbus_set_ip2_ip_details(GHashTable * properties)
+dbus_set_ip2ip_details(GHashTable * properties)
 {
     GError *error = NULL;
     org_sflphone_SFLphone_ConfigurationManager_set_ip2_ip_details (
@@ -857,7 +857,6 @@ dbus_set_account_details(account_t *a)
         g_error_free (error);
     }
 }
-
     gchar*
 dbus_add_account(account_t *a)
 {
diff --git a/sflphone-client-gnome/src/dbus/dbus.h b/sflphone-client-gnome/src/dbus/dbus.h
index 50e2552571..73305b489f 100644
--- a/sflphone-client-gnome/src/dbus/dbus.h
+++ b/sflphone-client-gnome/src/dbus/dbus.h
@@ -159,7 +159,7 @@ GHashTable * dbus_get_ip2_ip_details(void);
 /**
  * ConfigurationManager - Set the details for the ip2ip profile 
  */
-void dbus_set_ip2_ip_details(GHashTable * properties);
+void dbus_set_ip2ip_details(GHashTable * properties);
 
 /**
  * ConfigurationManager - Send registration request
diff --git a/sflphone-client-gnome/src/sflphone_const.h b/sflphone-client-gnome/src/sflphone_const.h
index 516929916c..627e4f919e 100644
--- a/sflphone-client-gnome/src/sflphone_const.h
+++ b/sflphone-client-gnome/src/sflphone_const.h
@@ -64,6 +64,7 @@
 #define ACCOUNT_ZRTP_NOT_SUPP_WARNING      "ZRTP.notSuppWarning"
 #define ACCOUNT_ZRTP_HELLO_HASH            "ZRTP.helloHashEnable"
 #define ACCOUNT_DISPLAY_SAS_ONCE           "ZRTP.displaySasOnce"
+#define KEY_EXCHANGE_NONE                  "0"
 #define ZRTP                               "1"
 #define SDES_TLS                           "2"
 
diff --git a/sflphone-common/src/dbus/configurationmanager.cpp b/sflphone-common/src/dbus/configurationmanager.cpp
index 9fe007627e..f76921e247 100644
--- a/sflphone-common/src/dbus/configurationmanager.cpp
+++ b/sflphone-common/src/dbus/configurationmanager.cpp
@@ -77,6 +77,10 @@ ConfigurationManager::getIp2IpDetails(void)
   ip2ipAccountDetails.insert(std::pair<std::string, std::string> (ZRTP_NOT_SUPP_WARNING, Manager::instance().getConfigString(IP2IP_PROFILE, ZRTP_NOT_SUPP_WARNING)));
   ip2ipAccountDetails.insert(std::pair<std::string, std::string> (ZRTP_DISPLAY_SAS_ONCE, Manager::instance().getConfigString(IP2IP_PROFILE, ZRTP_DISPLAY_SAS_ONCE)));
   
+  std::map<std::string, std::string> tlsSettings;
+  tlsSettings = getTlsSettings(IP2IP_PROFILE);
+  std::copy(tlsSettings.begin(), tlsSettings.end(), std::inserter(ip2ipAccountDetails, ip2ipAccountDetails.end()));
+  
   return ip2ipAccountDetails;
   
 }
@@ -91,6 +95,12 @@ ConfigurationManager::setIp2IpDetails(const std::map< std::string, std::string >
     if (it != details.end()) {
         Manager::instance().setConfig(IP2IP_PROFILE, SRTP_ENABLE, it->second); 
     }
+    
+    it = map_cpy.find(SRTP_KEY_EXCHANGE);
+    if (it != details.end()) {
+        Manager::instance().setConfig(IP2IP_PROFILE, SRTP_KEY_EXCHANGE, it->second); 
+    }
+        
     it = map_cpy.find(ZRTP_DISPLAY_SAS);
     if (it != details.end()) {
         Manager::instance().setConfig(IP2IP_PROFILE, ZRTP_DISPLAY_SAS, it->second); 
@@ -108,13 +118,7 @@ ConfigurationManager::setIp2IpDetails(const std::map< std::string, std::string >
         Manager::instance().setConfig(IP2IP_PROFILE, ZRTP_DISPLAY_SAS_ONCE, it->second); 
     }
                         
-    std::string keyExchange(details.find(SRTP_KEY_EXCHANGE)->second);
-        
-    if(keyExchange.find("ZRTP") == 0) { 
-       Manager::instance().setConfig(IP2IP_PROFILE, SRTP_KEY_EXCHANGE, "0");
-    } else {
-       Manager::instance().setConfig(IP2IP_PROFILE, SRTP_KEY_EXCHANGE, "1");
-    }
+    setTlsSettings(IP2IP_PROFILE, details);
         
     Manager::instance().saveConfig();
     
@@ -166,49 +170,48 @@ ConfigurationManager::setTlsSettings(const std::string& section, const std::map<
     if (it != details.end()) {
         Manager::instance().setConfig(section, TLS_ENABLE, it->second); 
     }
-  
     it = map_cpy.find(TLS_CA_LIST_FILE);
-    if (it != details.end()) {
+    if (it != map_cpy.end()) {
         Manager::instance().setConfig(section, TLS_CA_LIST_FILE, it->second); 
     }
     it = map_cpy.find(TLS_CERTIFICATE_FILE);
-    if (it != details.end()) {
+    if (it != map_cpy.end()) {
         Manager::instance().setConfig(section, TLS_CERTIFICATE_FILE, it->second); 
     }
     it = map_cpy.find(TLS_PRIVATE_KEY_FILE);
-    if (it != details.end()) {
+    if (it != map_cpy.end()) {
         Manager::instance().setConfig(section, TLS_PRIVATE_KEY_FILE, it->second); 
     }
     it = map_cpy.find(TLS_PASSWORD);
-    if (it != details.end()) {
+    if (it != map_cpy.end()) {
         Manager::instance().setConfig(section, TLS_PASSWORD, it->second); 
     }
     it = map_cpy.find(TLS_METHOD);
-    if (it != details.end()) {
+    if (it != map_cpy.end()) {
         Manager::instance().setConfig(section, TLS_METHOD, it->second); 
     }
     it = map_cpy.find(TLS_CIPHERS);
-    if (it != details.end()) {
+    if (it != map_cpy.end()) {
         Manager::instance().setConfig(section, TLS_CIPHERS, it->second); 
     }
     it = map_cpy.find(TLS_SERVER_NAME);
-    if (it != details.end()) {
+    if (it != map_cpy.end()) {
         Manager::instance().setConfig(section, TLS_SERVER_NAME, it->second); 
     }                        
    it = map_cpy.find(TLS_VERIFY_CLIENT);
-    if (it != details.end()) {
+    if (it != map_cpy.end()) {
         Manager::instance().setConfig(section, TLS_VERIFY_CLIENT, it->second); 
     }
     it = map_cpy.find(TLS_REQUIRE_CLIENT_CERTIFICATE);
-    if (it != details.end()) {
+    if (it != map_cpy.end()) {
         Manager::instance().setConfig(section, TLS_REQUIRE_CLIENT_CERTIFICATE, it->second); 
     }
     it = map_cpy.find(TLS_NEGOTIATION_TIMEOUT_SEC);
-    if (it != details.end()) {
+    if (it != map_cpy.end()) {
         Manager::instance().setConfig(section, TLS_NEGOTIATION_TIMEOUT_SEC, it->second); 
     }  
     it = map_cpy.find(TLS_NEGOTIATION_TIMEOUT_MSEC);
-    if (it != details.end()) {
+    if (it != map_cpy.end()) {
         Manager::instance().setConfig(section, TLS_NEGOTIATION_TIMEOUT_MSEC, it->second); 
     }             
     
diff --git a/sflphone-common/src/managerimpl.cpp b/sflphone-common/src/managerimpl.cpp
index 0e978649a4..0f19bbd35d 100644
--- a/sflphone-common/src/managerimpl.cpp
+++ b/sflphone-common/src/managerimpl.cpp
@@ -2467,7 +2467,7 @@ ManagerImpl::getConfigString (const std::string& section, const std::string&
 bool
 ManagerImpl::setConfig (const std::string& section, const std::string& name, const std::string& value)
 {
-    _debug("ManagerImp::setConfig %s %s %s\n", section.c_str(), name.c_str(), value.c_str());
+    _debug("ManagerImpl::setConfig %s %s %s\n", section.c_str(), name.c_str(), value.c_str());
     return _config.setConfigTreeItem (section, name, value);
 }
 
-- 
GitLab