diff --git a/sflphone-client-gnome/pixmaps/Makefile.am b/sflphone-client-gnome/pixmaps/Makefile.am
index 33dc526e3ffdce17f9f6263f09eabb4079192978..56a6e20755c43cd3f4e87ef2bcf6872627f228ec 100644
--- a/sflphone-client-gnome/pixmaps/Makefile.am
+++ b/sflphone-client-gnome/pixmaps/Makefile.am
@@ -25,6 +25,7 @@ buttons_DATA = current.svg \
 				busy.svg \
 				sflphone.svg \
 				sflphone_small.svg \
+				sflphone_notif.svg \
 				stock_person.svg \
 				icon_rec.svg \
 				rec_call.svg \
diff --git a/sflphone-client-gnome/src/config/audioconf.c b/sflphone-client-gnome/src/config/audioconf.c
index 8d3a55c7d40bee20bc371fad3fb88aa2c3dc340d..308131207f5c401c8753ec6701c0915edf651c7a 100644
--- a/sflphone-client-gnome/src/config/audioconf.c
+++ b/sflphone-client-gnome/src/config/audioconf.c
@@ -770,9 +770,14 @@ GtkWidget* noise_box()
 
 static void record_path_changed( GtkFileChooser *chooser , GtkLabel *label UNUSED)
 {
+    DEBUG("record_path_changed");
+
     gchar* path;
-    path = gtk_file_chooser_get_uri( GTK_FILE_CHOOSER( chooser ));
-    path = g_strndup (path + 7, strlen(path) - 7);
+    // path = gtk_file_chooser_get_uri( GTK_FILE_CHOOSER( chooser ));
+    // DEBUG("path1 %s", path);
+    path = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER( chooser ));
+    DEBUG("path2 %s", path);
+    // path = g_strndup (path + 6, strlen(path) - 6);
     dbus_set_record_path( path );
 }
 
@@ -853,9 +858,9 @@ GtkWidget* create_audio_configuration()
     GtkWidget *folderChooser;
     gchar *dftPath;
     
-        /* Get the path where to save audio files */
-    dftPath = dbus_get_record_path ();/* Get the path where to save audio files */
+    /* Get the path where to save audio files */
     dftPath = dbus_get_record_path ();
+    DEBUG("load recording path %s\n", dftPath);
     
     gnome_main_section_new_with_table (_("Recordings"), &frame, &table, 1, 2);
     gtk_box_pack_start(GTK_BOX(ret), frame, FALSE, FALSE, 0);
diff --git a/sflphone-client-gnome/src/config/preferencesdialog.c b/sflphone-client-gnome/src/config/preferencesdialog.c
index b472887b6d4c4859341d5a7a7a168d4072afc605..d804865fa4dba066698196f1538f8ac3c4d28458 100644
--- a/sflphone-client-gnome/src/config/preferencesdialog.c
+++ b/sflphone-client-gnome/src/config/preferencesdialog.c
@@ -87,10 +87,10 @@ start_hidden( void )
     dbus_start_hidden();
 }
 
-static void
-set_popup_mode( void )
+static void set_popup_mode (GtkWidget *widget, gpointer *userdata)
 {
-    dbus_switch_popup_mode();
+	if (dbus_popup_mode () || gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)))
+		dbus_switch_popup_mode ();
 }
 
 
@@ -452,14 +452,15 @@ create_general_settings ()
     gtk_box_pack_start(GTK_BOX(ret), frame, FALSE, FALSE, 0);
 
     GtkWidget* trayItem1 = gtk_radio_button_new_with_mnemonic(NULL,  _("_Popup main window on incoming call"));
-    gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(trayItem1), dbus_popup_mode() );
-    g_signal_connect(G_OBJECT( trayItem1 ), "clicked", G_CALLBACK( set_popup_mode ) , NULL);
+    g_signal_connect(G_OBJECT (trayItem1), "toggled", G_CALLBACK (set_popup_mode), NULL);
     gtk_table_attach( GTK_TABLE(table), trayItem1, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 5);
 
