summaryrefslogtreecommitdiff
path: root/channels
diff options
context:
space:
mode:
authorTerry Wilson <twilson@digium.com>2010-12-09 22:19:56 +0000
committerTerry Wilson <twilson@digium.com>2010-12-09 22:19:56 +0000
commit30f81f902d72e077dbc4e4367669012251ab40d7 (patch)
treec06cbac2b06e18ad3a8309ffcc24e7bdc6223408 /channels
parent316add7f12c7d8c55c7919a259b13becfc6ea9f9 (diff)
Merged revisions 297965 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.8 ................ r297965 | twilson | 2010-12-09 16:18:19 -0600 (Thu, 09 Dec 2010) | 28 lines Merged revisions 297960 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r297960 | twilson | 2010-12-09 16:10:31 -0600 (Thu, 09 Dec 2010) | 21 lines 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: https://origsvn.digium.com/svn/asterisk/trunk@297972 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels')
-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 2a0e12865..2751094cb 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -23648,6 +23648,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)