From: <ma...@us...> - 2006-08-23 02:21:07
|
Revision: 16990 Author: marv_sf Date: 2006-08-22 19:21:00 -0700 (Tue, 22 Aug 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16990&view=rev Log Message: ----------- oops, that was stupid. I blame the juicey goodness. Now that we actually properly set the protocol, it seems to work. I can send and receive messages back and forth between gaim on yahoo and windows live messenger. Messages I send seem to end up with </font>'s in them. Status updates also seem to work to some degree Modified Paths: -------------- trunk/libgaim/protocols/yahoo/yahoo.c Modified: trunk/libgaim/protocols/yahoo/yahoo.c =================================================================== --- trunk/libgaim/protocols/yahoo/yahoo.c 2006-08-23 01:35:44 UTC (rev 16989) +++ trunk/libgaim/protocols/yahoo/yahoo.c 2006-08-23 02:21:00 UTC (rev 16990) @@ -477,17 +477,16 @@ GHashTable *ht; char *grp = NULL; char *norm_bud = NULL; + YahooFriend *f = NULL; /* It's your friends. They're going to want you to share your StarBursts. */ + /* But what if you had no friends? */ + GaimBuddy *b; + GaimGroup *g; + ht = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, (GDestroyNotify) g_slist_free); while (l) { struct yahoo_pair *pair = l->data; - YahooFriend *f = NULL; /* It's your friends. They're going to want you to share your StarBursts. */ - /* But what if you had no friends? */ - GaimBuddy *b; - GaimGroup *g; - - l = l->next; switch (pair->key) { @@ -514,8 +513,10 @@ break; case 241: /* another protocol user */ - if (f) + if (f) { f->protocol = strtol(pair->value, NULL, 10); + gaim_debug_info("yahoo", "Setting protocol to %d\n", f->protocol); + } break; /* case 242: */ /* this seems related to 241 */ /* break; */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2006-08-24 01:14:01
|
Revision: 17009 Author: marv_sf Date: 2006-08-23 18:13:57 -0700 (Wed, 23 Aug 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=17009&view=rev Log Message: ----------- don't crash when we're set idle but not logged in. Modified Paths: -------------- trunk/libgaim/protocols/yahoo/yahoo.c Modified: trunk/libgaim/protocols/yahoo/yahoo.c =================================================================== --- trunk/libgaim/protocols/yahoo/yahoo.c 2006-08-23 21:34:43 UTC (rev 17008) +++ trunk/libgaim/protocols/yahoo/yahoo.c 2006-08-24 01:13:57 UTC (rev 17009) @@ -3349,6 +3349,9 @@ char *msg = NULL, *msg2 = NULL; GaimStatus *status = NULL; + if (!yd) + return; + if (idle && yd->current_status != YAHOO_STATUS_CUSTOM) yd->current_status = YAHOO_STATUS_IDLE; else if (!idle && yd->current_status == YAHOO_STATUS_IDLE) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2006-08-29 14:18:08
|
Revision: 17080 Author: marv_sf Date: 2006-08-29 07:18:04 -0700 (Tue, 29 Aug 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=17080&view=rev Log Message: ----------- This should fix bleeter's crash, the backtrace shows the group is null. I probably need see the packets to fix it better, this will just ignore buddies not in a group instead of figuring out their group. Modified Paths: -------------- trunk/libgaim/protocols/yahoo/yahoo.c Modified: trunk/libgaim/protocols/yahoo/yahoo.c =================================================================== --- trunk/libgaim/protocols/yahoo/yahoo.c 2006-08-29 04:33:53 UTC (rev 17079) +++ trunk/libgaim/protocols/yahoo/yahoo.c 2006-08-29 14:18:04 UTC (rev 17080) @@ -499,6 +499,8 @@ grp = yahoo_string_decode(gc, pair->value, FALSE); break; case 7: /* buddy's s/n */ + if (!grp) /* this buddy isn't in a group?! */ + break; g_free(norm_bud); norm_bud = g_strdup(gaim_normalize(account, pair->value)); f = yahoo_friend_find_or_new(gc, norm_bud); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ev...@us...> - 2006-09-27 04:44:34
|
Revision: 17383 http://svn.sourceforge.net/gaim/?rev=17383&view=rev Author: evands Date: 2006-09-26 21:44:30 -0700 (Tue, 26 Sep 2006) Log Message: ----------- Fixed two issues which stem from changes when the Yahoo protocol upgrades were done; I'm fairly sure this properly fixes issue worked-around in [17080]. Yahoo buddies on the Ignore list were being added to the last group sent from the server. On Yahoo, an Ignored contact can never be on your contact list. These contacts should be noted locally as on the Deny list and, accordingly, not added to the contact list. I added some comments about the keys and their order sent here based on my observations; they seem to generalize across a couple test cases I ran. See the comments themselves for details. This fixes Adium Trac ticket #5470. Modified Paths: -------------- trunk/libgaim/protocols/yahoo/yahoo.c Modified: trunk/libgaim/protocols/yahoo/yahoo.c =================================================================== --- trunk/libgaim/protocols/yahoo/yahoo.c 2006-09-27 02:29:03 UTC (rev 17382) +++ trunk/libgaim/protocols/yahoo/yahoo.c 2006-09-27 04:44:30 UTC (rev 17383) @@ -491,29 +491,48 @@ l = l->next; switch (pair->key) { - case 302: /* what is this? it's always 318 before a group, 319 before a s/n */ - case 300: /* ditto */ + case 302: + /* This is always 318 before a group, 319 before the first s/n in a group, 320 before any ignored s/n. + * It is not sent for s/n's in a group after the first. + * All ignored s/n's are listed last, so when we see a 320 we clear the group and begin marking the + * s/n's as ignored. It is always followed by an identical 300 key. + */ + if (pair->value && !strcmp(pair->value, "320")) { + /* No longer in any group; this indicates the start of the ignore list. */ + g_free(grp); + grp = NULL; + } + break; + case 301: /* This is 319 before all s/n's in a group after the first. It is followed by an identical 300. */ + break; + case 300: /* This is 318 before a group, 319 before any s/n in a group, and 320 before any ignored s/n. */ + break; case 65: /* This is the group */ g_free(grp); grp = yahoo_string_decode(gc, pair->value, FALSE); break; case 7: /* buddy's s/n */ - if (!grp) /* this buddy isn't in a group?! */ - break; g_free(norm_bud); norm_bud = g_strdup(gaim_normalize(account, pair->value)); - f = yahoo_friend_find_or_new(gc, norm_bud); - if (!(b = gaim_find_buddy(account, norm_bud))) { - if (!(g = gaim_find_group(grp))) { - g = gaim_group_new(grp); - gaim_blist_add_group(g, NULL); + + if (grp) { + /* This buddy is in a group */ + f = yahoo_friend_find_or_new(gc, norm_bud); + if (!(b = gaim_find_buddy(account, norm_bud))) { + if (!(g = gaim_find_group(grp))) { + g = gaim_group_new(grp); + gaim_blist_add_group(g, NULL); + } + b = gaim_buddy_new(account, norm_bud, NULL); + gaim_blist_add_buddy(b, NULL, g, NULL); } - b = gaim_buddy_new(account, norm_bud, NULL); - gaim_blist_add_buddy(b, NULL, g, NULL); + yahoo_do_group_check(account, ht, norm_bud, grp); + + } else { + /* This buddy is on the ignore list (and therefore in no group) */ + gaim_privacy_deny_add(account, norm_bud, 1); } - yahoo_do_group_check(account, ht, norm_bud, grp); - break; case 241: /* another protocol user */ if (f) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |