From: Alexander Traud Date: Mon, 3 Apr 2017 07:30:43 +0000 (+0200) Subject: chan_sip: Session Timers required but refused wrongly. X-Git-Tag: 13.16.0-rc1~56^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=94bd529f9e398c8df9e7855fabd69fa4ec6d2ef6;p=thirdparty%2Fasterisk.git chan_sip: Session Timers required but refused wrongly. SIP user-agents indicate which protocol extensions are allowed in headers like Supported and Required. Such protocol extensions are Session Timers (RFC 4028) for example. Session Timers are supported since Mantis-10665. Since ASTERISK-21721, not only the first but multiple Supported/Required headers in a message are parsed. In that change, an existing variable was re-used within a newly added do-loop. Currently, at the end of that loop, that variable is an empty string always. Previously, that variable was used within log output. However, the log output was not changed. ASTERISK-26915 #close Change-Id: I09315f31b4d78fb214bb2a9fb6c0f5e143eae990 --- diff --git a/channels/chan_sip.c b/channels/chan_sip.c index a67ad634ca..96c3b8026f 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -25769,8 +25769,7 @@ static int handle_request_update(struct sip_pvt *p, struct sip_request *req) * \retval 0 ok * \retval -1 failure */ -static int handle_request_invite_st(struct sip_pvt *p, struct sip_request *req, - const char *required, int reinvite) +static int handle_request_invite_st(struct sip_pvt *p, struct sip_request *req, int reinvite) { const char *p_uac_se_hdr; /* UAC's Session-Expires header string */ const char *p_uac_min_se; /* UAC's requested Min-SE interval (char string) */ @@ -25850,8 +25849,8 @@ static int handle_request_invite_st(struct sip_pvt *p, struct sip_request *req, case SESSION_TIMER_MODE_REFUSE: if (p->reqsipoptions & SIP_OPT_TIMER) { - transmit_response_with_unsupported(p, "420 Option Disabled", req, required); - ast_log(LOG_WARNING, "Received SIP INVITE with supported but disabled option: %s\n", required); + transmit_response_with_unsupported(p, "420 Option Disabled", req, "timer"); + ast_log(LOG_WARNING, "Received SIP INVITE with supported but disabled option: timer\n"); return -1; } break; @@ -25957,7 +25956,7 @@ static int handle_request_invite(struct sip_pvt *p, struct sip_request *req, str * then send a 420 with only those unsupported options listed */ if (!ast_strlen_zero(unsupported)) { transmit_response_with_unsupported(p, "420 Bad extension (unsupported)", req, unsupported); - ast_log(LOG_WARNING, "Received SIP INVITE with unsupported required extension: required:%s unsupported:%s\n", required, unsupported); + ast_log(LOG_WARNING, "Received SIP INVITE with unsupported required extension: %s\n", unsupported); p->invitestate = INV_COMPLETED; if (!p->lastinvite) { sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT); @@ -26395,7 +26394,7 @@ static int handle_request_invite(struct sip_pvt *p, struct sip_request *req, str make_our_tag(p); - if (handle_request_invite_st(p, req, required, reinvite)) { + if (handle_request_invite_st(p, req, reinvite)) { p->invitestate = INV_COMPLETED; sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT); res = INV_REQ_ERROR; @@ -26437,7 +26436,7 @@ static int handle_request_invite(struct sip_pvt *p, struct sip_request *req, str if (!req->ignore) reinvite = 1; - if (handle_request_invite_st(p, req, required, reinvite)) { + if (handle_request_invite_st(p, req, reinvite)) { p->invitestate = INV_COMPLETED; if (!p->lastinvite) { sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT);