diff --git a/core/plug-in/session_timer/SessionTimer.cpp b/core/plug-in/session_timer/SessionTimer.cpp index 2bfa8a1c..6eae4d2c 100644 --- a/core/plug-in/session_timer/SessionTimer.cpp +++ b/core/plug-in/session_timer/SessionTimer.cpp @@ -269,6 +269,15 @@ void SessionTimer::updateTimer(AmSession* s, const AmSipRequest& req) { remote_timer_aware = key_in_list(getHeader(req.hdrs, SIP_HDR_SUPPORTED, SIP_HDR_SUPPORTED_COMPACT), TIMER_OPTION_TAG); + /* disable timers for this leg if not declare explicitly (UPDATE only) */ + if (req.method == SIP_METH_UPDATE && !remote_timer_aware) { + /* timer is not supported by originator's leg */ + DBG("Session timer not supported by request originator's leg, remove session timer intervals"); + session_timer_conf.setEnableSessionTimer(false); + removeTimers(s); + return; + } + // determine session interval string sess_expires_hdr = getHeader(req.hdrs, SIP_HDR_SESSION_EXPIRES, @@ -361,8 +370,8 @@ void SessionTimer::updateTimer(AmSession* s, const AmSipReply& reply) TIMER_OPTION_TAG); if (!remote_timer_aware) { - /* timer NOT supported by B leg */ - DBG("Session Timer NOT supported by leg B, removing internal session timer intervals"); + /* timer is not supported by responder's leg */ + DBG("Session timer not supported by responder's leg, remove session timer intervals"); session_timer_conf.setEnableSessionTimer(false); removeTimers(s); return;