# HG changeset patch # User kartikmohta@gmail.com # Date 1265696389 0 # Node ID d1cecbc467c6672d96a32c5a0aa455ee95a1b93c # Parent fa35d7029a14a5f59bcbc6b660d0efa543f09821 Support Yahoo !PingBox. Includes a couple warning fixes. Fixes #7347. committer: John Bailey diff -r fa35d7029a14 -r d1cecbc467c6 libpurple/protocols/yahoo/libymsg.c --- a/libpurple/protocols/yahoo/libymsg.c Tue Feb 09 01:51:25 2010 +0000 +++ b/libpurple/protocols/yahoo/libymsg.c Tue Feb 09 06:19:49 2010 +0000 @@ -541,6 +541,9 @@ case YAHOO_FEDERATION_IBM: norm_bud = g_strconcat("ibm/", temp, NULL); break; + case YAHOO_FEDERATION_PBX: + norm_bud = g_strconcat("pbx/", temp, NULL); + break; case YAHOO_FEDERATION_NONE: norm_bud = g_strdup(temp); break; @@ -833,6 +836,9 @@ case YAHOO_FEDERATION_IBM: fed_from = g_strconcat("ibm/", from, NULL); break; + case YAHOO_FEDERATION_PBX: + fed_from = g_strconcat("pbx/", from, NULL); + break; case YAHOO_FEDERATION_NONE: default: break; @@ -844,7 +850,7 @@ serv_got_typing_stopped(gc, fed_from); if (fed_from != from) - g_free(fed_from); + g_free(fed_from); } else if (!g_ascii_strncasecmp(msg, "GAME", strlen("GAME"))) { PurpleBuddy *bud = purple_find_buddy(account, from); @@ -999,6 +1005,9 @@ case YAHOO_FEDERATION_IBM: im->fed_from = g_strconcat("ibm/",im->from, NULL); break; + case YAHOO_FEDERATION_PBX: + im->fed_from = g_strconcat("pbx/",im->from, NULL); + break; case YAHOO_FEDERATION_NONE: default: im->fed_from = g_strdup(im->from); @@ -1010,7 +1019,7 @@ /* peer session id */ if (im && (pair->key == 11)) { /* disconnect the peer if connected through p2p and sends wrong value for session id */ - if( (im->fed == YAHOO_FEDERATION_NONE) && (pkt_type == YAHOO_PKT_TYPE_P2P) + if( (im->fed == YAHOO_FEDERATION_NONE) && (pkt_type == YAHOO_PKT_TYPE_P2P) && (yd->session_id != strtol(pair->value, NULL, 10)) ) { purple_debug_warning("yahoo","p2p: %s sent us message with wrong session id. Disconnecting p2p connection to peer\n", im->fed_from); @@ -4428,6 +4437,7 @@ case YAHOO_FEDERATION_MSN: case YAHOO_FEDERATION_OCS: case YAHOO_FEDERATION_IBM: + case YAHOO_FEDERATION_PBX: fed_who += 4; break; case YAHOO_FEDERATION_NONE: @@ -4528,6 +4538,7 @@ case YAHOO_FEDERATION_MSN: case YAHOO_FEDERATION_OCS: case YAHOO_FEDERATION_IBM: + case YAHOO_FEDERATION_PBX: fed_who += 4; break; case YAHOO_FEDERATION_NONE: diff -r fa35d7029a14 -r d1cecbc467c6 libpurple/protocols/yahoo/libymsg.h --- a/libpurple/protocols/yahoo/libymsg.h Tue Feb 09 01:51:25 2010 +0000 +++ b/libpurple/protocols/yahoo/libymsg.h Tue Feb 09 06:19:49 2010 +0000 @@ -138,7 +138,8 @@ YAHOO_FEDERATION_NONE = 0, /* No federation - Yahoo! network */ YAHOO_FEDERATION_OCS = 1, /* LCS or OCS private networks */ YAHOO_FEDERATION_MSN = 2, /* MSN or Windows Live network */ - YAHOO_FEDERATION_IBM = 9 /* IBM/Sametime network */ + YAHOO_FEDERATION_IBM = 9, /* IBM/Sametime network */ + YAHOO_FEDERATION_PBX = 100 /* Yahoo! Pingbox service */ } YahooFederation; diff -r fa35d7029a14 -r d1cecbc467c6 libpurple/protocols/yahoo/util.c --- a/libpurple/protocols/yahoo/util.c Tue Feb 09 01:51:25 2010 +0000 +++ b/libpurple/protocols/yahoo/util.c Tue Feb 09 06:19:49 2010 +0000 @@ -932,6 +932,8 @@ fed = YAHOO_FEDERATION_OCS; else if (!g_ascii_strncasecmp(who, "ibm", 3)) fed = YAHOO_FEDERATION_IBM; + else if (!g_ascii_strncasecmp(who, "pbx", 3)) + fed = YAHOO_FEDERATION_PBX; } return fed; } diff -r fa35d7029a14 -r d1cecbc467c6 libpurple/protocols/yahoo/yahoo_friend.c --- a/libpurple/protocols/yahoo/yahoo_friend.c Tue Feb 09 01:51:25 2010 +0000 +++ b/libpurple/protocols/yahoo/yahoo_friend.c Tue Feb 09 06:19:49 2010 +0000 @@ -186,6 +186,9 @@ case YAHOO_FEDERATION_IBM: who = g_strconcat("ibm/", temp, NULL); break; + case YAHOO_FEDERATION_PBX: + who = g_strconcat("pbx/", temp, NULL); + break; case YAHOO_FEDERATION_NONE: who = g_strdup(temp); break;