diff --git a/sflphone-common/src/sip/sipvoiplink.cpp b/sflphone-common/src/sip/sipvoiplink.cpp
index 93da739a008775082aaff767328c763246f781f4..cab634082f2da02013c20e7bc73db4f37994c453 100644
--- a/sflphone-common/src/sip/sipvoiplink.cpp
+++ b/sflphone-common/src/sip/sipvoiplink.cpp
@@ -1432,16 +1432,24 @@ SIPVoIPLink::dtmfSipInfo (SIPCall *call, char code)
     pj_str_t methodName, content;
     pjsip_method method;
     pjsip_media_type ctype;
+    pj_pool_t *tmp_pool;
 
     _debug ("UserAgent: Send DTMF %c", code);
 
+    // Create a temporary memory pool
+    tmp_pool = pj_pool_create (&_cp->factory, "tmpdtmf10", 1000, 1000, NULL);
+    if (tmp_pool == NULL) {
+    	_debug ("UserAgent: Could not initialize memory pool while sending DTMF");
+    	return false;
+    }
+
     duration = Manager::instance().voipPreferences.getPulseLength();
 
     dtmf_body = new char[body_len];
 
     snprintf (dtmf_body, body_len - 1, "Signal=%c\r\nDuration=%d\r\n", code, duration);
 
-    pj_strdup2 (_pool, &methodName, "INFO");
+    pj_strdup2 (tmp_pool, &methodName, "INFO");
     pjsip_method_init_np (&method, &methodName);
 
     /* Create request message. */
@@ -1453,12 +1461,12 @@ SIPVoIPLink::dtmfSipInfo (SIPCall *call, char code)
     }
 
     /* Get MIME type */
-    pj_strdup2 (_pool, &ctype.type, "application");
+    pj_strdup2 (tmp_pool, &ctype.type, "application");
 
-    pj_strdup2 (_pool, &ctype.subtype, "dtmf-relay");
+    pj_strdup2 (tmp_pool, &ctype.subtype, "dtmf-relay");
 
     /* Create "application/dtmf-relay" message body. */
-    pj_strdup2 (_pool, &content, dtmf_body);
+    pj_strdup2 (tmp_pool, &content, dtmf_body);
 
     tdata->msg->body = pjsip_msg_body_create (tdata->pool, &ctype.type, &ctype.subtype, &content);
 
@@ -1476,6 +1484,8 @@ SIPVoIPLink::dtmfSipInfo (SIPCall *call, char code)
         return false;
     }
 
+    pj_pool_release(tmp_pool);
+
     return true;
 }
 
@@ -2446,15 +2456,11 @@ int SIPVoIPLink::createUdpTransport (AccountID id)
         return !PJ_SUCCESS;
     }
 
-    //strcpy (tmpIP, listeningAddress.data());
     /* Init published name */
     pj_bzero (&a_name, sizeof (pjsip_host_port));
     pj_cstr (&a_name.host, listeningAddress.c_str());
     a_name.port = listeningPort;
 
-    //pj_strdup2 (_pool, &a_name.host, tmpIP);
-    //a_name.port = (pj_uint16_t) listeningPort;
-
     status = pjsip_udp_transport_start (_endpt, &bound_addr, &a_name, 1, &transport);
 
     // Print info from transport manager associated to endpoint
@@ -2462,20 +2468,14 @@ int SIPVoIPLink::createUdpTransport (AccountID id)
     pjsip_tpmgr_dump_transports (tpmgr);
 
     if (status != PJ_SUCCESS) {
-
         _debug ("UserAgent: (%d) Unable to start UDP transport on %s:%d", status, listeningAddress.data(), listeningPort);
         return status;
-
     } else {
-
         _debug ("UserAgent: UDP transport initialized successfully on %s:%d", listeningAddress.c_str (), listeningPort);
-
         if (account == NULL) {
-
             _debug ("UserAgent: Use transport as local UDP server");
             _localUDPTransport = transport;
         } else {
-
             _debug ("UserAgent: bind transport to account %s", account->getAccountID().c_str());
             account->setAccountTransport (transport);
         }
@@ -2490,8 +2490,6 @@ std::string SIPVoIPLink::findLocalAddressFromUri (const std::string& uri, pjsip_
     pjsip_transport_type_e transportType;
     pjsip_tpselector *tp_sel;
 
-    _debug ("SIP: Find local address from URI");
-
     // Find the transport that must be used with the given uri
     pj_str_t tmp;
     pj_strdup2_with_null (_pool, &tmp, uri.c_str());
@@ -2572,6 +2570,8 @@ std::string SIPVoIPLink::findLocalAddressFromUri (const std::string& uri, pjsip_
 
     _debug ("SIP: Local address discovered from attached transport: %s", localaddr.c_str());
 
+    // pj_pool_release(tmp_pool);
+
     return localaddr;
 }