-    trayItem = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(trayItem1), _("Ne_ver popup main window"));
-    gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(trayItem), !dbus_popup_mode() );
+    trayItem = gtk_radio_button_new_with_mnemonic_from_widget (GTK_RADIO_BUTTON(trayItem1), _("Ne_ver popup main window"));
     gtk_table_attach( GTK_TABLE(table), trayItem, 0, 1, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 5);
 
+	// Toggle according to the user configuration
+	dbus_popup_mode () ? gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (trayItem1), TRUE) : gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (trayItem), TRUE);
+
     trayItem = gtk_check_button_new_with_mnemonic(_("Hide SFLphone window on _startup"));
     gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(trayItem), dbus_is_start_hidden() );
     g_signal_connect(G_OBJECT( trayItem ) , "clicked" , G_CALLBACK( start_hidden ) , NULL);
diff --git a/sflphone-client-gnome/src/dbus/dbus.c b/sflphone-client-gnome/src/dbus/dbus.c
index 557351e80794d179f8ddeeb6f05233b112b46a6a..7f9f0f732999dc7e1533ca02d14e18ded5b4dd9e 100644
--- a/sflphone-client-gnome/src/dbus/dbus.c
+++ b/sflphone-client-gnome/src/dbus/dbus.c
@@ -64,7 +64,8 @@ incoming_call_cb (DBusGProxy *proxy UNUSED,
 
     create_new_call (CALL, CALL_STATE_INCOMING, g_strdup(callID), g_strdup(accountID), peer_name, peer_number, &c);
 #if GTK_CHECK_VERSION(2,10,0)
-    status_tray_icon_blink( TRUE );
+    status_tray_icon_blink (TRUE);
+	popup_main_window ();
 #endif
 
     set_timestamp (&c->_time_start);
diff --git a/sflphone-client-gnome/src/sflphone_const.h b/sflphone-client-gnome/src/sflphone_const.h
index 89fa9d3b2ace59d28379987dbc058746cff08e51..d76373fd71bba4c63cd2d8b69fbcbe3d8df2e9b7 100644
--- a/sflphone-client-gnome/src/sflphone_const.h
+++ b/sflphone-client-gnome/src/sflphone_const.h
@@ -29,6 +29,7 @@
  */
 
 #define LOGO                ICONS_DIR "/sflphone.svg"
+#define LOGO_NOTIF			ICONS_DIR "/sflphone_notif.svg"
 #define LOGO_SMALL          ICONS_DIR "/sflphone_small.svg"
 
 #define CURRENT_CALLS       "current_calls"
diff --git a/sflphone-client-gnome/src/statusicon.c b/sflphone-client-gnome/src/statusicon.c
index 9757996a6aedd89beec22c308f112e6cd20a73ed..99b8dcc2c6ccec24d66d924fe44b11a4cea5adcd 100644
--- a/sflphone-client-gnome/src/statusicon.c
+++ b/sflphone-client-gnome/src/statusicon.c
@@ -29,6 +29,16 @@ GtkStatusIcon* status;
 GtkWidget * show_menu_item;
 gboolean __minimized = MINIMIZED;
 
+
+void popup_main_window (void)
+{
+	if (__POPUP_WINDOW)
+	{
+		gtk_widget_show (get_main_window ());
+		set_minimized (FALSE);
+	}
+}
+
 void 
 status_quit ( void * foo UNUSED)
 {
@@ -41,31 +51,27 @@ status_icon_unminimize()
   gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(show_menu_item), TRUE);
 }
 
-gboolean
-main_widget_minimized()
+gboolean main_widget_minimized()
 {
   return __minimized;
 }
 
-void 
-show_hide (void)
+void show_hide (void)
 {
-  if(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(show_menu_item)))
-  {
-    gtk_widget_show(GTK_WIDGET(get_main_window()));
-    set_minimized( !MINIMIZED );
-  }   
-  else
-  {
-    gtk_widget_hide(GTK_WIDGET(get_main_window()));
-    set_minimized( MINIMIZED );
-  }
-
+	if(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(show_menu_item)))
+	{
+		gtk_widget_show(GTK_WIDGET(get_main_window()));
+		set_minimized( !MINIMIZED );
+	}   
+	else
+	{
+		gtk_widget_hide(GTK_WIDGET(get_main_window()));
+		set_minimized( MINIMIZED );
+	}
 }
 
 
-void 
-status_click (GtkStatusIcon *status_icon UNUSED, void * foo UNUSED)
+void status_click (GtkStatusIcon *status_icon UNUSED, void * foo UNUSED)
 {
     gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(show_menu_item), 
         !gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(show_menu_item)));
@@ -80,8 +86,7 @@ void menu (GtkStatusIcon *status_icon,
     status_icon, button, activate_time);
 }
 
-GtkWidget * 
-create_menu()
+GtkWidget* create_menu()
 {
   GtkWidget * menu;
   GtkWidget * menu_items;
@@ -129,10 +134,13 @@ show_status_icon()
   g_free(tip);
 }
 
-void
-status_tray_icon_blink( gboolean active )
+void status_tray_icon_blink (gboolean active)
 {
-  gtk_status_icon_set_blinking( status , active );
+	// Set a different icon to notify of an event
+	active ? gtk_status_icon_set_from_file (status, LOGO_NOTIF) : gtk_status_icon_set_from_file (status, LOGO);
+	// Do not blink anymore ...
+	// gtk_status_icon_set_blinking (status, active);
+
 }
 
 GtkStatusIcon* 
diff --git a/sflphone-client-gnome/src/statusicon.h b/sflphone-client-gnome/src/statusicon.h
index a269bde64d9d7da179dc8528a053364229593fdf..4a841c4ea0ae2c81a9dfcaf74b32320bd4e7f51b 100644
--- a/sflphone-client-gnome/src/statusicon.h
+++ b/sflphone-client-gnome/src/statusicon.h
@@ -30,6 +30,11 @@
  * @brief The status icon in the system tray.
  */
 
+/**
+ * Popup the main window. Used on incoming calls
+ */
+void popup_main_window (void);
+
 /**
  * Create the status icon 
  */
diff --git a/sflphone-common/src/dbus/configurationmanager.cpp b/sflphone-common/src/dbus/configurationmanager.cpp
index 34fefc53164a6a7dd7c15c405acc2ced1237b034..d971993194406f44ea716573ebe672a2a3ede843 100644
--- a/sflphone-common/src/dbus/configurationmanager.cpp
+++ b/sflphone-common/src/dbus/configurationmanager.cpp
@@ -715,7 +715,7 @@ ConfigurationManager::getMailNotify (void)
 int
 ConfigurationManager::getSipAddress (void)
 {
-    return Manager::instance().getSipAddress();
+    return Manager::instance().getLocalIp2IpPort();
 
     // return "ok";
 }
@@ -724,7 +724,7 @@ void
 ConfigurationManager::setSipAddress (const std::string& address)
 {
     _debug ("Manager received setSipAddress: %s", address.c_str());
-    Manager::instance().setSipAddress (address);
+    Manager::instance().setLocalIp2IpInfo(address);
 }
 
 std::map<std::string, int32_t> ConfigurationManager::getAddressbookSettings (void)
diff --git a/sflphone-common/src/managerimpl.cpp b/sflphone-common/src/managerimpl.cpp
index a3a8d819ecb47b9c3e219dd0786bc3e5484a7bf0..884705ab1f60b1d199e3a408d0e89ae4acb1cb14 100644
--- a/sflphone-common/src/managerimpl.cpp
+++ b/sflphone-common/src/managerimpl.cpp
@@ -3196,35 +3196,50 @@ void ManagerImpl::setMicVolume (unsigned short mic_vol)
 }
 
 
