[asterisk-commits] irroot: branch irroot/t38gateway-trunk r321674 - in /team/irroot/t38gateway-t...

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Fri Jun 3 04:53:27 CDT 2011


Author: irroot
Date: Fri Jun  3 04:53:22 2011
New Revision: 321674

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=321674
Log:
automerge enable

Added:
    team/irroot/t38gateway-trunk/include/asterisk/message.h
      - copied unchanged from r321617, trunk/include/asterisk/message.h
    team/irroot/t38gateway-trunk/main/message.c
      - copied unchanged from r321617, trunk/main/message.c
Modified:
    team/irroot/t38gateway-trunk/   (props changed)
    team/irroot/t38gateway-trunk/CHANGES
    team/irroot/t38gateway-trunk/addons/chan_ooh323.c
    team/irroot/t38gateway-trunk/addons/ooh323c/src/oochannels.c
    team/irroot/t38gateway-trunk/addons/ooh323c/src/ooh245.c
    team/irroot/t38gateway-trunk/apps/app_voicemail.c
    team/irroot/t38gateway-trunk/cel/cel_odbc.c   (props changed)
    team/irroot/t38gateway-trunk/configs/cel_odbc.conf.sample   (props changed)
    team/irroot/t38gateway-trunk/configs/jabber.conf.sample
    team/irroot/t38gateway-trunk/configs/sip.conf.sample
    team/irroot/t38gateway-trunk/include/asterisk/_private.h
    team/irroot/t38gateway-trunk/include/asterisk/acl.h
    team/irroot/t38gateway-trunk/include/asterisk/channel.h
    team/irroot/t38gateway-trunk/include/asterisk/dnsmgr.h
    team/irroot/t38gateway-trunk/include/asterisk/jabber.h
    team/irroot/t38gateway-trunk/main/asterisk.c
    team/irroot/t38gateway-trunk/main/cdr.c
    team/irroot/t38gateway-trunk/main/channel.c
    team/irroot/t38gateway-trunk/res/res_jabber.c
    team/irroot/t38gateway-trunk/sounds/Makefile   (props changed)

Propchange: team/irroot/t38gateway-trunk/
------------------------------------------------------------------------------
Binary property 'branch-1.8-merged' - no diff available.

Propchange: team/irroot/t38gateway-trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Jun  3 04:53:22 2011
@@ -1,2 +1,3 @@
 /team/irroot/distrotech-customers-1.8:319062
 /team/irroot/distrotech-customers-trunk:320771
+/trunk:321462-321617

Modified: team/irroot/t38gateway-trunk/CHANGES
URL: http://svnview.digium.com/svn/asterisk/team/irroot/t38gateway-trunk/CHANGES?view=diff&rev=321674&r1=321673&r2=321674
==============================================================================
--- team/irroot/t38gateway-trunk/CHANGES (original)
+++ team/irroot/t38gateway-trunk/CHANGES Fri Jun  3 04:53:22 2011
@@ -11,6 +11,19 @@
 ------------------------------------------------------------------------------
 --- Functionality changes from Asterisk 1.8 to Asterisk 1.10 -----------------
 ------------------------------------------------------------------------------
