Skip to content
Snippets Groups Projects
Commit 91157d5c authored by Mark Michelson's avatar Mark Michelson
Browse files

Fix request routing issue when outboundproxy is used.

Asterisk was incorrectly setting the destination of CANCELs
and ACKs for error responses to the URI of the initial INVITE.
This resulted in further requests, such as INVITEs with authentication
credentials, to be routed incorrectly. Instead, when these CANCEL
or ACKs are to be sent, we should simply keep the destination the
same as what it previously was. There is no need to alter it any.

(closes issue ASTERISK-20008)
Reported by Marcus Hunger
Patches:
	ASTERISK-20008.patch uploaded by Mark Michelson (license #5049)
........

Merged revisions 369066 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 369067 from http://svn.asterisk.org/svn/asterisk/branches/10


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@369068 65c4cc65-6c06-0410-ace0-fbb531ad65f3
parent d73a1de0
Branches
Tags
No related merge requests found
...@@ -10928,10 +10928,9 @@ static int reqprep(struct sip_request *req, struct sip_pvt *p, int sipmethod, ui ...@@ -10928,10 +10928,9 @@ static int reqprep(struct sip_request *req, struct sip_pvt *p, int sipmethod, ui
* final response. For a CANCEL or ACK, we have to send to the same destination * final response. For a CANCEL or ACK, we have to send to the same destination
* as the original INVITE. * as the original INVITE.
*/ */
if (sipmethod == SIP_CANCEL || if (p->route &&
(sipmethod == SIP_ACK && (p->invitestate == INV_COMPLETED || p->invitestate == INV_CANCELLED))) { !(sipmethod == SIP_CANCEL ||
set_destination(p, ast_strdupa(p->uri)); (sipmethod == SIP_ACK && (p->invitestate == INV_COMPLETED || p->invitestate == INV_CANCELLED)))) {
} else if (p->route) {
set_destination(p, p->route->hop); set_destination(p, p->route->hop);
add_route(req, is_strict ? p->route->next : p->route); add_route(req, is_strict ? p->route->next : p->route);
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment