diff --git a/sflphone-common/src/audio/audiortp/AudioRtpSession.h b/sflphone-common/src/audio/audiortp/AudioRtpSession.h
index 29057bec3ec82fbcb302f8e172164d1f8a20bbf0..b6d4908445ba7cee17c3230976ec340413329f93 100644
--- a/sflphone-common/src/audio/audiortp/AudioRtpSession.h
+++ b/sflphone-common/src/audio/audiortp/AudioRtpSession.h
@@ -67,10 +67,10 @@ namespace sfl {
             
             int startRtpThread();
 
-	    /**
-	     * Used mostly when receiving a reinvite
-	     */
-	    void updateDestinationIpAddress(void);
+            /**
+             * Used mostly when receiving a reinvite
+             */
+            void updateDestinationIpAddress(void);
 
         private:
         
@@ -104,15 +104,16 @@ namespace sfl {
             // start() with no semaphore at all. 
             ost::Semaphore * _mainloopSemaphore;
 
-	    // Main destination address for this rtp session.
-	    // Stored in case or reINVITE, which may require to forget 
-	    // this destination and update a new one.
-	    ost::InetHostAddress _remote_ip;
+            // Main destination address for this rtp session.
+            // Stored in case or reINVITE, which may require to forget
+            // this destination and update a new one.
+            ost::InetHostAddress _remote_ip;
+
 
-	    // Main destination port for this rtp session.
-	    // Stored in case reINVITE, which may require to forget
-	    // this destination and update a new one
-	    unsigned short _remote_port;
+            // Main destination port for this rtp session.
+            // Stored in case reINVITE, which may require to forget
+            // this destination and update a new one
+            unsigned short _remote_port;
                      
             AudioCodec * _audiocodec;
             
@@ -163,23 +164,23 @@ namespace sfl {
              */
              ManagerImpl * _manager;
 
-	     /**
-	      * Sampling rate of audio converter
-	      */
-	     int _converterSamplingRate;
+             /**
+              * Sampling rate of audio converter
+              */
+             int _converterSamplingRate;
 
-	     /**
-	      * Timestamp for this session
-	      */
-	     int _timestamp;
+             /**
+              * Timestamp for this session
+              */
+             int _timestamp;
 
-	     /**
-	      * Time counter used to trigger incoming call notification
-	      */
-	     int _countNotificationTime;
+             /**
+              * Time counter used to trigger incoming call notification
+              */
+             int _countNotificationTime;
             
         protected:
-            SIPCall * _ca;
+             SIPCall * _ca;
             
     };    
     
@@ -208,7 +209,7 @@ namespace sfl {
 
         assert(_ca);
         
-        _debug ("Local audio port %i will be used", _ca->getLocalAudioPort());
+        _info ("Rtp: Local audio port %i will be used", _ca->getLocalAudioPort());
 
         //mic, we receive from soundcard in stereo, and we send encoded
         _audiolayer = _manager->getAudioDriver();
@@ -223,7 +224,7 @@ namespace sfl {
     template <typename D>
     AudioRtpSession<D>::~AudioRtpSession()
     {
-        _debug ("Delete AudioRtpSession instance");
+        _debug ("Rtp: Delete AudioRtpSession instance");
 
         try {
             terminate();
@@ -232,9 +233,7 @@ namespace sfl {
             throw;
         }
 
-	_debug("Unbind audio RTP stream for call id %s", _ca->getCallId().c_str());
-	// _audiolayer->getMainBuffer()->unBindAll(_ca->getCallId());
-	_manager->getAudioDriver()->getMainBuffer()->unBindAll(_ca->getCallId());
+        _manager->getAudioDriver()->getMainBuffer()->unBindAll(_ca->getCallId());
 
         delete [] _micData;
         delete [] _micDataConverted;
@@ -243,22 +242,21 @@ namespace sfl {
         delete [] _spkrDataConverted;
         delete _time;
         delete _converter;
-        _debug ("AudioRtpSession instance deleted");
     }
     
     template <typename D>
     void AudioRtpSession<D>::initBuffers() 
     {
-	// Set sampling rate, main buffer choose the highest one
-	// _audiolayer->getMainBuffer()->setInternalSamplingRate(_codecSampleRate);
+    	// Set sampling rate, main buffer choose the highest one
+    	// _audiolayer->getMainBuffer()->setInternalSamplingRate(_codecSampleRate);
         _manager->getAudioDriver()->getMainBuffer()->setInternalSamplingRate(_codecSampleRate);
 
-	// may be different than one already setted
-	// converterSamplingRate = _audiolayer->getMainBuffer()->getInternalSamplingRate();
-	_converterSamplingRate = _manager->getAudioDriver()->getMainBuffer()->getInternalSamplingRate();
+        // may be different than one already setted
+        // converterSamplingRate = _audiolayer->getMainBuffer()->getInternalSamplingRate();
+        _converterSamplingRate = _manager->getAudioDriver()->getMainBuffer()->getInternalSamplingRate();
 
-	// initialize SampleRate converter using AudioLayer's sampling rate
-	// (internal buffers initialized with maximal sampling rate and frame size)
+        // initialize SampleRate converter using AudioLayer's sampling rate
+        // (internal buffers initialized with maximal sampling rate and frame size)
         _converter = new SamplerateConverter(_layerSampleRate, _layerFrameSize);
 
         int nbSamplesMax = (int)(_codecSampleRate * _layerFrameSize /1000)*2;
@@ -268,7 +266,7 @@ namespace sfl {
         _spkrDataConverted = new SFLDataFormat[nbSamplesMax];
         _spkrDataDecoded = new SFLDataFormat[nbSamplesMax];
 
-	_manager->addStream(_ca->getCallId());
+        _manager->addStream(_ca->getCallId());
     }
     
     template <typename D>
@@ -288,8 +286,8 @@ namespace sfl {
     {
         assert(_ca);
 
-	AudioCodecType pl = (AudioCodecType)_ca->getLocalSDP()->get_session_media()->getPayload();
-	_audiocodec = _manager->getCodecDescriptorMap().instantiateCodec(pl);
+        AudioCodecType pl = (AudioCodecType)_ca->getLocalSDP()->get_session_media()->getPayload();
+        _audiocodec = _manager->getCodecDescriptorMap().instantiateCodec(pl);
 
         if (_audiocodec == NULL) {
             _debug ("No audiocodec, can't init RTP media");
@@ -318,26 +316,29 @@ namespace sfl {
     void AudioRtpSession<D>::setDestinationIpAddress(void)
     {
         if (_ca == NULL) {
-            _debug ("Sipcall is gone.");
+            _warn ("Rtp: Sipcall is gone.");
             throw AudioRtpSessionException();
         }
         
-        _debug ("Setting IP address for the RTP session");
+        _info ("RTP: Setting IP address for the RTP session");
 
-	// Store remote ip in case we would need to forget current destination
+        // Store remote ip in case we would need to forget current destination
         _remote_ip = ost::InetHostAddress(_ca->getLocalSDP()->get_remote_ip().c_str());
-        _debug ("Init audio RTP session: remote ip %s", _ca->getLocalSDP()->get_remote_ip().data());
 
         if (!_remote_ip) {
-            _debug ("Target IP address [%s] is not correct!", _ca->getLocalSDP()->get_remote_ip().data());
+            _warn("Rtp: Target IP address (%s) is not correct!", 
+						_ca->getLocalSDP()->get_remote_ip().data());
             return;
         }
 
-	// Store remote port in case we would need to forget current destination
-	_remote_port = (unsigned short) _ca->getLocalSDP()->get_remote_audio_port();
+        // Store remote port in case we would need to forget current destination
+        _remote_port = (unsigned short) _ca->getLocalSDP()->get_remote_audio_port();
+
+        _info("RTP: New remote address for session: %s:%d",
+        _ca->getLocalSDP()->get_remote_ip().data(), _remote_port);
 
         if (! static_cast<D*>(this)->addDestination (_remote_ip, _remote_port)) {
-            _debug ("Can't add destination to session!");
+            _warn("Rtp: Can't add new destination to session!");
             return;
         }
     }
@@ -346,12 +347,13 @@ namespace sfl {
     void AudioRtpSession<D>::updateDestinationIpAddress(void)
     {
         // Destination address are stored in a list in ccrtp
-        // This method clear off this entry
-        _debug("updateDestinationIpAddress: remove destination %s", _ca->getLocalSDP()->get_remote_ip().c_str());
-        static_cast<D*>(this)->forgetDestination(_remote_ip, _remote_port);
+        // This method remove the current destination entry
+
+        if(!static_cast<D*>(this)->forgetDestination(_remote_ip, _remote_port, _remote_port+1))
+        	_warn("Rtp: Could not remove previous destination");
 
-	// new destination is stored in call
-	// we just need to recall this method
+        // new destination is stored in call
+        // we just need to recall this method
         setDestinationIpAddress();
     }
     
@@ -534,7 +536,6 @@ namespace sfl {
     {
 
         setSessionTimeouts();
-        setDestinationIpAddress();
         setSessionMedia();
 
 	initBuffers();