diff --git a/core/AmSession.cpp b/core/AmSession.cpp index 200794e7..82eb93cb 100644 --- a/core/AmSession.cpp +++ b/core/AmSession.cpp @@ -676,12 +676,16 @@ void AmSession::sendUpdate() dlg.update(""); } -void AmSession::sendReinvite() -{ - rtp_str.setLocalIP(AmConfig::LocalIP); - string sdp_body; - sdp.genResponse(AmConfig::LocalIP,rtp_str.getLocalPort(),sdp_body); - dlg.reinvite("", "application/sdp", sdp_body); +void AmSession::sendReinvite(bool updateSDP) +{ + if (updateSDP) { + rtp_str.setLocalIP(AmConfig::LocalIP); + string sdp_body; + sdp.genResponse(AmConfig::LocalIP,rtp_str.getLocalPort(),sdp_body); + dlg.reinvite("", "application/sdp", sdp_body); + } else { + dlg.reinvite("", "", ""); + } } void AmSession::sendInvite() diff --git a/core/AmSession.h b/core/AmSession.h index 0e1e764a..4a9236f1 100644 --- a/core/AmSession.h +++ b/core/AmSession.h @@ -264,7 +264,7 @@ public: /** send an UPDATE in the session */ void sendUpdate(); /** send a Re-INVITE (if connected) */ - void sendReinvite(); + void sendReinvite(bool updateSDP = true); /** send an INVITE */ void sendInvite(); diff --git a/core/AmSipDialog.cpp b/core/AmSipDialog.cpp index 80451da3..aa9142fe 100644 --- a/core/AmSipDialog.cpp +++ b/core/AmSipDialog.cpp @@ -583,9 +583,9 @@ int AmSipDialog::sendRequest(const string& method, if((method!="BYE")&&(method!="CANCEL")) msg += getContactHdr(); - if(!hdrs.empty()){ - msg += hdrs; - if(hdrs[hdrs.length()-1] != '\n') + if(!m_hdrs.empty()){ + msg += m_hdrs; + if(m_hdrs[m_hdrs.length()-1] != '\n') msg += "\n"; } diff --git a/core/plug-in/session_timer/SessionTimer.cpp b/core/plug-in/session_timer/SessionTimer.cpp index 53fd7349..b037f491 100644 --- a/core/plug-in/session_timer/SessionTimer.cpp +++ b/core/plug-in/session_timer/SessionTimer.cpp @@ -311,8 +311,9 @@ void SessionTimer::onTimeoutEvent(AmTimeoutEvent* timeout_ev) int timer_id = timeout_ev->data.get(0).asInt(); if (timer_id == ID_SESSION_REFRESH_TIMER) { - if (session_refresher == refresh_local) - s->sendReinvite(); + if (session_refresher == refresh_local) + // send reinvite with SDP + s->sendReinvite(true); else WARN("need session refresh but remote session is refresher\n"); } else if (timer_id == ID_SESSION_INTERVAL_TIMER) {