diff --git a/src/sip/sipaccount.cpp b/src/sip/sipaccount.cpp index eb0450a92fbf6a8a04acf6976c583140fa709778..6eb733aaa05d0ac454aaf818b062c2212b4ce0f2 100644 --- a/src/sip/sipaccount.cpp +++ b/src/sip/sipaccount.cpp @@ -474,8 +474,9 @@ void SIPAccount::usePublishedAddressPortInVIA() void SIPAccount::useUPnPAddressPortInVIA() { - via_addr_.host.ptr = (char *) getUPnPIpAddress().toString().c_str(); - via_addr_.host.slen = getUPnPIpAddress().toString().size(); + upnpIpAddr_ = getUPnPIpAddress().toString(); + via_addr_.host.ptr = (char *) upnpIpAddr_.c_str(); + via_addr_.host.slen = upnpIpAddr_.size(); via_addr_.port = publishedPortUsed_; } diff --git a/src/sip/sipaccount.h b/src/sip/sipaccount.h index cc26564edea584e60b0b12681d31d3e12f25f573..f01fe69dd3cac61e5e2e3c6bcb7da78e36ac4cf3 100644 --- a/src/sip/sipaccount.h +++ b/src/sip/sipaccount.h @@ -768,6 +768,12 @@ class SIPAccount : public SIPAccountBase { */ pjsip_host_port via_addr_; + /** + * Temporary storage for getUPnPIpAddress().toString() + * Used only by useUPnPAddressPortInVIA(). + */ + std::string upnpIpAddr_; + char contactBuffer_[PJSIP_MAX_URL_SIZE]; pj_str_t contact_; int contactRewriteMethod_;