Merged revisions 86149 via svnmerge from
authorRussell Bryant <russell@russellbryant.com>
Wed, 17 Oct 2007 18:01:38 +0000 (18:01 +0000)
committerRussell Bryant <russell@russellbryant.com>
Wed, 17 Oct 2007 18:01:38 +0000 (18:01 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r86149 | russell | 2007-10-17 12:57:45 -0500 (Wed, 17 Oct 2007) | 8 lines

If Asterisk is in the middle of shutting down, respond to OPTIONS
with 503 Unavailable.

(closes issue #10994)
Reported by: eserra
Patches:
      sip-options-503.patch uploaded by eserra (license 45)

........

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

channels/chan_sip.c

index 837b12d..a31f5c5 100644 (file)
@@ -14429,13 +14429,19 @@ static int handle_request_options(struct sip_pvt *p, struct sip_request *req)
 
        res = get_destination(p, req);
        build_contact(p);
+
        /* XXX Should we authenticate OPTIONS? XXX */
+
        if (ast_strlen_zero(p->context))
                ast_string_field_set(p, context, default_context);
-       if (res < 0)
+
+       if (ast_shutting_down())
+               transmit_response_with_allow(p, "503 Unavailable", req, 0);
+       else if (res < 0)
                transmit_response_with_allow(p, "404 Not Found", req, 0);
        else 
                transmit_response_with_allow(p, "200 OK", req, 0);
+
        /* Destroy if this OPTIONS was the opening request, but not if
           it's in the middle of a normal call flow. */
        if (!p->lastinvite)