From cdce296fa0c22f7b3a4d7d5872da0d058478d6c3 Mon Sep 17 00:00:00 2001 From: Nicolas Thill Date: Tue, 7 Jul 2009 01:10:03 +0000 Subject: [PATCH] add 2 fixes backported from asterisk svn related to pickup & transfer (should close: #5451), bump release number SVN-Revision: 16725 --- net/asterisk-1.4.x/Makefile | 2 +- .../patches/801-bug_14206.patch | 13 ++++++ .../patches/802-bug_14611.patch | 46 +++++++++++++++++++ 3 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 net/asterisk-1.4.x/patches/801-bug_14206.patch create mode 100644 net/asterisk-1.4.x/patches/802-bug_14611.patch diff --git a/net/asterisk-1.4.x/Makefile b/net/asterisk-1.4.x/Makefile index 023eaa555..ae4366f13 100644 --- a/net/asterisk-1.4.x/Makefile +++ b/net/asterisk-1.4.x/Makefile @@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=asterisk PKG_VERSION:=1.4.23.1 -PKG_RELEASE:=1.1 +PKG_RELEASE:=1.2 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=http://downloads.digium.com/pub/asterisk/releases/ diff --git a/net/asterisk-1.4.x/patches/801-bug_14206.patch b/net/asterisk-1.4.x/patches/801-bug_14206.patch new file mode 100644 index 000000000..2d6e58b7e --- /dev/null +++ b/net/asterisk-1.4.x/patches/801-bug_14206.patch @@ -0,0 +1,13 @@ +https://issues.asterisk.org/view.php?id=14206 + +--- a/main/channel.c ++++ b/main/channel.c +@@ -3683,7 +3683,7 @@ int ast_do_masquerade(struct ast_channel + /* XXX What about blocking, softhangup, blocker, and lock and blockproc? XXX */ + /* Application and data remain the same */ + /* Clone exception becomes real one, as with fdno */ +- ast_copy_flags(original, clone, AST_FLAG_EXCEPTION | AST_FLAG_OUTGOING); ++ ast_set_flag(original, ast_test_flag(clone, AST_FLAG_OUTGOING | AST_FLAG_EXCEPTION)); + original->fdno = clone->fdno; + /* Schedule context remains the same */ + /* Stream stuff stays the same */ diff --git a/net/asterisk-1.4.x/patches/802-bug_14611.patch b/net/asterisk-1.4.x/patches/802-bug_14611.patch new file mode 100644 index 000000000..fcfb4de98 --- /dev/null +++ b/net/asterisk-1.4.x/patches/802-bug_14611.patch @@ -0,0 +1,46 @@ +https://issues.asterisk.org/view.php?id=14611 + +--- a/channels/chan_sip.c ++++ b/channels/chan_sip.c +@@ -9119,6 +9119,9 @@ static struct sip_pvt *get_sip_pvt_byid_ + if (!strcmp(sip_pvt_ptr->callid, callid)) { + int match = 1; + ++ if (option_debug > 3) ++ ast_log(LOG_DEBUG, "Found call with callid %s (ourtag=%s, theirtag=%s)\n", callid, sip_pvt_ptr->tag, sip_pvt_ptr->theirtag); ++ + /* Go ahead and lock it (and its owner) before returning */ + ast_mutex_lock(&sip_pvt_ptr->lock); + +@@ -9129,16 +9132,21 @@ static struct sip_pvt *get_sip_pvt_byid_ + if (pedanticsipchecking) { + const char *pvt_fromtag, *pvt_totag; + +- if (ast_test_flag(&sip_pvt_ptr->flags[1], SIP_PAGE2_OUTGOING_CALL)) { +- /* Outgoing call tags : from is "our", to is "their" */ +- pvt_fromtag = sip_pvt_ptr->tag ; +- pvt_totag = sip_pvt_ptr->theirtag ; +- } else { +- /* Incoming call tags : from is "their", to is "our" */ +- pvt_fromtag = sip_pvt_ptr->theirtag ; +- pvt_totag = sip_pvt_ptr->tag ; +- } +- if (ast_strlen_zero(fromtag) || strcmp(fromtag, pvt_fromtag) || (!ast_strlen_zero(totag) && strcmp(totag, pvt_totag))) ++ /* RFC 3891 ++ > 3. User Agent Server Behavior: Receiving a Replaces Header ++ > The Replaces header contains information used to match an existing ++ > SIP dialog (call-id, to-tag, and from-tag). Upon receiving an INVITE ++ > with a Replaces header, the User Agent (UA) attempts to match this ++ > information with a confirmed or early dialog. The User Agent Server ++ > (UAS) matches the to-tag and from-tag parameters as if they were tags ++ > present in an incoming request. In other words, the to-tag parameter ++ > is compared to the local tag, and the from-tag parameter is compared ++ > to the remote tag. ++ ++ Thus, the totag is always compared to the local tag, regardless if ++ this our call is an incoming or outgoing call. ++ */ ++ if (ast_strlen_zero(fromtag) || strcmp(fromtag, sip_pvt_ptr->theirtag) || (!ast_strlen_zero(totag) && strcmp(totag, sip_pvt_ptr->tag))) + match = 0; + } + -- 2.30.2