comparison 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
comparison
equal deleted inserted replaced
14403:646dcf11b4eb 14404:8ff8f1c897b5
25 25
26 #include "char_conv.h" 26 #include "char_conv.h"
27 #include "crypt.h" 27 #include "crypt.h"
28 #include "group_conv.h" 28 #include "group_conv.h"
29 #include "group_find.h" 29 #include "group_find.h"
30 #include "group_hash.h" 30 #include "group_internal.h"
31 #include "group_im.h" 31 #include "group_im.h"
32 #include "group_info.h" 32 #include "group_info.h"
33 #include "group_join.h" 33 #include "group_join.h"
34 #include "group_network.h" 34 #include "group_network.h"
35 #include "group_opt.h" 35 #include "group_opt.h"
38 #include "send_core.h" 38 #include "send_core.h"
39 #include "utils.h" 39 #include "utils.h"
40 40
41 enum { 41 enum {
42 QQ_GROUP_CMD_REPLY_OK = 0x00, 42 QQ_GROUP_CMD_REPLY_OK = 0x00,
43 QQ_GROUP_CMD_REPLY_SEARCH_ERROR = 0x02,
43 QQ_GROUP_CMD_REPLY_NOT_MEMBER = 0x0a 44 QQ_GROUP_CMD_REPLY_NOT_MEMBER = 0x0a
44 }; 45 };
45 46
46 const gchar *qq_group_cmd_get_desc(qq_group_cmd cmd) 47 const gchar *qq_group_cmd_get_desc(qq_group_cmd cmd)
47 { 48 {
152 bytes = 0; 153 bytes = 0;
153 cursor = data; 154 cursor = data;
154 bytes += read_packet_b(data, &cursor, len, &sub_cmd); 155 bytes += read_packet_b(data, &cursor, len, &sub_cmd);
155 bytes += read_packet_b(data, &cursor, len, &reply); 156 bytes += read_packet_b(data, &cursor, len, &reply);
156 157
157 group = qq_group_find_by_internal_group_id(gc, internal_group_id); 158 group = qq_group_find_by_id(gc, internal_group_id, QQ_INTERNAL_ID);
158 159
159 if (reply != QQ_GROUP_CMD_REPLY_OK) { 160 if (reply != QQ_GROUP_CMD_REPLY_OK) {
160 gaim_debug(GAIM_DEBUG_WARNING, "QQ", 161 gaim_debug(GAIM_DEBUG_WARNING, "QQ",
161 "Group cmd reply says cmd %s fails\n", qq_group_cmd_get_desc(sub_cmd)); 162 "Group cmd reply says cmd %s fails\n", qq_group_cmd_get_desc(sub_cmd));
163
164 if (group != NULL)
165 qq_set_pending_id(&qd->joining_groups, group->external_group_id, FALSE);
166
162 switch (reply) { /* this should be all errors */ 167 switch (reply) { /* this should be all errors */
163 case QQ_GROUP_CMD_REPLY_NOT_MEMBER: 168 case QQ_GROUP_CMD_REPLY_NOT_MEMBER:
164 if (group != NULL) { 169 if (group != NULL) {
165 gaim_debug(GAIM_DEBUG_WARNING, 170 gaim_debug(GAIM_DEBUG_WARNING,
166 "QQ", 171 "QQ",
167 "You are not a member of group \"%s\"\n", group->group_name_utf8); 172 "You are not a member of group \"%s\"\n", group->group_name_utf8);
168 group->my_status = QQ_GROUP_MEMBER_STATUS_NOT_MEMBER; 173 group->my_status = QQ_GROUP_MEMBER_STATUS_NOT_MEMBER;
169 qq_group_refresh(gc, group); 174 qq_group_refresh(gc, group);
170 } 175 }
171 break; 176 break;
177 case QQ_GROUP_CMD_REPLY_SEARCH_ERROR:
178 if (qd->roomlist != NULL) {
179 if (gaim_roomlist_get_in_progress(qd->roomlist))
180 gaim_roomlist_set_in_progress(qd->roomlist, FALSE);
181 }
182 _qq_process_group_cmd_reply_error_default(reply, cursor, len - bytes, gc);
183 break;
172 default: 184 default:
173 _qq_process_group_cmd_reply_error_default(reply, cursor, len - bytes, gc); 185 _qq_process_group_cmd_reply_error_default(reply, cursor, len - bytes, gc);
174 } 186 }
175 return; 187 return;
176 } 188 }
177 189
178 /* seems to ok so far, so we process the reply according to sub_cmd */ 190 /* seems ok so far, so we process the reply according to sub_cmd */
179 switch (sub_cmd) { 191 switch (sub_cmd) {
180 case QQ_GROUP_CMD_GET_GROUP_INFO: 192 case QQ_GROUP_CMD_GET_GROUP_INFO:
181 qq_process_group_cmd_get_group_info(data, &cursor, len, gc); 193 qq_process_group_cmd_get_group_info(data, &cursor, len, gc);
182 if (group != NULL) { 194 if (group != NULL) {
183 qq_send_cmd_group_get_member_info(gc, group); 195 qq_send_cmd_group_get_members_info(gc, group);
184 qq_send_cmd_group_get_online_member(gc, group); 196 qq_send_cmd_group_get_online_members(gc, group);
185 } 197 }
186 break; 198 break;
187 case QQ_GROUP_CMD_CREATE_GROUP: 199 case QQ_GROUP_CMD_CREATE_GROUP:
188 qq_group_process_create_group_reply(data, &cursor, len, gc); 200 qq_group_process_create_group_reply(data, &cursor, len, gc);
189 break; 201 break;
210 break; 222 break;
211 case QQ_GROUP_CMD_SEND_MSG: 223 case QQ_GROUP_CMD_SEND_MSG:
212 qq_process_group_cmd_im(data, &cursor, len, gc); 224 qq_process_group_cmd_im(data, &cursor, len, gc);
213 break; 225 break;
214 case QQ_GROUP_CMD_GET_ONLINE_MEMBER: 226 case QQ_GROUP_CMD_GET_ONLINE_MEMBER:
215 qq_process_group_cmd_get_online_member(data, &cursor, len, gc); 227 qq_process_group_cmd_get_online_members(data, &cursor, len, gc);
216 if (group != NULL) 228 if (group != NULL)
217 qq_group_conv_refresh_online_member(gc, group); 229 qq_group_conv_refresh_online_member(gc, group);
218 break; 230 break;
219 case QQ_GROUP_CMD_GET_MEMBER_INFO: 231 case QQ_GROUP_CMD_GET_MEMBER_INFO:
220 qq_process_group_cmd_get_member_info(data, &cursor, len, gc); 232 qq_process_group_cmd_get_members_info(data, &cursor, len, gc);
221 if (group != NULL) 233 if (group != NULL)
222 qq_group_conv_refresh_online_member(gc, group); 234 qq_group_conv_refresh_online_member(gc, group);
223 break; 235 break;
224 default: 236 default:
225 gaim_debug(GAIM_DEBUG_WARNING, "QQ", 237 gaim_debug(GAIM_DEBUG_WARNING, "QQ",