]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Report 200 OK to all in-dialog OPTIONs requests (to confirm that the dialog
authorOlle Johansson <oej@edvina.net>
Tue, 1 Jul 2008 11:51:38 +0000 (11:51 +0000)
committerOlle Johansson <oej@edvina.net>
Tue, 1 Jul 2008 11:51:38 +0000 (11:51 +0000)
exist). Don't bother checking the request URI.

(closes issue #11264)
Reported by: ibc

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@126789 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_sip.c

index 96a61f7a21c97b5af15a24d01d70e4c3a0d35a23..c48f177b52897945ee6860673d956415806cdfcf 100644 (file)
@@ -13584,11 +13584,18 @@ static int handle_request_options(struct sip_pvt *p, struct sip_request *req)
 {
        int res;
 
-       res = get_destination(p, req);
-       build_contact(p);
 
        /* XXX Should we authenticate OPTIONS? XXX */
 
+       if (p->lastinvite) {
+               /* if this is a request in an active dialog, just confirm that the dialog exists. */
+               transmit_response_with_allow(p, "200 OK", req, 0);
+               return 0;
+       }
+
+       res = get_destination(p, req);
+       build_contact(p);
+
        if (ast_strlen_zero(p->context))
                ast_string_field_set(p, context, default_context);
 
@@ -13601,8 +13608,7 @@ static int handle_request_options(struct sip_pvt *p, struct sip_request *req)
 
        /* Destroy if this OPTIONS was the opening request, but not if
           it's in the middle of a normal call flow. */
-       if (!p->lastinvite)
-               sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT);
+       sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT);
 
        return res;
 }