Mercurial > pidgin.yaz
comparison src/protocols/qq/group_info.c @ 14021:ef8490f9e823
[gaim-migrate @ 16618]
Replaced all C++-style comments with C-style ones.
Cleaned up some comments and implemented a more consistent formatting scheme.
committer: Tailor Script <tailor@pidgin.im>
author | Mark Huetsch <markhuetsch> |
---|---|
date | Wed, 02 Aug 2006 15:35:36 +0000 |
parents | 983fd420e86b |
children | 32a71e64ceae |
comparison
equal
deleted
inserted
replaced
14020:13e7ba964993 | 14021:ef8490f9e823 |
---|---|
18 * You should have received a copy of the GNU General Public License | 18 * You should have received a copy of the GNU General Public License |
19 * along with this program; if not, write to the Free Software | 19 * along with this program; if not, write to the Free Software |
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | 20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
21 */ | 21 */ |
22 | 22 |
23 // START OF FILE | 23 #include "conversation.h" |
24 /*****************************************************************************/ | 24 #include "debug.h" |
25 #include "debug.h" // gaim_debug | 25 |
26 #include "conversation.h" // gaim_find_conversation_with_account | 26 #include "buddy_status.h" |
27 | 27 #include "char_conv.h" |
28 #include "buddy_status.h" // QQ_BUDDY_ONLINE_NORMAL | 28 #include "group_find.h" |
29 #include "char_conv.h" // convert_as_pascal_string | 29 #include "group_hash.h" |
30 #include "group_find.h" // qq_group_find_by_internal_group_id | |
31 #include "group_hash.h" // qq_group_refresh | |
32 #include "group_info.h" | 30 #include "group_info.h" |
33 #include "buddy_status.h" // is_online | 31 #include "buddy_status.h" |
34 #include "group_network.h" // qq_send_group_cmd | 32 #include "group_network.h" |
35 | 33 |
36 // we check who needs to update member info every minutes | 34 /* we check who needs to update member info every minutes |
37 // this interval determines if their member info is outdated | 35 * this interval determines if their member info is outdated */ |
38 #define QQ_GROUP_CHAT_REFRESH_NICKNAME_INTERNAL 180 | 36 #define QQ_GROUP_CHAT_REFRESH_NICKNAME_INTERNAL 180 |
39 | 37 |
40 /*****************************************************************************/ | 38 static gboolean _is_group_member_need_update_info(qq_buddy *member) |
41 static gboolean _is_group_member_need_update_info(qq_buddy * member) | |
42 { | 39 { |
43 g_return_val_if_fail(member != NULL, FALSE); | 40 g_return_val_if_fail(member != NULL, FALSE); |
44 return (member->nickname == NULL) || | 41 return (member->nickname == NULL) || |
45 (time(NULL) - member->last_refresh) > QQ_GROUP_CHAT_REFRESH_NICKNAME_INTERNAL; | 42 (time(NULL) - member->last_refresh) > QQ_GROUP_CHAT_REFRESH_NICKNAME_INTERNAL; |
46 } // _is_group_member_need_update_info | 43 } |
47 | 44 |
48 /*****************************************************************************/ | 45 /* this is done when we receive the reply to get_online_member sub_cmd |
49 // this is done when we receive the reply to get_online_member sub_cmd | 46 * all member are set offline, and then only those in reply packets are online */ |
50 // all member are set offline, and then only those in reply packets are online | 47 static void _qq_group_set_members_all_offline(qq_group *group) |
51 static void _qq_group_set_members_all_offline(qq_group * group) | |
52 { | 48 { |
53 GList *list; | 49 GList *list; |
54 qq_buddy *member; | 50 qq_buddy *member; |
55 g_return_if_fail(group != NULL); | 51 g_return_if_fail(group != NULL); |
56 | 52 |
57 list = group->members; | 53 list = group->members; |
58 while (list != NULL) { | 54 while (list != NULL) { |
59 member = (qq_buddy *) list->data; | 55 member = (qq_buddy *) list->data; |
60 member->status = QQ_BUDDY_ONLINE_OFFLINE; | 56 member->status = QQ_BUDDY_ONLINE_OFFLINE; |
61 list = list->next; | 57 list = list->next; |
62 } // while list | 58 } |
63 } // _qq_group_set_members_all_offline | 59 } |
64 | 60 |
65 /*****************************************************************************/ | 61 /* send packet to get detailed information of one group */ |
66 // send packet to get detailed information of one group | 62 void qq_send_cmd_group_get_group_info(GaimConnection *gc, qq_group *group) |
67 void qq_send_cmd_group_get_group_info(GaimConnection * gc, qq_group * group) | |
68 { | 63 { |
69 guint8 *raw_data, *cursor; | 64 guint8 *raw_data, *cursor; |
70 gint bytes, data_len; | 65 gint bytes, data_len; |
71 | 66 |
72 g_return_if_fail(gc != NULL && group != NULL); | 67 g_return_if_fail(gc != NULL && group != NULL); |
82 if (bytes != data_len) | 77 if (bytes != data_len) |
83 gaim_debug(GAIM_DEBUG_ERROR, "QQ", | 78 gaim_debug(GAIM_DEBUG_ERROR, "QQ", |
84 "Fail create packet for %s\n", qq_group_cmd_get_desc(QQ_GROUP_CMD_GET_GROUP_INFO)); | 79 "Fail create packet for %s\n", qq_group_cmd_get_desc(QQ_GROUP_CMD_GET_GROUP_INFO)); |
85 else | 80 else |
86 qq_send_group_cmd(gc, group, raw_data, data_len); | 81 qq_send_group_cmd(gc, group, raw_data, data_len); |
87 } // qq_send_cmd_group_get_group_info | 82 } |
88 | 83 |
89 /*****************************************************************************/ | 84 /* send packet to get online group member, called by keep_alive */ |
90 // send packet to get online group member, called by keep_alive | 85 void qq_send_cmd_group_get_online_member(GaimConnection *gc, qq_group *group) |
91 void qq_send_cmd_group_get_online_member(GaimConnection * gc, qq_group * group) { | 86 { |
92 guint8 *raw_data, *cursor; | 87 guint8 *raw_data, *cursor; |
93 gint bytes, data_len; | 88 gint bytes, data_len; |
94 | 89 |
95 g_return_if_fail(gc != NULL && group != NULL); | 90 g_return_if_fail(gc != NULL && group != NULL); |
96 | 91 |
97 // only get online members when conversation window is on | 92 /* only get online members when conversation window is on */ |
98 if (NULL == gaim_find_conversation_with_account(GAIM_CONV_TYPE_CHAT/*gfhuang*/,group->group_name_utf8, gaim_connection_get_account(gc))) { | 93 if (NULL == gaim_find_conversation_with_account(GAIM_CONV_TYPE_CHAT,group->group_name_utf8, gaim_connection_get_account(gc))) { |
99 gaim_debug(GAIM_DEBUG_WARNING, "QQ", | 94 gaim_debug(GAIM_DEBUG_WARNING, "QQ", |
100 "Conv windows for \"%s\" is not on, do not get online members\n", group->group_name_utf8); | 95 "Conv windows for \"%s\" is not on, do not get online members\n", group->group_name_utf8); |
101 return; | 96 return; |
102 } // if gaim_find_conversation_with_account | 97 } |
103 | 98 |
104 data_len = 5; | 99 data_len = 5; |
105 raw_data = g_newa(guint8, data_len); | 100 raw_data = g_newa(guint8, data_len); |
106 cursor = raw_data; | 101 cursor = raw_data; |
107 | 102 |
112 if (bytes != data_len) | 107 if (bytes != data_len) |
113 gaim_debug(GAIM_DEBUG_ERROR, "QQ", | 108 gaim_debug(GAIM_DEBUG_ERROR, "QQ", |
114 "Fail create packet for %s\n", qq_group_cmd_get_desc(QQ_GROUP_CMD_GET_ONLINE_MEMBER)); | 109 "Fail create packet for %s\n", qq_group_cmd_get_desc(QQ_GROUP_CMD_GET_ONLINE_MEMBER)); |
115 else | 110 else |
116 qq_send_group_cmd(gc, group, raw_data, data_len); | 111 qq_send_group_cmd(gc, group, raw_data, data_len); |
117 } // qq_send_cmd_group_search_group | 112 } |
118 | 113 |
119 /*****************************************************************************/ | 114 /* send packet to get group member info */ |
120 // send packet to get group member info | 115 void qq_send_cmd_group_get_member_info(GaimConnection *gc, qq_group *group) |
121 void qq_send_cmd_group_get_member_info(GaimConnection * gc, qq_group * group) { | 116 { |
122 guint8 *raw_data, *cursor; | 117 guint8 *raw_data, *cursor; |
123 gint bytes, data_len, i; | 118 gint bytes, data_len, i; |
124 GList *list; | 119 GList *list; |
125 qq_buddy *member; | 120 qq_buddy *member; |
126 | 121 |
127 g_return_if_fail(gc != NULL && group != NULL); | 122 g_return_if_fail(gc != NULL && group != NULL); |
128 for (i = 0, list = group->members; list != NULL; list = list->next) { | 123 for (i = 0, list = group->members; list != NULL; list = list->next) { |
129 member = (qq_buddy *) list->data; | 124 member = (qq_buddy *) list->data; |
130 if (_is_group_member_need_update_info(member)) | 125 if (_is_group_member_need_update_info(member)) |
131 i++; | 126 i++; |
132 } // for i | 127 } |
133 | 128 |
134 if (i <= 0) { | 129 if (i <= 0) { |
135 gaim_debug(GAIM_DEBUG_INFO, "QQ", "No group member needs to to update info now.\n"); | 130 gaim_debug(GAIM_DEBUG_INFO, "QQ", "No group member needs to to update info now.\n"); |
136 return; | 131 return; |
137 } // if i | 132 } |
138 | 133 |
139 data_len = 5 + 4 * i; | 134 data_len = 5 + 4 * i; |
140 raw_data = g_newa(guint8, data_len); | 135 raw_data = g_newa(guint8, data_len); |
141 cursor = raw_data; | 136 cursor = raw_data; |
142 | 137 |
148 while (list != NULL) { | 143 while (list != NULL) { |
149 member = (qq_buddy *) list->data; | 144 member = (qq_buddy *) list->data; |
150 if (_is_group_member_need_update_info(member)) | 145 if (_is_group_member_need_update_info(member)) |
151 bytes += create_packet_dw(raw_data, &cursor, member->uid); | 146 bytes += create_packet_dw(raw_data, &cursor, member->uid); |
152 list = list->next; | 147 list = list->next; |
153 } // while list | 148 } |
154 | 149 |
155 if (bytes != data_len) | 150 if (bytes != data_len) |
156 gaim_debug(GAIM_DEBUG_ERROR, "QQ", | 151 gaim_debug(GAIM_DEBUG_ERROR, "QQ", |
157 "Fail create packet for %s\n", qq_group_cmd_get_desc(QQ_GROUP_CMD_GET_MEMBER_INFO)); | 152 "Fail create packet for %s\n", qq_group_cmd_get_desc(QQ_GROUP_CMD_GET_MEMBER_INFO)); |
158 else | 153 else |
159 qq_send_group_cmd(gc, group, raw_data, data_len); | 154 qq_send_group_cmd(gc, group, raw_data, data_len); |
160 } // qq_send_cmd_group_get_member_info | 155 } |
161 | 156 |
162 /*****************************************************************************/ | 157 void qq_process_group_cmd_get_group_info(guint8 *data, guint8 **cursor, gint len, GaimConnection *gc) |
163 void qq_process_group_cmd_get_group_info(guint8 * data, guint8 ** cursor, gint len, GaimConnection * gc) { | 158 { |
164 qq_group *group; | 159 qq_group *group; |
165 qq_data *qd; | 160 qq_data *qd; |
166 guint8 orgnization, role; //gfhuang | 161 guint8 orgnization, role; |
167 guint16 unknown; | 162 guint16 unknown; |
168 guint32 member_uid, internal_group_id; | 163 guint32 member_uid, internal_group_id; |
169 gint pascal_len, i; | 164 gint pascal_len, i; |
170 guint32 unknown4; | 165 guint32 unknown4; |
171 guint8 unknown1; | 166 guint8 unknown1; |
180 group = qq_group_find_by_internal_group_id(gc, internal_group_id); | 175 group = qq_group_find_by_internal_group_id(gc, internal_group_id); |
181 g_return_if_fail(group != NULL); | 176 g_return_if_fail(group != NULL); |
182 | 177 |
183 read_packet_dw(data, cursor, len, &(group->external_group_id)); | 178 read_packet_dw(data, cursor, len, &(group->external_group_id)); |
184 read_packet_b(data, cursor, len, &(group->group_type)); | 179 read_packet_b(data, cursor, len, &(group->group_type)); |
185 read_packet_dw(data, cursor, len, &unknown4); //unknown 4 bytes, protocal changed by gfhuang | 180 read_packet_dw(data, cursor, len, &unknown4); /* unknown 4 bytes */ |
186 read_packet_dw(data, cursor, len, &(group->creator_uid)); | 181 read_packet_dw(data, cursor, len, &(group->creator_uid)); |
187 read_packet_b(data, cursor, len, &(group->auth_type)); | 182 read_packet_b(data, cursor, len, &(group->auth_type)); |
188 read_packet_dw(data, cursor, len, &unknown4); // oldCategory, by gfhuang | 183 read_packet_dw(data, cursor, len, &unknown4); /* oldCategory */ |
189 read_packet_w(data, cursor, len, &unknown); | 184 read_packet_w(data, cursor, len, &unknown); |
190 read_packet_dw(data, cursor, len, &(group->group_category)); | 185 read_packet_dw(data, cursor, len, &(group->group_category)); |
191 read_packet_w(data, cursor, len, &(unknown)); // 0x0000 | 186 read_packet_w(data, cursor, len, &(unknown)); /* 0x0000 */ |
192 read_packet_b(data, cursor, len, &unknown1); | 187 read_packet_b(data, cursor, len, &unknown1); |
193 read_packet_dw(data, cursor, len, &(unknown4)); // versionID, by gfhuang | 188 read_packet_dw(data, cursor, len, &(unknown4)); /* versionID */ |
194 | 189 |
195 pascal_len = convert_as_pascal_string(*cursor, &(group->group_name_utf8), QQ_CHARSET_DEFAULT); | 190 pascal_len = convert_as_pascal_string(*cursor, &(group->group_name_utf8), QQ_CHARSET_DEFAULT); |
196 *cursor += pascal_len; | 191 *cursor += pascal_len; |
197 read_packet_w(data, cursor, len, &(unknown)); // 0x0000 | 192 read_packet_w(data, cursor, len, &(unknown)); /* 0x0000 */ |
198 pascal_len = convert_as_pascal_string(*cursor, &(group->notice_utf8), QQ_CHARSET_DEFAULT); | 193 pascal_len = convert_as_pascal_string(*cursor, &(group->notice_utf8), QQ_CHARSET_DEFAULT); |
199 *cursor += pascal_len; | 194 *cursor += pascal_len; |
200 pascal_len = convert_as_pascal_string(*cursor, &(group->group_desc_utf8), QQ_CHARSET_DEFAULT); | 195 pascal_len = convert_as_pascal_string(*cursor, &(group->group_desc_utf8), QQ_CHARSET_DEFAULT); |
201 *cursor += pascal_len; | 196 *cursor += pascal_len; |
202 | 197 |
203 i = 0; | 198 i = 0; |
204 // now comes the member list separated by 0x00 | 199 /* now comes the member list separated by 0x00 */ |
205 while (*cursor < data + len) { | 200 while (*cursor < data + len) { |
206 read_packet_dw(data, cursor, len, &member_uid); | 201 read_packet_dw(data, cursor, len, &member_uid); |
207 i++; | 202 i++; |
208 read_packet_b(data, cursor, len, &orgnization); // protocal changed, gfhuang | 203 read_packet_b(data, cursor, len, &orgnization); |
209 read_packet_b(data, cursor, len, &role);// gfhuang | 204 read_packet_b(data, cursor, len, &role); |
210 | 205 |
211 if(orgnization != 0 || role != 0) { | 206 if(orgnization != 0 || role != 0) { |
212 gaim_debug(GAIM_DEBUG_INFO, "QQ", "group member %d: orgnizatio=%d, role=%d\n", member_uid, orgnization, role); | 207 gaim_debug(GAIM_DEBUG_INFO, "QQ", "group member %d: orgnizatio=%d, role=%d\n", member_uid, orgnization, role); |
213 } | 208 } |
214 qq_buddy *member = qq_group_find_or_add_member(gc, group, member_uid); | 209 qq_buddy *member = qq_group_find_or_add_member(gc, group, member_uid); |
215 member->role = role; | 210 member->role = role; |
216 } // while *cursor | 211 } |
217 if(*cursor > (data + len)) { | 212 if(*cursor > (data + len)) { |
218 gaim_debug(GAIM_DEBUG_ERROR, "QQ", "group_cmd_get_group_info: Dangerous error! maybe protocal changed, notify me!"); | 213 gaim_debug(GAIM_DEBUG_ERROR, "QQ", "group_cmd_get_group_info: Dangerous error! maybe protocal changed, notify me!"); |
219 } | 214 } |
220 | 215 |
221 gaim_debug(GAIM_DEBUG_INFO, "QQ", "group \"%s\" has %d members\n", group->group_name_utf8, i); | 216 gaim_debug(GAIM_DEBUG_INFO, "QQ", "group \"%s\" has %d members\n", group->group_name_utf8, i); |
223 if (group->creator_uid == qd->uid) | 218 if (group->creator_uid == qd->uid) |
224 group->my_status = QQ_GROUP_MEMBER_STATUS_IS_ADMIN; | 219 group->my_status = QQ_GROUP_MEMBER_STATUS_IS_ADMIN; |
225 | 220 |
226 qq_group_refresh(gc, group); | 221 qq_group_refresh(gc, group); |
227 | 222 |
228 //added topic by gfhuang | |
229 GaimConversation *gaim_conv = gaim_find_conversation_with_account(GAIM_CONV_TYPE_CHAT,group->group_name_utf8, gaim_connection_get_account(gc)); | 223 GaimConversation *gaim_conv = gaim_find_conversation_with_account(GAIM_CONV_TYPE_CHAT,group->group_name_utf8, gaim_connection_get_account(gc)); |
230 if(NULL == gaim_conv) { | 224 if(NULL == gaim_conv) { |
231 gaim_debug(GAIM_DEBUG_WARNING, "QQ", | 225 gaim_debug(GAIM_DEBUG_WARNING, "QQ", |
232 "Conv windows for \"%s\" is not on, do not set topic\n", group->group_name_utf8); | 226 "Conv windows for \"%s\" is not on, do not set topic\n", group->group_name_utf8); |
233 } | 227 } |
234 else { | 228 else { |
235 gaim_conv_chat_set_topic(GAIM_CONV_CHAT(gaim_conv), NULL, group->notice_utf8); | 229 gaim_conv_chat_set_topic(GAIM_CONV_CHAT(gaim_conv), NULL, group->notice_utf8); |
236 } | 230 } |
237 } // qq_process_group_cmd_get_group_info | 231 } |
238 | 232 |
239 /*****************************************************************************/ | 233 void qq_process_group_cmd_get_online_member(guint8 *data, guint8 **cursor, gint len, GaimConnection *gc) |
240 void qq_process_group_cmd_get_online_member(guint8 * data, guint8 ** cursor, gint len, GaimConnection * gc) { | 234 { |
241 guint32 internal_group_id, member_uid; | 235 guint32 internal_group_id, member_uid; |
242 guint8 unknown; | 236 guint8 unknown; |
243 gint bytes, i; | 237 gint bytes, i; |
244 qq_group *group; | 238 qq_group *group; |
245 qq_buddy *member; | 239 qq_buddy *member; |
247 g_return_if_fail(gc != NULL && data != NULL && len > 0); | 241 g_return_if_fail(gc != NULL && data != NULL && len > 0); |
248 | 242 |
249 if (data + len - *cursor < 4) { | 243 if (data + len - *cursor < 4) { |
250 gaim_debug(GAIM_DEBUG_ERROR, "QQ", "Invalid group online member reply, discard it!\n"); | 244 gaim_debug(GAIM_DEBUG_ERROR, "QQ", "Invalid group online member reply, discard it!\n"); |
251 return; | 245 return; |
252 } // if data_len-*cursor | 246 } |
253 | 247 |
254 bytes = 0; | 248 bytes = 0; |
255 i = 0; | 249 i = 0; |
256 bytes += read_packet_dw(data, cursor, len, &internal_group_id); | 250 bytes += read_packet_dw(data, cursor, len, &internal_group_id); |
257 bytes += read_packet_b(data, cursor, len, &unknown); // 0x3c ?? | 251 bytes += read_packet_b(data, cursor, len, &unknown); /* 0x3c ?? */ |
258 g_return_if_fail(internal_group_id > 0); | 252 g_return_if_fail(internal_group_id > 0); |
259 | 253 |
260 group = qq_group_find_by_internal_group_id(gc, internal_group_id); | 254 group = qq_group_find_by_internal_group_id(gc, internal_group_id); |
261 if (group == NULL) { | 255 if (group == NULL) { |
262 gaim_debug(GAIM_DEBUG_ERROR, "QQ", "We have no group info for internal id [%d]\n", internal_group_id); | 256 gaim_debug(GAIM_DEBUG_ERROR, "QQ", |
257 "We have no group info for internal id [%d]\n", internal_group_id); | |
263 return; | 258 return; |
264 } // if group == NULL | 259 } |
265 | 260 |
266 // set all offline first, then update those online | 261 /* set all offline first, then update those online */ |
267 _qq_group_set_members_all_offline(group); | 262 _qq_group_set_members_all_offline(group); |
268 while (*cursor < data + len) { | 263 while (*cursor < data + len) { |
269 bytes += read_packet_dw(data, cursor, len, &member_uid); | 264 bytes += read_packet_dw(data, cursor, len, &member_uid); |
270 i++; | 265 i++; |
271 member = qq_group_find_or_add_member(gc, group, member_uid); | 266 member = qq_group_find_or_add_member(gc, group, member_uid); |
272 if (member != NULL) | 267 if (member != NULL) |
273 member->status = QQ_BUDDY_ONLINE_NORMAL; | 268 member->status = QQ_BUDDY_ONLINE_NORMAL; |
274 } // while | 269 } |
275 if(*cursor > (data + len)) { | 270 if(*cursor > (data + len)) { |
276 gaim_debug(GAIM_DEBUG_ERROR, "QQ", "group_cmd_get_online_member: Dangerous error! maybe protocal changed, notify me!"); | 271 gaim_debug(GAIM_DEBUG_ERROR, "QQ", |
272 "group_cmd_get_online_member: Dangerous error! maybe protocol changed, notify developers!"); | |
277 } | 273 } |
278 | 274 |
279 gaim_debug(GAIM_DEBUG_INFO, "QQ", "Group \"%s\" has %d online members\n", group->group_name_utf8, i); | 275 gaim_debug(GAIM_DEBUG_INFO, "QQ", "Group \"%s\" has %d online members\n", group->group_name_utf8, i); |
280 | 276 } |
281 } // qq_process_group_cmd_get_online_member | 277 |
282 | 278 /* process the reply to get_member_info packet */ |
283 /*****************************************************************************/ | 279 void qq_process_group_cmd_get_member_info(guint8 *data, guint8 **cursor, gint len, GaimConnection *gc) |
284 // process the reply to get_member_info packet | 280 { |
285 void qq_process_group_cmd_get_member_info(guint8 * data, guint8 ** cursor, gint len, GaimConnection * gc) { | |
286 guint32 internal_group_id, member_uid; | 281 guint32 internal_group_id, member_uid; |
287 guint16 unknown; | 282 guint16 unknown; |
288 guint8 bar; | 283 guint8 bar; |
289 gint pascal_len, i; | 284 gint pascal_len, i; |
290 qq_group *group; | 285 qq_group *group; |
297 | 292 |
298 group = qq_group_find_by_internal_group_id(gc, internal_group_id); | 293 group = qq_group_find_by_internal_group_id(gc, internal_group_id); |
299 g_return_if_fail(group != NULL); | 294 g_return_if_fail(group != NULL); |
300 | 295 |
301 i = 0; | 296 i = 0; |
302 // now starts the member info, as get buddy list reply | 297 /* now starts the member info, as get buddy list reply */ |
303 while (*cursor < data + len) { | 298 while (*cursor < data + len) { |
304 read_packet_dw(data, cursor, len, &member_uid); | 299 read_packet_dw(data, cursor, len, &member_uid); |
305 g_return_if_fail(member_uid > 0); | 300 g_return_if_fail(member_uid > 0); |
306 member = qq_group_find_member_by_uid(group, member_uid); | 301 member = qq_group_find_member_by_uid(group, member_uid); |
307 g_return_if_fail(member != NULL); | 302 g_return_if_fail(member != NULL); |
316 read_packet_w(data, cursor, len, &unknown); | 311 read_packet_w(data, cursor, len, &unknown); |
317 read_packet_b(data, cursor, len, &(member->flag1)); | 312 read_packet_b(data, cursor, len, &(member->flag1)); |
318 read_packet_b(data, cursor, len, &(member->comm_flag)); | 313 read_packet_b(data, cursor, len, &(member->comm_flag)); |
319 | 314 |
320 member->last_refresh = time(NULL); | 315 member->last_refresh = time(NULL); |
321 } // while | 316 } |
322 if(*cursor > (data + len)) { | 317 if(*cursor > (data + len)) { |
323 gaim_debug(GAIM_DEBUG_ERROR, "QQ", "group_cmd_get_member_info: Dangerous error! maybe protocal changed, notify me!"); | 318 gaim_debug(GAIM_DEBUG_ERROR, "QQ", |
319 "group_cmd_get_member_info: Dangerous error! maybe protocol changed, notify developers!"); | |
324 } | 320 } |
325 gaim_debug(GAIM_DEBUG_INFO, "QQ", "Group \"%s\" obtained %d member info\n", group->group_name_utf8, i); | 321 gaim_debug(GAIM_DEBUG_INFO, "QQ", "Group \"%s\" obtained %d member info\n", group->group_name_utf8, i); |
326 | 322 } |
327 } // qq_process_group_cmd_get_member_info | |
328 | |
329 /*****************************************************************************/ | |
330 // END OF FILE |