Mercurial > pidgin.yaz
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", |