The -1 return value from incomplete or improper
authorMark Michelson <mmichelson@digium.com>
Fri, 22 Aug 2008 20:20:58 +0000 (20:20 +0000)
committerMark Michelson <mmichelson@digium.com>
Fri, 22 Aug 2008 20:20:58 +0000 (20:20 +0000)
headers for the SipNotify manager command was
causing the current manager session to become
disconnected. Change the return value to 0 for
these cases.

Also change a test for a NULL pointer to be
ast_strlen_zero instead.

(closes issue #13351)
Reported by: Laureano
Patches:
      sipnotify_action_fix.patch uploaded by Laureano (license 265)

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

channels/chan_sip.c

index 48360ad..3bec6f8 100644 (file)
@@ -9470,9 +9470,9 @@ static int manager_sipnotify(struct mansession *s, const struct message *m)
        struct ast_variable *vars = astman_get_variables(m);
        struct sip_pvt *p;
 
-       if (!channame) {
+       if (ast_strlen_zero(channame)) {
                astman_send_error(s, m, "SIPNotify requires a channel name");
-               return -1;
+               return 0;
        }
 
        if (!strncasecmp(channame, "sip/", 4)) {
@@ -9481,7 +9481,7 @@ static int manager_sipnotify(struct mansession *s, const struct message *m)
 
        if (!(p = sip_alloc(NULL, NULL, 0, SIP_NOTIFY))) {
                astman_send_error(s, m, "Unable to build sip pvt data for notify (memory/socket error)");
-               return -1;
+               return 0;
        }
 
        if (create_addr(p, channame, NULL, 0)) {
@@ -9490,7 +9490,7 @@ static int manager_sipnotify(struct mansession *s, const struct message *m)
                dialog_unref(p, "unref dialog inside for loop" );
                /* sip_destroy(p); */
                astman_send_error(s, m, "Could not create address");
-               return -1;
+               return 0;
        }
 
        /* Notify is outgoing call */