| 250 purple_debug_error("QQ", |
250 purple_debug_error("QQ", |
| 251 "qq_process_get_buddies_online: Dangerous error! maybe protocol changed, notify developers!\n"); |
251 "qq_process_get_buddies_online: Dangerous error! maybe protocol changed, notify developers!\n"); |
| 252 } |
252 } |
| 253 |
253 |
| 254 purple_debug_info("QQ", "Received %d online buddies, nextposition=%u\n", |
254 purple_debug_info("QQ", "Received %d online buddies, nextposition=%u\n", |
| 255 count, (guint) position); |
255 count, (guint) position); |
| 256 return position; |
256 return position; |
| 257 } |
257 } |
| 258 |
258 |
| 259 |
259 |
| 260 /* process reply for get_buddies_list */ |
260 /* process reply for get_buddies_list */ |
| 355 gint i, j; |
355 gint i, j; |
| 356 gint bytes; |
356 gint bytes; |
| 357 guint8 sub_cmd, reply_code; |
357 guint8 sub_cmd, reply_code; |
| 358 guint32 unknown, position; |
358 guint32 unknown, position; |
| 359 guint32 uid; |
359 guint32 uid; |
| 360 guint8 type, groupid; |
360 guint8 type; |
| 361 qq_group *group; |
361 qq_group *group; |
| 362 |
362 |
| 363 g_return_val_if_fail(data != NULL && data_len != 0, -1); |
363 g_return_val_if_fail(data != NULL && data_len != 0, -1); |
| 364 |
364 |
| 365 qd = (qq_data *) gc->proto_data; |
365 qd = (qq_data *) gc->proto_data; |
| 381 while (bytes < data_len) { |
381 while (bytes < data_len) { |
| 382 /* 00-03: uid */ |
382 /* 00-03: uid */ |
| 383 bytes += qq_get32(&uid, data + bytes); |
383 bytes += qq_get32(&uid, data + bytes); |
| 384 /* 04: type 0x1:buddy 0x4:Qun */ |
384 /* 04: type 0x1:buddy 0x4:Qun */ |
| 385 bytes += qq_get8(&type, data + bytes); |
385 bytes += qq_get8(&type, data + bytes); |
| 386 /* 05: groupid*4 */ /* seems to always be 0 */ |
386 /* 05: skip unknow 0x00 */ |
| 387 bytes += qq_get8(&groupid, data + bytes); |
387 bytes += 1; |
| 388 /* |
|
| 389 purple_debug_info("QQ", "groupid: %i\n", groupid); |
|
| 390 groupid >>= 2; |
|
| 391 */ |
|
| 392 if (uid == 0 || (type != 0x1 && type != 0x4)) { |
388 if (uid == 0 || (type != 0x1 && type != 0x4)) { |
| 393 purple_debug_info("QQ", "Buddy entry, uid=%d, type=%d", uid, type); |
389 purple_debug_info("QQ", "Buddy entry, uid=%d, type=%d", uid, type); |
| 394 continue; |
390 continue; |
| 395 } |
391 } |
| 396 if(0x1 == type) { /* a buddy */ |
392 if(0x1 == type) { /* a buddy */ |