-void ManagerImpl::setSipAddress (const std::string& address)
-{
-  _debug ("Setting new ip to ip address %s", address.c_str());
 
+
+
+void ManagerImpl::setLocalIp2IpInfo(const std::string& address)
+{
     std::string ip_address = std::string(address);
 
     int index = ip_address.find_first_of(":");
 
     std::string local_address = ip_address.substr(0,index);
     std::string local_port = ip_address.substr(index+1); 
+    int newPort = atoi(local_port.c_str());
 
-    _debug ("Setting new ip to ip address %s and port %s", local_address.c_str(), local_port.c_str());
+    _debug ("Setting new address %s and port %s for default account (ip to ip calls)", local_address.c_str(), local_port.c_str());
 
     int prevPort = getConfigInt (IP2IP_PROFILE, LOCAL_PORT);
     std::string prevAddress  = getConfigString(IP2IP_PROFILE, LOCAL_ADDRESS);
 
-    if (prevPort != atoi(local_port.c_str()) || (prevAddress.compare(local_address) != 0)) {
+    if ((prevPort != newPort) || (prevAddress.compare(local_address) != 0)) {
+
+        
+        if(_directIpAccount) {
+
+	     SIPAccount* account = dynamic_cast<SIPAccount*>(_directIpAccount);
+
+	     account->setLocalPort(newPort);
+	     account->setLocalAddress(local_address);
+	}
+
         setConfig (IP2IP_PROFILE, LOCAL_ADDRESS, local_address);
-        setConfig (IP2IP_PROFILE, LOCAL_PORT, atoi(local_port.c_str()));
+        setConfig (IP2IP_PROFILE, LOCAL_PORT, newPort);
+
+	SIPVoIPLink* siplink = SIPVoIPLink::instance ("");
+	// if(siplink)
+	siplink->updateAccountInfo(_directIpAccount->getAccountID());
         // this->restartPJSIP ();
     }
 }
 
 
-int ManagerImpl::getSipAddress (void)
+int ManagerImpl::getLocalIp2IpPort (void)
 {
-    // return getConfigInt (PREFERENCES , CONFIG_SIP_PORT);
-    /* The 'global' SIP port is set throug the IP profile */
-    _debug("-----------------------------------------getSipAddress %i", getConfigInt (IP2IP_PROFILE, LOCAL_PORT));
+    /* The SIP port used for default account (IP to IP) calls */
+    _debug("Default account port %i", getConfigInt (IP2IP_PROFILE, LOCAL_PORT));
 
     return getConfigInt (IP2IP_PROFILE, LOCAL_PORT);
 
@@ -4115,6 +4130,8 @@ short
 ManagerImpl::loadAccountMap()
 {
 
+    _debug("ManagerImpl::loadAccountMap\n");
+
     short nbAccount = 0;
     TokenList sections = _config.getSections();
     std::string accountType;
@@ -4123,7 +4140,7 @@ ManagerImpl::loadAccountMap()
 
     TokenList::iterator iter = sections.begin();
 
-	// Those calls that are placed to an uri that cannot be
+    // Those calls that are placed to an uri that cannot be
     // associated to an account are using that special account.
     // An account, that is not account, in the sense of
     // registration. This is useful since the Account object
@@ -4131,6 +4148,17 @@ ManagerImpl::loadAccountMap()
     // and loading of various settings.
     _directIpAccount = AccountCreator::createAccount (AccountCreator::SIP_DIRECT_IP_ACCOUNT, "");
 
+    if (_directIpAccount == NULL) {
+        _debug ("Failed to create direct ip calls \"account\"\n");
+    } else {
+        // Force the options to be loaded
+        // No registration in the sense of
+        // the REGISTER method is performed.
+        _debug ("Succeed to create direct ip calls \"account\"\n");
+	_accountMap[IP2IP_PROFILE] = _directIpAccount;
+        _directIpAccount->registerVoIPLink();
+    }
+
     while (iter != sections.end()) {
         // Check if it starts with "Account:" (SIP and IAX pour le moment)
         if ( (int) (iter->find ("Account:")) != 0) {
@@ -4160,7 +4188,7 @@ ManagerImpl::loadAccountMap()
 
         iter++;
     }
-
+    /*
     if (_directIpAccount == NULL) {
         _debug ("Failed to create direct ip calls \"account\"");
     } else {
@@ -4169,9 +4197,10 @@ ManagerImpl::loadAccountMap()
         // the REGISTER method is performed.
         _debug ("Succeed to create direct ip calls \"account\"");
         _directIpAccount->registerVoIPLink();
+	_accountMap[IP2IP_PROFILE] = _directIpAccount;
     }
-
-    _debug ("nbAccount loaded %i ",nbAccount);
+    */
+    _debug ("nbAccount loaded %i", nbAccount);
 
     return nbAccount;
 }
diff --git a/sflphone-common/src/managerimpl.h b/sflphone-common/src/managerimpl.h
index f241fabc4038b685a91a544985a288a4012a3ccb..4f6c85e93894d7484c1150cbb1ccc076e34108f0 100644
--- a/sflphone-common/src/managerimpl.h
+++ b/sflphone-common/src/managerimpl.h
@@ -1315,9 +1315,9 @@ class ManagerImpl {
 
     AccountID getAccountIdFromNameAndServer(const std::string& userName, const std::string& server);
 
-    int getSipAddress();
+    int getLocalIp2IpPort();
 
-    void setSipAddress( const std::string& address );
+    void setLocalIp2IpInfo( const std::string& address );
 
     std::string getStunServer (void);
     void setStunServer (const std::string &server);
diff --git a/sflphone-common/src/sip/sipaccount.cpp b/sflphone-common/src/sip/sipaccount.cpp
index 33445ad71ad9193b9a4deec3949e1a378781fa30..75162d1a0a6664586a231a21615eddda9210560d 100644
--- a/sflphone-common/src/sip/sipaccount.cpp
+++ b/sflphone-common/src/sip/sipaccount.cpp
@@ -35,6 +35,7 @@ SIPAccount::SIPAccount (const AccountID& accountID)
 	, _localPort (atoi (DEFAULT_SIP_PORT))
 	, _publishedPort (atoi (DEFAULT_SIP_PORT))
 	, _transportType (PJSIP_TRANSPORT_UNSPECIFIED)
+	, _transport(NULL)
 	, _resolveOnce (false)
 	, _credentialCount (0)
 	, _cred (NULL)
@@ -341,7 +342,6 @@ void SIPAccount::loadConfig()
     bool tlsEnabled = Manager::instance().getConfigBool (_accountID, TLS_ENABLE);
 
     if (tlsEnabled) {
-        _debug ("---------------------------- TLS Enabled");
         initTlsConfiguration();
         _transportType = PJSIP_TRANSPORT_TLS;
     } else {
diff --git a/sflphone-common/src/sip/sipaccount.h b/sflphone-common/src/sip/sipaccount.h
index 0b304bb326afa46752317aab13f14ac5ea4fedc7..7a3a17d887a4551938d2229a3b96e23b3eaf1757 100644
--- a/sflphone-common/src/sip/sipaccount.h
+++ b/sflphone-common/src/sip/sipaccount.h
@@ -331,7 +331,7 @@ class SIPAccount : public Account
         
         pjsip_transport_type_e _transportType;
 
-		pjsip_transport* _transport;
+	pjsip_transport* _transport;
 
         // Special hack that is not here to stay
         // See #1852
diff --git a/sflphone-common/src/sip/sipvoiplink.cpp b/sflphone-common/src/sip/sipvoiplink.cpp
index d4862dd51a0ddafac1766907cd0913898533a297..bed4aa782e5117ad3b8b2d36215761b26d3aab6a 100644
--- a/sflphone-common/src/sip/sipvoiplink.cpp
+++ b/sflphone-common/src/sip/sipvoiplink.cpp
@@ -270,7 +270,7 @@ bool SIPVoIPLink::init()
 
 	// TODO This port should be the one configured for the IP profile
 	// and not the global one
-    _regPort = Manager::instance().getSipAddress();
+    _regPort = Manager::instance().getLocalIp2IpPort();
 
     /* Instanciate the C++ thread */
     _evThread = new EventThread (this);
@@ -286,14 +286,21 @@ bool SIPVoIPLink::init()
 void
 SIPVoIPLink::terminate()
 {
+    _debug("SIPVoIPLink::terminate");
+
+
+
     if (_evThread) {
+        _debug("SIPVoIPLink:: delete eventThread");
         delete _evThread;
         _evThread = NULL;
     }
 
 
+
     /* Clean shutdown of pjsip library */
     if (initDone()) {
+      _debug("pjsip_shutdown\n");
         pjsip_shutdown();
     }
 
@@ -472,7 +479,7 @@ int SIPVoIPLink::sendRegister (AccountID id)
             status = createUDPServer (id);
 
             if (status != PJ_SUCCESS) {
-                _debug ("Use the local UDP transport", id.c_str());
+                _debug ("Use the local UDP transport");
                 account->setAccountTransport (_localUDPTransport);
             }
         }
@@ -1438,7 +1445,8 @@ bool SIPVoIPLink::new_ip_to_ip_call (const CallID& id, const std::string& to)
 
         AccountID accountId = Manager::instance().getAccountFromCall (id);
         SIPAccount * account = NULL;
-        account = dynamic_cast<SIPAccount *> (Manager::instance().getAccount (accountId));
+
+        account = dynamic_cast<SIPAccount *> (Manager::instance().getAccount (IP2IP_PROFILE));
 
         if (account == NULL) {
             _debug ("Account is null. Returning");
@@ -1447,6 +1455,7 @@ bool SIPVoIPLink::new_ip_to_ip_call (const CallID& id, const std::string& to)
         
 		// Set SDP parameters
 		localAddress = account->getLocalAddress ();
+		_debug("new_ip_to_ip_call localAddress: %s\n", localAddress.c_str());
 		if (localAddress == "0.0.0.0"){
 			_debug ("Here is the local address: %s", localAddress.c_str ());
 			loadSIPLocalIP (&localAddress);	
@@ -1468,6 +1477,15 @@ bool SIPVoIPLink::new_ip_to_ip_call (const CallID& id, const std::string& to)
             _debug ("! SIP Failure: Unable to create RTP Session  in SIPVoIPLink::new_ip_to_ip_call (%s:%d)", __FILE__, __LINE__);
         }
 
+	// If no account already set, use the default one created at pjsip initialization
+	if(account->getAccountTransport() == NULL) {
+	    _debug("No transport for this account, using the default one\n");
+	    account->setAccountTransport(_localUDPTransport);
+	}
+
+	_debug("IptoIP local port %i\n", account->getLocalPort());
+	_debug("IptoIP local address %s\n", account->getLocalAddress().c_str());
+
         // Create URI
         std::string fromUri;
 
@@ -1475,9 +1493,9 @@ bool SIPVoIPLink::new_ip_to_ip_call (const CallID& id, const std::string& to)
 
         fromUri = account->getFromUri();
 
-        std::string address = findLocalAddressFromUri (toUri, _localUDPTransport);
+        std::string address = findLocalAddressFromUri (toUri, account->getAccountTransport());
 
-        int port = findLocalPortFromUri (toUri, _localUDPTransport);
+        int port = findLocalPortFromUri (toUri, account->getAccountTransport());
 
         std::stringstream ss;
 
@@ -1520,7 +1538,7 @@ bool SIPVoIPLink::new_ip_to_ip_call (const CallID& id, const std::string& to)
         // Set the appropriate transport
         pjsip_tpselector *tp;
 
-        init_transport_selector (_localUDPTransport, &tp);
+        init_transport_selector (account->getAccountTransport(), &tp);
 
         status = pjsip_dlg_set_transport (dialog, tp);
 
@@ -1657,6 +1675,8 @@ bool SIPVoIPLink::pjsip_init()
 
     name_mod = "sflphone";
 
+    _debug("pjsip_init\n");
+
     // Init PJLIB: must be called before any call to the pjsip library
     status = pj_init();
     // Use pjsip macros for sanity check
@@ -1703,10 +1723,10 @@ bool SIPVoIPLink::pjsip_init()
 
     if (account == NULL) {
         _debug ("Account is null in pjsip init");
-		port = _regPort;
+	port = _regPort;
     } else {
         directIpCallsTlsEnabled = account->isTlsEnabled();
-		port = account->getLocalPort ();
+	port = account->getLocalPort ();
     }
 
     // Create a UDP listener meant for all accounts
@@ -1900,13 +1920,14 @@ int SIPVoIPLink::createUDPServer (AccountID id)
     pjsip_host_port a_name;
     char tmpIP[32];
     pjsip_transport *transport;
-	std::string listeningAddress = "127.0.0.1";
-	int listeningPort = _regPort;
+    std::string listeningAddress = "127.0.0.1";
+    int listeningPort = _regPort;
 
-	/* Use my local address as default value */
-	if (!loadSIPLocalIP (&listeningAddress))
-		return !PJ_SUCCESS;
+    /* Use my local address as default value */
+    if (!loadSIPLocalIP (&listeningAddress))
+        return !PJ_SUCCESS;
 
+    _debug("SIPVoIPLink::createUDPServer\n");
     /*
      * Retrieve the account information
      */
@@ -1916,7 +1937,7 @@ int SIPVoIPLink::createUDPServer (AccountID id)
     // Set information to the local address and port
 
     if (account == NULL) {
-        _debug ("Account is null in createUDPServer.");
+        _debug ("Account with id \"%s\" is null in createUDPServer.", id.c_str());
     } else {
         // We are trying to initialize a UDP transport available for all local accounts and direct IP calls
 		if (account->getLocalAddress () != "0.0.0.0"){
@@ -2266,7 +2287,7 @@ pj_status_t SIPVoIPLink::createAlternateUdpTransport (AccountID id)
     listeningPort = (int) a_name.port;
 
     // Set the address to be used in SDP
-	account->setPublishedAddress (listeningAddress);
+    account->setPublishedAddress (listeningAddress);
     account->setPublishedPort (listeningPort);
 
     // Create the UDP transport
@@ -2360,6 +2381,15 @@ pj_status_t SIPVoIPLink::createTlsTransport (AccountID id)
     return PJ_SUCCESS;
 }
 
+
+void SIPVoIPLink::updateAccountInfo(const AccountID& accountID)
+{
+
+    createUDPServer(accountID);
+
+}
+
+
 bool SIPVoIPLink::loadSIPLocalIP (std::string *addr)
 {
 
@@ -2382,6 +2412,8 @@ bool SIPVoIPLink::loadSIPLocalIP (std::string *addr)
 
 void SIPVoIPLink::busy_sleep (unsigned msec)
 {
+
+    _debug("SIPVoIPLink::busy_sleep\n");
 #if defined(PJ_SYMBIAN) && PJ_SYMBIAN != 0
     /* Ideally we shouldn't call pj_thread_sleep() and rather
      * CActiveScheduler::WaitForAnyRequest() here, but that will
@@ -2436,6 +2468,8 @@ bool SIPVoIPLink::pjsip_shutdown (void)
     /* Shutdown PJLIB */
     pj_shutdown();
 
+    _debug ("UserAgent: Shutted down succesfully\n");
+
     /* Done. */
     return true;
 }
@@ -2911,8 +2945,6 @@ mod_on_rx_request (pjsip_rx_data *rdata)
 
     char* from_header = strstr (rdata->msg_info.msg_buf, "From: ");
 
-    // _debug("------------------------------ thefromheader: %s", from_header);
-
     if (from_header) {
 
         std::string temp (from_header);
diff --git a/sflphone-common/src/sip/sipvoiplink.h b/sflphone-common/src/sip/sipvoiplink.h
index 87729d84a5d3b65bf167e2333e860fab774032ed..7b28b1761b1acb4a1869d8d8c02586faefe2e4b2 100644
--- a/sflphone-common/src/sip/sipvoiplink.h
+++ b/sflphone-common/src/sip/sipvoiplink.h
@@ -187,7 +187,7 @@ class SIPVoIPLink : public VoIPLink
         /**
          * Terminate only one call
          */
-        void terminateOneCall(const CallID& id);
+       void terminateOneCall(const CallID& id);
 
         /**
          * Send an outgoing call invite
@@ -297,6 +297,11 @@ class SIPVoIPLink : public VoIPLink
 
         bool loadSIPLocalIP (std::string *addr);
 
+	/**
+	 * This method is used to create a new transport and attach it to the appropriate account
+	 */
+	void updateAccountInfo(const AccountID& accountID);
+
     private:
         /**
          * Constructor