+
+Text Messaging
+--------------
+ * Asterisk now has protocol independent support for processing text messages
+   outside of a call.  Messages are routed through the Asterisk dialplan.
+   SIP MESSAGE and XMPP are currently supported.  There are options in
+   jabber.conf and sip.conf to allow enabling these features.
+     -> jabber.conf: see the "sendtodialplan" and "context" options.
+     -> sip.conf: see the "accept_outofcall_message" and "auth_message_requests"
+        options.
+   The MESSAGE() dialplan function and MessageSend() application have been
+   added to go along with this functionality.  More detailed usage information
+   can be found on the Asterisk wiki (http://wiki.asterisk.org/).
 
 Parking
 -------

Modified: team/irroot/t38gateway-trunk/addons/chan_ooh323.c
URL: http://svnview.digium.com/svn/asterisk/team/irroot/t38gateway-trunk/addons/chan_ooh323.c?view=diff&rev=321674&r1=321673&r2=321674
==============================================================================
--- team/irroot/t38gateway-trunk/addons/chan_ooh323.c (original)
+++ team/irroot/t38gateway-trunk/addons/chan_ooh323.c Fri Jun  3 04:53:22 2011
@@ -1093,6 +1093,7 @@
 static int ooh323_answer(struct ast_channel *ast)
 {
 	struct ooh323_pvt *p = ast->tech_pvt;
+	char *callToken = (char *)NULL;
 
 	if (gH323Debug)
 		ast_verbose("--- ooh323_answer\n");
@@ -1100,8 +1101,18 @@
 	if (p) {
 
 		ast_mutex_lock(&p->lock);
+		callToken = (p->callToken ? strdup(p->callToken) : NULL);
 		if (ast->_state != AST_STATE_UP) {
 			ast_channel_lock(ast);
+			if (!p->alertsent) {
+	    			if (gH323Debug) {
+					ast_debug(1, "Sending forced ringback for %s, res = %d\n", 
+						callToken, ooManualRingback(callToken));
+				} else {
+	    				ooManualRingback(callToken);
+				}
+				p->alertsent = 1;
+			}
 			ast_setstate(ast, AST_STATE_UP);
       			if (option_debug)
 				ast_debug(1, "ooh323_answer(%s)\n", ast->name);
@@ -1269,6 +1280,7 @@
 				}
 				p->alertsent = 1;
 			}
+			p->alertsent = 1;
 		}
 	 break;
 	case AST_CONTROL_SRCUPDATE:

Modified: team/irroot/t38gateway-trunk/addons/ooh323c/src/oochannels.c
URL: http://svnview.digium.com/svn/asterisk/team/irroot/t38gateway-trunk/addons/ooh323c/src/oochannels.c?view=diff&rev=321674&r1=321673&r2=321674
==============================================================================
--- team/irroot/t38gateway-trunk/addons/ooh323c/src/oochannels.c (original)
+++ team/irroot/t38gateway-trunk/addons/ooh323c/src/oochannels.c Fri Jun  3 04:53:22 2011
@@ -682,10 +682,11 @@
 
     if (0 != call->pH245Channel && 0 != call->pH245Channel->sock)
     {
-     if(call->pH245Channel->outQueue.count>0)
-     {                           
-      if(ooPDWrite(pfds, nfds, call->pH245Channel->sock))
-       ooSendMsg(call, OOH245MSG);
+     if(ooPDWrite(pfds, nfds, call->pH245Channel->sock)) {
+      while (call->pH245Channel->outQueue.count>0) {
+       if (ooSendMsg(call, OOH245MSG) != OO_OK)
+	break;
+      }
      }
     }
     else if(call->h245listener)
@@ -702,20 +703,23 @@
     {
      if(ooPDWrite(pfds, nfds, call->pH225Channel->sock))
      {
-      if(call->pH225Channel->outQueue.count>0)
+      while (call->pH225Channel->outQueue.count>0)
       {
        OOTRACEDBGC3("Sending H225 message (%s, %s)\n", 
                         call->callType, call->callToken);
-       ooSendMsg(call, OOQ931MSG);
+       if (ooSendMsg(call, OOQ931MSG) != OO_OK)
+	break;
       }
       if(call->pH245Channel && 
          call->pH245Channel->outQueue.count>0 && 
-        OO_TESTFLAG (call->flags, OO_M_TUNNELING))
-      {
+        OO_TESTFLAG (call->flags, OO_M_TUNNELING)) {
+       while (call->pH245Channel->outQueue.count>0) {
         OOTRACEDBGC3("H245 message needs to be tunneled. "
                           "(%s, %s)\n", call->callType, 
                                call->callToken);
-        ooSendMsg(call, OOH245MSG);
+        if (ooSendMsg(call, OOH245MSG) != OO_OK)
+	 break;
+       }
       }
      }                                
     }
@@ -1330,7 +1334,7 @@
    {
       OOTRACEDBGA3("Warning:Call marked for cleanup. Can not send message."
                    "(%s, %s)\n", call->callType, call->callToken);
-      return OO_OK;
+      return OO_FAILED;
    }
 
    if(type == OOQ931MSG)

Modified: team/irroot/t38gateway-trunk/addons/ooh323c/src/ooh245.c
URL: http://svnview.digium.com/svn/asterisk/team/irroot/t38gateway-trunk/addons/ooh323c/src/ooh245.c?view=diff&rev=321674&r1=321673&r2=321674
==============================================================================
--- team/irroot/t38gateway-trunk/addons/ooh323c/src/ooh245.c (original)
+++ team/irroot/t38gateway-trunk/addons/ooh323c/src/ooh245.c Fri Jun  3 04:53:22 2011
@@ -2126,6 +2126,8 @@
                ooClearAllLogicalChannels(call);
             }
             ooSendEndSessionCommand(call);
+	    if (call->callState < OO_CALL_CLEAR)
+	        call->callState = OO_CALL_CLEAR;
          }
             
             

