aboutsummaryrefslogtreecommitdiffstats
path: root/channels
diff options
context:
space:
mode:
authoroej <oej@f38db490-d61c-443f-a65b-d21fe96a405b>2008-07-03 16:33:05 +0000
committeroej <oej@f38db490-d61c-443f-a65b-d21fe96a405b>2008-07-03 16:33:05 +0000
commit6eb570316a84a637e62541c487b4909e927a0a04 (patch)
treebaeeeecb8521bc19afe93f57f73a52114974a495 /channels
parent2ced97370d4811970717fcb3034359ae8a8d35c5 (diff)
Merged revisions 127779 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk ........ r127779 | oej | 2008-07-03 18:25:59 +0200 (Tor, 03 Jul 2008) | 4 lines Revert some logic for session timers. We do send in-dialog requests that should not have session-timer require headers, like MESSAGE and REFER. So in the future, only add them on requests and responses that are related to INVITEs and re-INVITEs. ........ git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.0@127790 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels')
-rw-r--r--channels/chan_sip.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index b2cc61428..51c30b11a 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -7339,8 +7339,8 @@ static int respprep(struct sip_request *resp, struct sip_pvt *p, const char *msg
add_header(resp, "Allow", ALLOWED_METHODS);
add_header(resp, "Supported", SUPPORTED_EXTENSIONS);
- /* Add Session-Timers related headers if the feature is active for this session */
- if (p->stimer && p->stimer->st_active == TRUE && p->stimer->st_active_peer_ua == TRUE) {
+ /* 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 && p->stimer->st_active_peer_ua == TRUE) {
char se_hdr[256];
snprintf(se_hdr, sizeof(se_hdr), "%d;refresher=%s", p->stimer->st_interval,
strefresher2str(p->stimer->st_ref));
@@ -7482,10 +7482,12 @@ static int reqprep(struct sip_request *req, struct sip_pvt *p, int sipmethod, in
/* Add Session-Timers related headers if the feature is active for this session.
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. Also, Require: header
- is not applicable for CANCEL method. */
+ 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_ACK && sipmethod != SIP_CANCEL) {
+ && sipmethod == SIP_INVITE) {
char se_hdr[256];
snprintf(se_hdr, sizeof(se_hdr), "%d;refresher=%s", p->stimer->st_interval,
strefresher2str(p->stimer->st_ref));