]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Add 'ignoreoodreplies' option which will not create a pvt structure on a SIP response...
authorJoshua Colp <jcolp@digium.com>
Mon, 16 Oct 2006 19:28:18 +0000 (19:28 +0000)
committerJoshua Colp <jcolp@digium.com>
Mon, 16 Oct 2006 19:28:18 +0000 (19:28 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@45260 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_sip.c
configs/sip.conf.sample

index 722a94ec2559a821d159ff13438010f7c47c7f39..d7983cca4f60b3812cae451075bd5a7ee2a13643 100644 (file)
@@ -373,6 +373,8 @@ static int global_rtpkeepalive = 0;
 static int global_reg_timeout = DEFAULT_REGISTRATION_TIMEOUT;  
 static int global_regattempts_max = 0;
 
+static int global_ignoreoodreplies = 1;
+
 /* Object counters */
 static int suserobjs = 0;
 static int ruserobjs = 0;
@@ -3238,6 +3240,11 @@ static struct sip_pvt *find_call(struct sip_request *req, struct sockaddr_in *si
                p = p->next;
        }
        ast_mutex_unlock(&iflock);
+
+       /* If this is a response and we have ignoring of out of dialog replies turned, then drop it */
+       if (req->method == SIP_RESPONSE && global_ignoreoodreplies)
+               return NULL;
+
        p = sip_alloc(callid, sin, 1, intended_method);
        if (p)
                ast_mutex_lock(&p->lock);
@@ -8304,6 +8311,7 @@ static int sip_show_settings(int fd, int argc, char *argv[])
        ast_cli(fd, "  Videosupport:           %s\n", videosupport ? "Yes" : "No");
        ast_cli(fd, "  AutoCreatePeer:         %s\n", autocreatepeer ? "Yes" : "No");
        ast_cli(fd, "  Allow unknown access:   %s\n", global_allowguest ? "Yes" : "No");
+       ast_cli(fd, "  Drop misc replies:      %s\n", global_ignoreoodreplies ? "Yes" : "No");
        ast_cli(fd, "  Promsic. redir:         %s\n", ast_test_flag(&global_flags, SIP_PROMISCREDIR) ? "Yes" : "No");
        ast_cli(fd, "  SIP domain support:     %s\n", AST_LIST_EMPTY(&domain_list) ? "No" : "Yes");
        ast_cli(fd, "  Call to non-local dom.: %s\n", allow_external_domains ? "Yes" : "No");
@@ -11947,6 +11955,11 @@ static int handle_common_options(struct ast_flags *flags, struct ast_flags *mask
                ast_set_flag(mask, SIP_PROMISCREDIR);
                ast_set2_flag(flags, ast_true(v->value), SIP_PROMISCREDIR);
                res = 1;
+       } else if (!strcasecmp(v->name, "ignoreoodreplies")) {
+               if (ast_true(v->value))
+                       global_ignoreoodreplies = 1;
+               else
+                       global_ignoreoodreplies = 0;
        }
 
        return res;
@@ -12599,6 +12612,7 @@ static int reload_config(void)
        tos = 0;
        expiry = DEFAULT_EXPIRY;
        global_allowguest = 1;
+       global_ignoreoodreplies = 1;
 
        /* Read the [general] config section of sip.conf (or from realtime config) */
        v = ast_variable_browse(cfg, "general");
index 1b16543efee52dd12c8001f9030cd018ac21fbd2..d51a765d0eb8fdc6d4797f2ba446dfd6075b3a1b 100644 (file)
@@ -111,7 +111,7 @@ srvlookup=yes                       ; Enable DNS SRV lookups on outbound calls
                                ; for any reason, always reject with '401 Unauthorized'
                                ; instead of letting the requester know whether there was
                                ; a matching user or peer for their request
-
+;ignoreoodreplies = no          ; If no then out of dialog replies will not be ignored
 ;
 ; If regcontext is specified, Asterisk will dynamically create and destroy a
 ; NoOp priority 1 extension for a given peer who registers or unregisters with