From: Mark Petersen Date: Sat, 26 Feb 2022 09:07:53 +0000 (+0100) Subject: chan_sip.c Session timers get removed on UPDATE X-Git-Tag: 18.12.0-rc1~15 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bb2102a9917b0c2ab86a8fccb73dce230f9a5cfc;p=thirdparty%2Fasterisk.git chan_sip.c Session timers get removed on UPDATE If Asterisk receives a SIP REFER with Session-Timers UAC maintain Session-Timers when sending UPDATE" ASTERISK-29843 Change-Id: I8e9a21c13bf757fa34d778f49ba3cf859b29ae5c --- diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 49602070cf..0c2dc5c5f6 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -12505,11 +12505,9 @@ static int reqprep(struct sip_request *req, struct sip_pvt *p, int sipmethod, ui An exception to this behavior is the ACK request. Since Asterisk never requires session-timers support from a remote end-point (UAS) in an INVITE, it must not send 'Require: timer' header in the ACK request. - This should only be added in the INVITE transactions, not MESSAGE or REFER or other - in-dialog messages. */ if (p->stimer && p->stimer->st_active == TRUE && p->stimer->st_active_peer_ua == TRUE - && sipmethod == SIP_INVITE) { + && (sipmethod == SIP_INVITE || sipmethod == SIP_UPDATE)) { char se_hdr[256]; snprintf(se_hdr, sizeof(se_hdr), "%d;refresher=%s", p->stimer->st_interval, p->stimer->st_ref == SESSION_TIMER_REFRESHER_US ? "uac" : "uas"); diff --git a/doc/CHANGES-staging/chan_sip_session-timer_on_update.txt b/doc/CHANGES-staging/chan_sip_session-timer_on_update.txt new file mode 100644 index 0000000000..259782f518 --- /dev/null +++ b/doc/CHANGES-staging/chan_sip_session-timer_on_update.txt @@ -0,0 +1,6 @@ +Subject: chan_sip + +Session timers get removed on UPDATE +Fix if Asterisk receives a SIP REFER with Session-Timers UAC +that Asterisk maintains Session-Timers when sending UPDATE request +