Modified: team/irroot/t38gateway-trunk/apps/app_voicemail.c
URL: http://svnview.digium.com/svn/asterisk/team/irroot/t38gateway-trunk/apps/app_voicemail.c?view=diff&rev=321674&r1=321673&r2=321674
==============================================================================
--- team/irroot/t38gateway-trunk/apps/app_voicemail.c (original)
+++ team/irroot/t38gateway-trunk/apps/app_voicemail.c Fri Jun  3 04:53:22 2011
@@ -2177,11 +2177,16 @@
 	int ret; /* for better error checking */
 	char *imap_flags = NIL;
 	int msgcount = (messagecount(vmu->context, vmu->mailbox, "INBOX") + messagecount(vmu->context, vmu->mailbox, "Old"));
-
-    /* Back out early if this is a greeting and we don't want to store greetings in IMAP */
-    if (msgnum < 0 && !imapgreetings) {
-        return 0;
-    }
+	int box = NEW_FOLDER;
+
+	/* Back out early if this is a greeting and we don't want to store greetings in IMAP */
+	if (msgnum < 0) {
+		if(!imapgreetings) {
+			return 0;
+		} else {
+			box = GREETINGS_FOLDER;
+		}
+	}
 
 	if (imap_check_limits(chan, vms, vmu, msgcount)) {
 		return -1;
@@ -2264,9 +2269,9 @@
 	}
 	((char *) buf)[len] = '\0';
 	INIT(&str, mail_string, buf, len);
