diff --git a/sflphone-common/src/sip/sdp.cpp b/sflphone-common/src/sip/sdp.cpp
index 5b3066212a5cb1696816960df034e126ab5b7ac4..78d4fcf06e8359191606a841f0a1ecc4279d4437 100644
--- a/sflphone-common/src/sip/sdp.cpp
+++ b/sflphone-common/src/sip/sdp.cpp
@@ -50,7 +50,10 @@ Sdp::Sdp (pj_pool_t *pool)
     _pool = pool;
 }
 
-Sdp::~Sdp() { }
+Sdp::~Sdp()
+{
+	clean_session_media();
+}
 
 void Sdp::set_media_descriptor_line (sdpMedia *media, pjmedia_sdp_media** p_med) {
 
@@ -457,7 +460,20 @@ std::string Sdp::media_to_string (void)
 
 void Sdp::clean_session_media()
 {
-    _session_media.clear();
+	_info("SDP: Clean session media");
+
+	if(_session_media.size() > 0) {
+
+		std::vector<sdpMedia *>::iterator iter = _session_media.begin();
+	    sdpMedia *media;
+
+		while(iter != _session_media.end()) {
+			media = *iter;
+			delete media;
+			iter++;
+		}
+		_session_media.clear();
+	}
 }
 
 void Sdp::set_negotiated_sdp (const pjmedia_sdp_session *sdp)
@@ -518,7 +534,7 @@ AudioCodec* Sdp::get_session_media (void)
     AudioCodec *codec = NULL;
     std::vector<sdpMedia*> media_list;
 
-    _debug ("Executing sdp line %d - get_session_media ()", __LINE__);
+    _debug ("SDP: Executing sdp line %d - get_session_media()", __LINE__);
 
     media_list = get_session_media_list ();
     nb_media = media_list.size();
diff --git a/sflphone-common/src/sip/sdpmedia.cpp b/sflphone-common/src/sip/sdpmedia.cpp
index 4cd5a8b99c7f9b3e99a3134ab3f0b470f660b9e4..eaed9dfda3ee80ca55912baa958bfe9b3d294ce4 100644
--- a/sflphone-common/src/sip/sdpmedia.cpp
+++ b/sflphone-common/src/sip/sdpmedia.cpp
@@ -75,10 +75,7 @@ sdpMedia::sdpMedia (std::string type, int port, std::string dir)
 
 sdpMedia::~sdpMedia()
 {
-    int i;
-
-    for (i=0; i< (int) _codec_list.size(); i++)
-        delete _codec_list[i];
+	clear_codec_list();
 }
 
 
@@ -99,7 +96,6 @@ std::string sdpMedia::get_media_type_str (void)
 
 void sdpMedia::add_codec (AudioCodec* codec)
 {
-
     _codec_list.push_back (codec);
 }