aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortwilson <twilson@f38db490-d61c-443f-a65b-d21fe96a405b>2010-12-09 22:10:31 +0000
committertwilson <twilson@f38db490-d61c-443f-a65b-d21fe96a405b>2010-12-09 22:10:31 +0000
commit3f56f113018416a00676e0b8beb45bdeade351c7 (patch)
treec73bda014b9dc449c471b34bbce30071f2dbff9b
parentdd15f8d4fdb92525d77005fdfa33038dfbbdd357 (diff)
Merged revisions 297959 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r297959 | twilson | 2010-12-09 16:00:30 -0600 (Thu, 09 Dec 2010) | 14 lines Ignore spurious REGISTER requests If a REGISTER request with a Call-ID matching an existing transaction is received it was possible that the REGISTER request would overwrite the initreq of the private structure. This info is used to generate messages for other responses in the transaction. This patch ignores REGISTER requests that match non-REGISTER transactions. (closes issue #18051) Reported by: eeman Tested by: twilson Review: https://reviewboard.asterisk.org/r/1050/ ........ git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.2@297960 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r--channels/chan_sip.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index b4068dd84..80e8b7544 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -21775,6 +21775,13 @@ static int handle_request_register(struct sip_pvt *p, struct sip_request *req, s
{
enum check_auth_result res;
+ /* If this is not the intial request, and the initial request isn't
+ * a register, something screwy happened, so bail */
+ if (p->initreq.headers && p->initreq.method != SIP_REGISTER) {
+ ast_log(LOG_WARNING, "Ignoring spurious REGISTER with Call-ID: %s\n", p->callid);
+ return -1;
+ }
+
/* Use this as the basis */
copy_request(&p->initreq, req);
if (sipdebug)