[asterisk-bugs] [JIRA] (ASTERISK-25469) chan_sip enabled unnegotiated session-timers after reINVITE if session-minse is non-default.
Joshua Colp (JIRA)
noreply at issues.asterisk.org
Mon Dec 18 08:56:07 CST 2017
[ https://issues.asterisk.org/jira/browse/ASTERISK-25469?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Joshua Colp updated ASTERISK-25469:
-----------------------------------
Affects Version/s: 13.18.4
> chan_sip enabled unnegotiated session-timers after reINVITE if session-minse is non-default.
> --------------------------------------------------------------------------------------------
>
> Key: ASTERISK-25469
> URL: https://issues.asterisk.org/jira/browse/ASTERISK-25469
> Project: Asterisk
> Issue Type: Bug
> Security Level: None
> Components: Channels/chan_sip/Interoperability
> Affects Versions: 11.20.0, 13.18.4
> Reporter: Walter Doekes
> Attachments: iinv-o200-oinv-i200-oinv-i200-wait-obye.xml
>
>
> If I give Alice these two sip.conf settings:
> {noformat}
> session-minse=91
> session-expires=92
> {noformat}
> If Alice then gets called, and Alice initiates one or more reINVITEs, Asterisk enables session timers. In the 200 to the reINVITEs, Asterisk will add this:
> {noformat}
> Session-Expires: 92;refresher=uac
> {noformat}
> and then it expects reinvites from Alice.
> It seems plausible that the cause should be found here:
> {code}
> /* Add Session-Timers related headers */
> if (st_get_mode(p, 0) == SESSION_TIMER_MODE_ORIGINATE
> || (st_get_mode(p, 0) == SESSION_TIMER_MODE_ACCEPT
> && st_get_se(p, FALSE) != DEFAULT_MIN_SE)) {
> char i2astr[10];
> if (!p->stimer->st_interval) {
> p->stimer->st_interval = st_get_se(p, TRUE);
> }
> p->stimer->st_active = TRUE;
> if (st_get_mode(p, 0) == SESSION_TIMER_MODE_ORIGINATE) {
> snprintf(i2astr, sizeof(i2astr), "%d", p->stimer->st_interval);
> add_header(&req, "Session-Expires", i2astr);
> }
> snprintf(i2astr, sizeof(i2astr), "%d", st_get_se(p, FALSE));
> add_header(&req, "Min-SE", i2astr);
> }
> {code}
> Default mode is SESSION_TIMER_MODE_ACCEPT and the get_mins_se is non-standard, so Asterisk enables session timers.
> When the reINVITE is seen, we get here:
> {noformat}
> /* If this is an invite, add Session-Timers related headers if the feature is active for this session */
> if (p->method == SIP_INVITE && p->stimer && p->stimer->st_active == TRUE) {
> 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 ? "uas" : "uac");
> add_header(resp, "Session-Expires", se_hdr);
> ...
> {noformat}
> The headers get added, and somewhere along the road, the timers get activated too.
> See attached SIPp scenario that trips on the bug.
--
This message was sent by Atlassian JIRA
(v6.2#6252)
More information about the asterisk-bugs
mailing list