[asterisk-bugs] [JIRA] (ASTERISK-25469) chan_sip enabled unnegotiated session-timers after reinvite if minse is non-default.
Walter Doekes (JIRA)
noreply at issues.asterisk.org
Fri Oct 16 04:15:33 CDT 2015
Walter Doekes created ASTERISK-25469:
----------------------------------------
Summary: chan_sip enabled unnegotiated session-timers after reinvite if 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
Reporter: Walter Doekes
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