-	ret = init_mailstream(vms, NEW_FOLDER);
+	ret = init_mailstream(vms, box);
 	if (ret == 0) {
-		imap_mailbox_name(mailbox, sizeof(mailbox), vms, NEW_FOLDER, 1);
+		imap_mailbox_name(mailbox, sizeof(mailbox), vms, box, 1);
 		ast_mutex_lock(&vms->lock);
 		if(!mail_append_full(vms->mailstream, mailbox, imap_flags, NIL, &str))
 			ast_log(LOG_ERROR, "Error while sending the message to %s\n", mailbox);

Propchange: team/irroot/t38gateway-trunk/cel/cel_odbc.c
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Jun  3 04:53:22 2011
@@ -1,3 +1,4 @@
 /be/branches/C.3/cel/cel_adaptive_odbc.c:256426
 /team/irroot/distrotech-customers-1.8/cel/cel_odbc.c:319062
 /team/irroot/distrotech-customers-trunk/cel/cel_odbc.c:320771
+/trunk/cel/cel_odbc.c:321462-321617

Propchange: team/irroot/t38gateway-trunk/configs/cel_odbc.conf.sample
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Jun  3 04:53:22 2011
@@ -1,3 +1,4 @@
 /be/branches/C.3/configs/cel_adaptive_odbc.conf.sample:256426
 /team/irroot/distrotech-customers-1.8/configs/cel_odbc.conf.sample:319062
 /team/irroot/distrotech-customers-trunk/configs/cel_odbc.conf.sample:320771
+/trunk/configs/cel_odbc.conf.sample:321462-321617

Modified: team/irroot/t38gateway-trunk/configs/jabber.conf.sample
URL: http://svnview.digium.com/svn/asterisk/team/irroot/t38gateway-trunk/configs/jabber.conf.sample?view=diff&rev=321674&r1=321673&r2=321674
==============================================================================
--- team/irroot/t38gateway-trunk/configs/jabber.conf.sample (original)
+++ team/irroot/t38gateway-trunk/configs/jabber.conf.sample Fri Jun  3 04:53:22 2011
@@ -34,3 +34,6 @@
 					; Messages stored longer than this value will be deleted by Asterisk.
 					; This option applies to incoming messages only, which are intended to
 					; be processed by the JABBER_RECEIVE dialplan function.
+;sendtodialplan=yes			; Send incoming messages into the dialplan.  Off by default.
+;context=messages			; Dialplan context to send incoming messages to.  If not set,
+					; "default" will be used.

Modified: team/irroot/t38gateway-trunk/configs/sip.conf.sample
URL: http://svnview.digium.com/svn/asterisk/team/irroot/t38gateway-trunk/configs/sip.conf.sample?view=diff&rev=321674&r1=321673&r2=321674
==============================================================================
--- team/irroot/t38gateway-trunk/configs/sip.conf.sample (original)
+++ team/irroot/t38gateway-trunk/configs/sip.conf.sample Fri Jun  3 04:53:22 2011
@@ -384,6 +384,16 @@
 
 ;auth_options_requests = yes    ; Enabling this option will authenticate OPTIONS requests just like
                                 ; INVITE requests are.  By default this option is disabled.
+
+;accept_outofcall_message = no  ; Disable this option to reject all MESSAGE requests outside of a
+                                ; call.  By default, this option is enabled.  When enabled, MESSAGE
+                                ; requests are passed in to the dialplan.
+
+;auth_message_requests = yes    ; Enabling this option will authenticate MESSAGE requests.
+                                ; By default this option is enabled.  However, it can be disabled
+                                ; should an application desire to not load the Asterisk server with
+                                ; doing authentication and implement end to end security in the
+                                ; message body.
 
 ;g726nonstandard = yes          ; If the peer negotiates G726-32 audio, use AAL2 packing
                                 ; order instead of RFC3551 packing order (this is required

Modified: team/irroot/t38gateway-trunk/include/asterisk/_private.h
URL: http://svnview.digium.com/svn/asterisk/team/irroot/t38gateway-trunk/include/asterisk/_private.h?view=diff&rev=321674&r1=321673&r2=321674
==============================================================================
--- team/irroot/t38gateway-trunk/include/asterisk/_private.h (original)
+++ team/irroot/t38gateway-trunk/include/asterisk/_private.h Fri Jun  3 04:53:22 2011
@@ -47,6 +47,7 @@
 int ast_cel_engine_reload(void);	/*!< Provided by cel.c */
 int ast_ssl_init(void);                 /*!< Provided by ssl.c */
 int ast_test_init(void);            /*!< Provided by test.c */
+int ast_msg_init(void);             /*!< Provided by message.c */
 
 /*!
  * \brief Reload asterisk modules.

Modified: team/irroot/t38gateway-trunk/include/asterisk/acl.h
URL: http://svnview.digium.com/svn/asterisk/team/irroot/t38gateway-trunk/include/asterisk/acl.h?view=diff&rev=321674&r1=321673&r2=321674
==============================================================================
--- team/irroot/t38gateway-trunk/include/asterisk/acl.h (original)
+++ team/irroot/t38gateway-trunk/include/asterisk/acl.h Fri Jun  3 04:53:22 2011
@@ -143,7 +143,7 @@
  * then this function acts exactly like a call to ast_get_ip.
  *
  * \param addr The IP address found.  The address family is used as an input parameter to
- * filter the returned adresses. if it is 0, both IPv4 and IPv6 addresses
+ * filter the returned addresses. if it is 0, both IPv4 and IPv6 addresses
  * can be returned.
  *
  * \param value The hostname to look up

Modified: team/irroot/t38gateway-trunk/include/asterisk/channel.h
URL: http://svnview.digium.com/svn/asterisk/team/irroot/t38gateway-trunk/include/asterisk/channel.h?view=diff&rev=321674&r1=321673&r2=321674
==============================================================================
--- team/irroot/t38gateway-trunk/include/asterisk/channel.h (original)
+++ team/irroot/t38gateway-trunk/include/asterisk/channel.h Fri Jun  3 04:53:22 2011
@@ -3496,4 +3496,14 @@
 }
 #endif
 
+/*!
+ * \brief Remove a channel from the global channels container
+ *
+ * \param chan channel to remove
+ *
+ * In a case where it is desired that a channel not be available in any lookups
+ * in the global channels conatiner, use this function.
+ */
+void ast_channel_unlink(struct ast_channel *chan);
+
 #endif /* _ASTERISK_CHANNEL_H */

Modified: team/irroot/t38gateway-trunk/include/asterisk/dnsmgr.h
URL: http://svnview.digium.com/svn/asterisk/team/irroot/t38gateway-trunk/include/asterisk/dnsmgr.h?view=diff&rev=321674&r1=321673&r2=321674
==============================================================================
--- team/irroot/t38gateway-trunk/include/asterisk/dnsmgr.h (original)
+++ team/irroot/t38gateway-trunk/include/asterisk/dnsmgr.h Fri Jun  3 04:53:22 2011
@@ -68,11 +68,13 @@
  * \brief Allocate and initialize a DNS manager entry
  *
  * \param name the hostname
- * \param result where to store the IP address as the DNS manager refreshes it. The address family
- * is used as an input parameter to filter the returned adresses. if it is 0, both IPv4 * and IPv6 addresses can be returned.
+ * \param result where to store the IP address as the DNS manager refreshes it.
+ * The address family is used as an input parameter to filter the returned addresses.
+ * If it is 0, both IPv4 and IPv6 addresses can be returned.
  * \param dnsmgr Where to store the allocate DNS manager entry
  * \param service
  *
+ * \note
  * This function allocates a new DNS manager entry object, and fills it with
  * the provided hostname and IP address.  This function _does_ force an initial
  * lookup, so it may block for some period of time.

Modified: team/irroot/t38gateway-trunk/include/asterisk/jabber.h
URL: http://svnview.digium.com/svn/asterisk/team/irroot/t38gateway-trunk/include/asterisk/jabber.h?view=diff&rev=321674&r1=321673&r2=321674
==============================================================================
--- team/irroot/t38gateway-trunk/include/asterisk/jabber.h (original)
+++ team/irroot/t38gateway-trunk/include/asterisk/jabber.h Fri Jun  3 04:53:22 2011
@@ -157,6 +157,7 @@
 	char name_space[256];
 	char sid[10]; /* Session ID */
 	char mid[6]; /* Message ID */
+	char context[AST_MAX_CONTEXT];
 	iksid *jid;
 	iksparser *p;
 	iksfilter *f;
@@ -179,6 +180,7 @@
 	int message_timeout;
 	int authorized;
 	int distribute_events;
+	int send_to_dialplan;
 	struct ast_flags flags;
 	int component; /* 0 client,  1 component */
 	struct aji_buddy_container buddies;

Modified: team/irroot/t38gateway-trunk/main/asterisk.c
URL: http://svnview.digium.com/svn/asterisk/team/irroot/t38gateway-trunk/main/asterisk.c?view=diff&rev=321674&r1=321673&r2=321674
==============================================================================
--- team/irroot/t38gateway-trunk/main/asterisk.c (original)
+++ team/irroot/t38gateway-trunk/main/asterisk.c Fri Jun  3 04:53:22 2011
@@ -3750,6 +3750,11 @@
 	ast_xmldoc_load_documentation();
 #endif
 
+	if (ast_msg_init()) {
+		printf("%s", term_quit());
+		exit(1);
+	}
+
 	/* initialize the data retrieval API */
 	if (ast_data_init()) {
 		printf ("%s", term_quit());

Modified: team/irroot/t38gateway-trunk/main/cdr.c
URL: http://svnview.digium.com/svn/asterisk/team/irroot/t38gateway-trunk/main/cdr.c?view=diff&rev=321674&r1=321673&r2=321674
==============================================================================
--- team/irroot/t38gateway-trunk/main/cdr.c (original)
+++ team/irroot/t38gateway-trunk/main/cdr.c Fri Jun  3 04:53:22 2011
@@ -111,14 +111,16 @@
 AST_MUTEX_DEFINE_STATIC(cdr_pending_lock);
 static ast_cond_t cdr_pending_cond;
 
-int check_cdr_enabled()
+int check_cdr_enabled(void)
 {
 	return enabled;
 }
 
-/*! Register a CDR driver. Each registered CDR driver generates a CDR
-	\return 0 on success, -1 on failure
-*/
+/*!
+ * \brief Register a CDR driver. Each registered CDR driver generates a CDR
+ * \retval 0 on success.
+ * \retval -1 on error
+ */
 int ast_cdr_register(const char *name, const char *desc, ast_cdrbe be)
 {
 	struct ast_cdr_beitem *i = NULL;

Modified: team/irroot/t38gateway-trunk/main/channel.c
URL: http://svnview.digium.com/svn/asterisk/team/irroot/t38gateway-trunk/main/channel.c?view=diff&rev=321674&r1=321673&r2=321674
==============================================================================
--- team/irroot/t38gateway-trunk/main/channel.c (original)
+++ team/irroot/t38gateway-trunk/main/channel.c Fri Jun  3 04:53:22 2011
@@ -9593,3 +9593,8 @@
 
 	return result;
 }
+
+void ast_channel_unlink(struct ast_channel *chan)
+{
+	ao2_unlink(channels, chan);
+}

Modified: team/irroot/t38gateway-trunk/res/res_jabber.c
URL: http://svnview.digium.com/svn/asterisk/team/irroot/t38gateway-trunk/res/res_jabber.c?view=diff&rev=321674&r1=321673&r2=321674
==============================================================================
--- team/irroot/t38gateway-trunk/res/res_jabber.c (original)
+++ team/irroot/t38gateway-trunk/res/res_jabber.c Fri Jun  3 04:53:22 2011
@@ -60,6 +60,7 @@
 #include "asterisk/manager.h"
 #include "asterisk/event.h"
 #include "asterisk/devicestate.h"
+#include "asterisk/message.h"
 
 /*** DOCUMENTATION
 	<application name="JabberSend" language="en_US">
@@ -373,6 +374,13 @@
 static int aji_register_transport2(void *data, ikspak *pak);
 */
 
+static int msg_send_cb(const struct ast_msg *msg, const char *to, const char *from);
+
+static const struct ast_msg_tech msg_tech = {
+	.name = "xmpp",
+	.msg_send = msg_send_cb,
+};
+
 static struct ast_cli_entry aji_cli[] = {
 	AST_CLI_DEFINE(aji_do_set_debug, "Enable/Disable Jabber debug"),
 	AST_CLI_DEFINE(aji_do_reload, "Reload Jabber configuration"),
@@ -1134,6 +1142,44 @@
 		ast_aji_send_chat(client, args.recipient, args.message);
 	}
 	return 0;
+}
+
+static int msg_send_cb(const struct ast_msg *msg, const char *to, const char *from)
+{
+	struct aji_client *client;
+	char *sender;
+	char *dest;
+	int res;
+
+	sender = ast_strdupa(from);
+	strsep(&sender, ":");
+	dest = ast_strdupa(to);
+	strsep(&dest, ":");
+
+	if (ast_strlen_zero(sender)) {
+		ast_log(LOG_ERROR, "MESSAGE(from) of '%s' invalid for xmpp\n", from);
+		return -1;
+	}
+
+	if (!(client = ast_aji_get_client(sender))) {
+		ast_log(LOG_WARNING, "Could not finder account to send from as '%s'\n", sender);
+		return -1;
+	}
+
+
+	ast_debug(1, "Sending message to '%s' from '%s'\n", dest, client->name);
+
+	res = ast_aji_send_chat(client, dest, ast_msg_get_body(msg));
+	if (res != IKS_OK) {
+		ast_log(LOG_WARNING, "Failed to send xmpp message (%d).\n", res);
+	}
+
+	/* 
+	 * XXX Reference leak here.  See note with ast_aji_get_client() about the problems
+	 * with that function.
+	 */
+
+	return res == IKS_OK ? 0 : -1;
 }
 
 /*!
@@ -2218,6 +2264,7 @@
 {
 	struct aji_message *insert;
 	int deleted = 0;
+	struct ast_msg *msg;
 
 	ast_debug(3, "client %s received a message\n", client->name);
 
@@ -2246,6 +2293,23 @@
 			return;
 		}
 		ast_debug(3, "message comes from %s\n", insert->from);
+	}
+
+	if ((msg = ast_msg_alloc())) {
+		int res;
+
+		res = ast_msg_set_to(msg, "xmpp:%s", client->user);
+		res |= ast_msg_set_from(msg, "xmpp:%s", insert->from);
+		res |= ast_msg_set_body(msg, "%s", insert->message);
+		res |= ast_msg_set_context(msg, "%s", client->context);
+
+		if (res) {
+			ast_msg_destroy(msg);
+		} else {
+			ast_msg_queue(msg);
+		}
+
+		msg = NULL;
 	}
 
 	/* remove old messages received from this JID
@@ -4248,6 +4312,7 @@
 	ASTOBJ_CONTAINER_MARKALL(&client->buddies);
 	ast_copy_string(client->name, label, sizeof(client->name));
 	ast_copy_string(client->mid, "aaaaa", sizeof(client->mid));
+	ast_copy_string(client->context, "default", sizeof(client->context));
 
 	/* Set default values for the client object */
 	client->debug = debug;
@@ -4265,6 +4330,7 @@
 	ast_copy_string(client->statusmessage, "Online and Available", sizeof(client->statusmessage));
 	client->priority = 0;
 	client->status = IKS_SHOW_AVAILABLE;
+	client->send_to_dialplan = 0;
 
 	if (flag) {
 		client->authorized = 0;
@@ -4356,6 +4422,10 @@
 			} else {
 				ast_log(LOG_WARNING, "Unknown presence status: %s\n", var->value);
 			}
+		} else if (!strcasecmp(var->name, "context")) {
+			ast_copy_string(client->context, var->value, sizeof(client->context));
+		} else if (!strcasecmp(var->name, "sendtodialplan")) {
+			client->send_to_dialplan = ast_true(var->value) ? 1 : 0;
 		}
 	/* no transport support in this version */
 	/*	else if (!strcasecmp(var->name, "transport"))
@@ -4553,6 +4623,13 @@
  * (without the resource string)
  * \param name label or JID
  * \return aji_client.
+ *
+ * XXX \bug This function leads to reference leaks all over the place.
+ *          ASTOBJ_CONTAINER_FIND() returns a reference, but if the
+ *          client is found via the traversal, no reference is returned.
+ *          None of the calling code releases references.  This code needs
+ *          to be changed to always return a reference, and all of the users
+ *          need to be fixed to release them.
  */
 struct aji_client *ast_aji_get_client(const char *name)
 {
@@ -4668,7 +4745,7 @@
  */
 static int unload_module(void)
 {
-
+	ast_msg_tech_unregister(&msg_tech);
 	ast_cli_unregister_multiple(aji_cli, ARRAY_LEN(aji_cli));
 	ast_unregister_application(app_ajisend);
 	ast_unregister_application(app_ajisendgroup);
@@ -4721,6 +4798,7 @@
 	ast_cli_register_multiple(aji_cli, ARRAY_LEN(aji_cli));
 	ast_custom_function_register(&jabberstatus_function);
 	ast_custom_function_register(&jabberreceive_function);
+	ast_msg_tech_register(&msg_tech);
 
 	ast_mutex_init(&messagelock);
 	ast_cond_init(&message_received_condition, NULL);

Propchange: team/irroot/t38gateway-trunk/sounds/Makefile
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Jun  3 04:53:22 2011
@@ -1,4 +1,4 @@
 /be/branches/C.3/sounds/Makefile:256426
 /team/irroot/distrotech-customers-1.8/sounds/Makefile:319062
 /team/irroot/distrotech-customers-trunk/sounds/Makefile:320771
-/trunk/sounds/Makefile:270974
+/trunk/sounds/Makefile:270974,321462-321617




More information about the asterisk-commits mailing list