[asterisk-commits] phsultan: branch 1.4 r105209 - /branches/1.4/res/res_jabber.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Fri Feb 29 07:05:16 CST 2008


Author: phsultan
Date: Fri Feb 29 07:05:15 2008
New Revision: 105209

URL: http://svn.digium.com/view/asterisk?view=rev&rev=105209
Log:
Automatically create new buddy upon reception of a presence stanza of
type subscribed.

(closes issue #12066)
Reported by: ffadaie
Patches:
      branch-1.4-12066-1.diff uploaded by phsultan (license 73)
      trunk-12066-1.diff uploaded by phsultan (license 73)
Tested by: ffadaie, phsultan

Modified:
    branches/1.4/res/res_jabber.c

Modified: branches/1.4/res/res_jabber.c
URL: http://svn.digium.com/view/asterisk/branches/1.4/res/res_jabber.c?view=diff&rev=105209&r1=105208&r2=105209
==============================================================================
--- branches/1.4/res/res_jabber.c (original)
+++ branches/1.4/res/res_jabber.c Fri Feb 29 07:05:15 2008
@@ -1385,8 +1385,11 @@
  */
 static void aji_handle_subscribe(struct aji_client *client, ikspak *pak)
 {
-	if(pak->subtype == IKS_TYPE_SUBSCRIBE) { 
-		iks *presence = NULL, *status = NULL;
+	iks *presence = NULL, *status = NULL;
+	struct aji_buddy* buddy = NULL;
+
+	switch (pak->subtype) { 
+	case IKS_TYPE_SUBSCRIBE:
 		presence = iks_new("presence");
 		status = iks_new("status");
 		if(presence && status) {
@@ -1406,24 +1409,14 @@
 			iks_delete(status);
 		if(client->component)
 			aji_set_presence(client, pak->from->full, iks_find_attrib(pak->x, "to"), 1, client->statusmessage);
-	}
-	if (option_verbose > 4) {
-		switch (pak->subtype) {
-		case IKS_TYPE_SUBSCRIBE:
+	case IKS_TYPE_SUBSCRIBED:
+		buddy = ASTOBJ_CONTAINER_FIND(&client->buddies, pak->from->partial);
+		if (!buddy && pak->from->partial) {
+			aji_create_buddy(pak->from->partial, client);
+		}
+	default:
+		if (option_verbose > 4) {
 			ast_verbose(VERBOSE_PREFIX_3 "JABBER: This is a subcription of type %i\n", pak->subtype);
-			break;
-		case IKS_TYPE_SUBSCRIBED:
-			ast_verbose(VERBOSE_PREFIX_3 "JABBER: This is a subcription of type %i\n", pak->subtype);
-			break;
-		case IKS_TYPE_UNSUBSCRIBE:
-			ast_verbose(VERBOSE_PREFIX_3 "JABBER: This is a subcription of type %i\n", pak->subtype);
-			break;
-		case IKS_TYPE_UNSUBSCRIBED:
-			ast_verbose(VERBOSE_PREFIX_3 "JABBER: This is a subcription of type %i\n", pak->subtype);
-			break;
-		default:				/*IKS_TYPE_ERROR: */
-			ast_verbose(VERBOSE_PREFIX_3 "JABBER: This is a subcription of type %i\n", pak->subtype);
-			break;
 		}
 	}
 }




More information about the asterisk-commits mailing list