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
This commit is contained in:
Mark Petersen 2022-02-26 10:07:53 +01:00 committed by Friendly Automation
parent ea02bc3685
commit bb2102a991
2 changed files with 7 additions and 3 deletions

View File

@ -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");

View File

@ -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