diff libgaim/protocols/qq/group_network.c @ 14404:8ff8f1c897b5

[gaim-migrate @ 17112] Fixed chat support. committer: Tailor Script <tailor@pidgin.im>
author Mark Huetsch <markhuetsch>
date Fri, 01 Sep 2006 11:03:18 +0000
parents 60b1bc8dbf37
children 6b8bc59414f0
line wrap: on
line diff
--- a/libgaim/protocols/qq/group_network.c	Fri Sep 01 10:05:30 2006 +0000
+++ b/libgaim/protocols/qq/group_network.c	Fri Sep 01 11:03:18 2006 +0000
@@ -27,7 +27,7 @@
 #include "crypt.h"
 #include "group_conv.h"
 #include "group_find.h"
-#include "group_hash.h"
+#include "group_internal.h"
 #include "group_im.h"
 #include "group_info.h"
 #include "group_join.h"
@@ -40,6 +40,7 @@
 
 enum {
 	QQ_GROUP_CMD_REPLY_OK = 0x00,
+	QQ_GROUP_CMD_REPLY_SEARCH_ERROR = 0x02,
 	QQ_GROUP_CMD_REPLY_NOT_MEMBER = 0x0a
 };
 
@@ -154,11 +155,15 @@
 		bytes += read_packet_b(data, &cursor, len, &sub_cmd);
 		bytes += read_packet_b(data, &cursor, len, &reply);
 
-		group = qq_group_find_by_internal_group_id(gc, internal_group_id);
+		group = qq_group_find_by_id(gc, internal_group_id, QQ_INTERNAL_ID);
 
 		if (reply != QQ_GROUP_CMD_REPLY_OK) {
 			gaim_debug(GAIM_DEBUG_WARNING, "QQ",
 				   "Group cmd reply says cmd %s fails\n", qq_group_cmd_get_desc(sub_cmd));
+
+			if (group != NULL)
+				qq_set_pending_id(&qd->joining_groups, group->external_group_id, FALSE);
+
 			switch (reply) {	/* this should be all errors */
 			case QQ_GROUP_CMD_REPLY_NOT_MEMBER:
 				if (group != NULL) {
@@ -169,19 +174,26 @@
 					qq_group_refresh(gc, group);
 				}
 				break;
+			case QQ_GROUP_CMD_REPLY_SEARCH_ERROR:
+				if (qd->roomlist != NULL) {
+					if (gaim_roomlist_get_in_progress(qd->roomlist))
+						gaim_roomlist_set_in_progress(qd->roomlist, FALSE);
+				}
+				_qq_process_group_cmd_reply_error_default(reply, cursor, len - bytes, gc);
+				break;
 			default:
 				_qq_process_group_cmd_reply_error_default(reply, cursor, len - bytes, gc);
 			}
 			return;
 		}
 
-		/* seems to ok so far, so we process the reply according to sub_cmd */
+		/* seems ok so far, so we process the reply according to sub_cmd */
 		switch (sub_cmd) {
 		case QQ_GROUP_CMD_GET_GROUP_INFO:
 			qq_process_group_cmd_get_group_info(data, &cursor, len, gc);
 			if (group != NULL) {
-				qq_send_cmd_group_get_member_info(gc, group);
-				qq_send_cmd_group_get_online_member(gc, group);
+				qq_send_cmd_group_get_members_info(gc, group);
+				qq_send_cmd_group_get_online_members(gc, group);
 			}
 			break;
 		case QQ_GROUP_CMD_CREATE_GROUP:
@@ -212,12 +224,12 @@
 			qq_process_group_cmd_im(data, &cursor, len, gc);
 			break;
 		case QQ_GROUP_CMD_GET_ONLINE_MEMBER:
-			qq_process_group_cmd_get_online_member(data, &cursor, len, gc);
+			qq_process_group_cmd_get_online_members(data, &cursor, len, gc);
 			if (group != NULL)
 				qq_group_conv_refresh_online_member(gc, group);
 			break;
 		case QQ_GROUP_CMD_GET_MEMBER_INFO:
-			qq_process_group_cmd_get_member_info(data, &cursor, len, gc);
+			qq_process_group_cmd_get_members_info(data, &cursor, len, gc);
 			if (group != NULL)
 				qq_group_conv_refresh_online_member(gc, group);
 			break;