diff --git a/daemon/src/sip/sipvoiplink.cpp b/daemon/src/sip/sipvoiplink.cpp
index 43a9683b6edf91735de9de0df24f655c59ff62a1..9b69b157d159ec404c0a3e7e514995690dd38e42 100644
--- a/daemon/src/sip/sipvoiplink.cpp
+++ b/daemon/src/sip/sipvoiplink.cpp
@@ -232,6 +232,17 @@ void updateSDPFromSTUN(SIPCall &call, SIPAccount &account, const SipTransport &t
     }
 }
 
+void
+addContactHeader(const std::string &contactStr, pjsip_tx_data *tdata)
+{
+    pj_str_t pjContact = pj_str((char*) contactStr.c_str());
+
+    pjsip_contact_hdr *contact = pjsip_contact_hdr_create(tdata->pool);
+    contact->uri = pjsip_parse_uri(tdata->pool, pjContact.ptr,
+                                   pjContact.slen, PJSIP_PARSE_URI_AS_NAMEADDR);
+    pjsip_msg_add_hdr(tdata->msg, (pjsip_hdr*) contact);
+}
+
 pj_bool_t transaction_request_cb(pjsip_rx_data *rdata)
 {
 
@@ -466,6 +477,10 @@ pj_bool_t transaction_request_cb(pjsip_rx_data *rdata)
             return PJ_FALSE;
         }
 
+        // contactStr must stay in scope as long as tdata
+        const std::string contactStr(account->getContactHeader());
+        addContactHeader(contactStr, tdata);
+
         if (pjsip_inv_send_msg(call->inv, tdata) != PJ_SUCCESS) {
             ERROR("Could not send msg for invite");
             delete call;
@@ -1034,17 +1049,6 @@ void stopRtpIfCurrent(const std::string &id, SIPCall &call)
 #endif
     }
 }
-
-void addContactHeader(const SIPAccount &account, pjsip_tx_data *tdata)
-{
-    const std::string contactStr(account.getContactHeader());
-    pj_str_t pjContact = pj_str((char*) contactStr.c_str());
-
-    pjsip_contact_hdr *contact = pjsip_contact_hdr_create(tdata->pool);
-    contact->uri = pjsip_parse_uri(tdata->pool, pjContact.ptr,
-                                   pjContact.slen, PJSIP_PARSE_URI_AS_NAMEADDR);
-    pjsip_msg_add_hdr(tdata->msg, (pjsip_hdr*) contact);
-}
 }
 
 void
@@ -1088,7 +1092,9 @@ SIPVoIPLink::hangup(const std::string& id, int reason)
     if (pjsip_inv_end_session(inv, status, NULL, &tdata) != PJ_SUCCESS || !tdata)
         return;
 
-    addContactHeader(*account, tdata);
+    // contactStr must stay in scope as long as tdata
+    const std::string contactStr(account->getContactHeader());
+    addContactHeader(contactStr, tdata);
 
     if (pjsip_inv_send_msg(inv, tdata) != PJ_SUCCESS)
         return;