Merged revisions 333266 via svnmerge from
authorJonathan Rose <jrose@digium.com>
Thu, 25 Aug 2011 19:13:23 +0000 (19:13 +0000)
committerJonathan Rose <jrose@digium.com>
Thu, 25 Aug 2011 19:13:23 +0000 (19:13 +0000)
https://origsvn.digium.com/svn/asterisk/branches/10

................
  r333266 | jrose | 2011-08-25 14:00:05 -0500 (Thu, 25 Aug 2011) | 20 lines

  Merged revisions 333265 via svnmerge from
  https://origsvn.digium.com/svn/asterisk/branches/1.8

  ........
    r333265 | jrose | 2011-08-25 13:47:42 -0500 (Thu, 25 Aug 2011) | 14 lines

    Segfault when publishing device states via XMPP and not connected

    When using publishing device state with res_jabber, Asterisk will attempt
    to send a device state using the unconnected client using iks_send_raw
    and crash. This patch checks the validity of the connection before
    attempting to send the device state.

    (closes issue ASTERISK-18078)
    Reported by: Michael L. Young
    Patches:
          res_jabber-segfault-pubsub-not-connected2.patch (license #5026) patch uploaded by Michael L. Young
    Tested by: Jonathan Rose
  ........
................

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

res/res_jabber.c

index 838b6c3..bfbdc7d 100644 (file)
@@ -1511,7 +1511,15 @@ static int aji_send_raw(struct aji_client *client, const char *xmlstr)
 #endif
        /* If needed, data will be sent unencrypted, and logHook will
           be called inside iks_send_raw */
-       ret = iks_send_raw(client->p, xmlstr);
+       if((client->timeout != 0 && client->status == AJI_CONNECTED) || (client->status == AJI_CONNECTING))
+       {
+           ret = iks_send_raw(client->p, xmlstr);
+       }
+       else {
+               ast_log(LOG_WARNING, "JABBER: Unable to send message to %s, we are not connected", client->name);
+               return -1;
+       }
+
        if (ret != IKS_OK) {
                return ret;
        }