comparison libpurple/protocols/msn/session.c @ 20399:6f986caeab59

merge of 'b4911943cba6f29cf0694dfd563cac17612236dc' and 'c28931a50bfa21e0be81777bcd91fdeab9116d77'
author Richard Laager <rlaager@wiktel.com>
date Sun, 15 Apr 2007 04:29:56 +0000
parents 60bc06498746 4a099e4d0d09
children 7c0a2ef88018
comparison
equal deleted inserted replaced
19843:60bc06498746 20399:6f986caeab59
268 PurpleBlistNode *gnode, *cnode, *bnode; 268 PurpleBlistNode *gnode, *cnode, *bnode;
269 PurpleConnection *gc = purple_account_get_connection(session->account); 269 PurpleConnection *gc = purple_account_get_connection(session->account);
270 270
271 g_return_if_fail(gc != NULL); 271 g_return_if_fail(gc != NULL);
272 272
273 for (gnode = purple_get_blist()->root; gnode; gnode = gnode->next){ 273 /* The core used to use msn_add_buddy to add all buddies before
274 * being logged in. This no longer happens, so we manually iterate
275 * over the whole buddy list to identify sync issues. */
276 for (gnode = purple_get_blist()->root; gnode; gnode = gnode->next)
277 {
274 if(!PURPLE_BLIST_NODE_IS_GROUP(gnode)) 278 if(!PURPLE_BLIST_NODE_IS_GROUP(gnode))
275 continue; 279 continue;
276 for(cnode = gnode->child; cnode; cnode = cnode->next) { 280 for(cnode = gnode->child; cnode; cnode = cnode->next) {
277 if(!PURPLE_BLIST_NODE_IS_CONTACT(cnode)) 281 if(!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
278 continue; 282 continue;
312 316
313 /* The core used to use msn_add_buddy to add all buddies before 317 /* The core used to use msn_add_buddy to add all buddies before
314 * being logged in. This no longer happens, so we manually iterate 318 * being logged in. This no longer happens, so we manually iterate
315 * over the whole buddy list to identify sync issues. 319 * over the whole buddy list to identify sync issues.
316 */ 320 */
317 for (gnode = purple_get_blist()->root; gnode; gnode = gnode->next){ 321 for (gnode = purple_get_blist()->root; gnode; gnode = gnode->next) {
318 PurpleGroup *group = (PurpleGroup *)gnode; 322 PurpleGroup *group = (PurpleGroup *)gnode;
319 const char *group_name = group->name; 323 const char *group_name = group->name;
320 if(!PURPLE_BLIST_NODE_IS_GROUP(gnode)) 324 if(!PURPLE_BLIST_NODE_IS_GROUP(gnode))
321 continue; 325 continue;
322 if(!g_strcasecmp(group_name, MSN_INDIVIDUALS_GROUP_NAME) 326 if(!g_strcasecmp(group_name, MSN_INDIVIDUALS_GROUP_NAME)
329 for(bnode = cnode->child; bnode; bnode = bnode->next) { 333 for(bnode = cnode->child; bnode; bnode = bnode->next) {
330 PurpleBuddy *b; 334 PurpleBuddy *b;
331 if(!PURPLE_BLIST_NODE_IS_BUDDY(bnode)) 335 if(!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
332 continue; 336 continue;
333 b = (PurpleBuddy *)bnode; 337 b = (PurpleBuddy *)bnode;
334 if(b->account == gc->account){ 338 if(purple_buddy_get_account(b) == purple_connection_get_account(gc)) {
335 MsnUser *remote_user; 339 MsnUser *remote_user;
336 gboolean found = FALSE; 340 gboolean found = FALSE;
337 341
338 purple_debug_info("MaYuan","buddy name:%s,group name:%s\n",b->name,group_name); 342 remote_user = msn_userlist_find_user(session->userlist, purple_buddy_get_name(b));
339 remote_user = msn_userlist_find_user(session->userlist, b->name); 343
340 344 if ((remote_user != NULL) && (remote_user->list_op & MSN_LIST_FL_OP))
341 if ((remote_user != NULL) && (remote_user->list_op & MSN_LIST_FL_OP)){ 345 {
342 const char *group_id; 346 const char *group_id;
343 GList *l; 347 GList *l;
344 348
345 purple_debug_info("MaYuan","remote user:{%s}\n",b->name); 349 purple_debug_info("MaYuan","remote user:{%s}\n",b->name);
346 group_id = msn_userlist_find_group_id(remote_user->userlist, 350 group_id = msn_userlist_find_group_id(remote_user->userlist,
348 if(group_id == NULL){ 352 if(group_id == NULL){
349 continue; 353 continue;
350 } 354 }
351 purple_debug_info("MaYuan","group_id:{%s}\n",group_id); 355 purple_debug_info("MaYuan","group_id:{%s}\n",group_id);
352 356
353 for (l = remote_user->group_ids; l != NULL; l = l->next){ 357 for (l = remote_user->group_ids; l != NULL; l = l->next)
358 {
354 purple_debug_info("MaYuan","l->data:{%s}\n",l->data); 359 purple_debug_info("MaYuan","l->data:{%s}\n",l->data);
355 if (!g_strcasecmp(group_id ,l->data)){ 360 if (!g_strcasecmp(group_id ,l->data))
361 {
356 found = TRUE; 362 found = TRUE;
357 break; 363 break;
358 } 364 }
359 } 365 }
360 } 366 }
361 367
362 if (!found){ 368 if (!found)
369 {
363 /* The user was not on the server list or not in that group 370 /* The user was not on the server list or not in that group
364 * on the server list */ 371 * on the server list */
365 msn_show_sync_issue(session, b->name, group_name); 372 msn_show_sync_issue(session, b->name, group_name);
366 } 373 }
367 } 374 }