Changeset 6822


Ignore:
Timestamp:
Oct 1, 2008, 6:11:28 PM (13 years ago)
Author:
charles
Message:

(libT) better handling of Shad0w-style peer ids that don't have trailing dashes, such as Osprey Permaseed

Location:
trunk/libtransmission
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/libtransmission/clients-test.c

    r6795 r6822  
    3737    TEST_CLIENT( "-TR0072-", "Transmission 0.72" );
    3838    TEST_CLIENT( "-TR111Z-", "Transmission 1.11+" );
     39    TEST_CLIENT( "O1008132", "Osprey 1.0.0" );
    3940
    4041    TEST_CLIENT(
  • trunk/libtransmission/clients.c

    r6795 r6822  
    3434
    3535static int
     36getShadowInt( char ch, int * setme )
     37{
     38    const char * str = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.-";
     39    const char * pch = strchr( str, ch );
     40    if( !pch )
     41        return 0;
     42    *setme = pch - str;
     43    return 1;
     44}
     45
     46static int
    3647strint( const void * pch,
    3748        int          span )
     
    429440        if( *buf )
    430441            return;
    431     }
    432 
    433     /* Shad0w-style */
    434     if( !memcmp( &id[4], "----", 4 ) || !memcmp( &id[4], "--0", 3 ) )
    435     {
    436         switch( *id )
    437         {
    438             case 'A':
    439                 three_digits( buf, buflen, "ABC", id + 1 ); break;
    440 
    441             case 'O':
    442                 three_digits( buf, buflen, "Osprey", id + 1 ); break;
    443 
    444             case 'Q':
    445                 three_digits( buf, buflen, "BTQueue", id + 1 ); break;
    446 
    447             case 'R':
    448                 three_digits( buf, buflen, "Tribler", id + 1 ); break;
    449 
    450             case 'S':
    451                 three_digits( buf, buflen, "Shad0w", id + 1 ); break;
    452 
    453             case 'T':
    454                 three_digits( buf, buflen, "BitTornado", id + 1 ); break;
    455 
    456             default:
    457                 break;
    458         }
    459         if( *buf ) return;
    460442    }
    461443
     
    549531    }
    550532
     533    /* Shad0w-style */
     534    {
     535        int a, b, c;
     536        if( strchr( "AOQRSTU", id[0] )
     537            && getShadowInt( id[1], &a )
     538            && getShadowInt( id[2], &b )
     539            && getShadowInt( id[3], &c ) )
     540        {
     541            const char * name = NULL;
     542
     543            switch( id[0] )
     544            {
     545                case 'A': name = "ABC"; break;
     546                case 'O': name = "Osprey"; break;
     547                case 'Q': name = "BTQueue"; break;
     548                case 'R': name = "Tribler"; break;
     549                case 'S': name = "Shad0w"; break;
     550                case 'T': name = "BitTornado"; break;
     551                case 'U': name = "UPnP NAT Bit Torrent"; break;
     552            }
     553
     554            if( name )
     555            {
     556                tr_snprintf( buf, buflen, "%s %d.%d.%d", name, a, b, c );
     557                return;
     558            }
     559        }
     560    }
     561
    551562    /* No match */
    552563    if( !*buf )
     
    566577    }
    567578}
    568 
Note: See TracChangeset for help on using the changeset viewer.