Changeset 7771


Ignore:
Timestamp:
Jan 22, 2009, 3:00:29 PM (12 years ago)
Author:
charles
Message:

(1.5x) backport #1734 to 1.5x

Location:
branches/1.5x
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • branches/1.5x/configure.ac

    r7741 r7771  
    44dnl         "0" for stable, supported releases
    55dnl these should be the only two lines you need to change
    6 m4_define([user_agent_prefix],[1.50b2])
     6m4_define([user_agent_prefix],[1.50b3])
    77m4_define([peer_id_prefix],[-TR142X-])
    88
  • branches/1.5x/libtransmission/handshake.c

    r7722 r7771  
    457457        uint8_t vc[VC_LENGTH] = { 0, 0, 0, 0, 0, 0, 0, 0 };
    458458
     459        tr_peerIoWriteBuf( handshake->io, outbuf, FALSE );
    459460        tr_cryptoEncryptInit( handshake->crypto );
    460461        tr_peerIoSetEncryption( handshake->io, PEER_ENCRYPTION_RC4 );
     
    953954    /* maybe de-encrypt our connection */
    954955    if( crypto_select == CRYPTO_PROVIDE_PLAINTEXT )
     956    {
     957        tr_peerIoWriteBuf( handshake->io, outbuf, FALSE );
    955958        tr_peerIoSetEncryption( handshake->io, PEER_ENCRYPTION_NONE );
     959    }
    956960
    957961    dbgmsg( handshake, "sending handshake" );
     
    11751179    tr_peerIoRef( io ); /* balanced by the unref in tr_handshakeFree */
    11761180    tr_peerIoSetIOFuncs( handshake->io, canRead, NULL, gotError, handshake );
     1181    tr_peerIoSetEncryption( io, PEER_ENCRYPTION_NONE );
    11771182
    11781183    if( tr_peerIoIsIncoming( handshake->io ) )
  • branches/1.5x/libtransmission/peer-io.c

    r7767 r7771  
    650650void
    651651tr_peerIoWrite( tr_peerIo   * io,
    652                 const void  * writeme,
    653                 size_t        writemeLen,
    654                 int           isPieceData )
     652                const void  * bytes,
     653                size_t        byteCount,
     654                tr_bool       isPieceData )
    655655{
    656656    struct tr_datatype * datatype;
    657657
    658658    assert( tr_amInEventThread( io->session ) );
    659     dbgmsg( io, "adding %zu bytes into io->output", writemeLen );
     659    dbgmsg( io, "adding %zu bytes into io->output", byteCount );
    660660
    661661    datatype = tr_new( struct tr_datatype, 1 );
    662662    datatype->isPieceData = isPieceData != 0;
    663     datatype->length = writemeLen;
     663    datatype->length = byteCount;
    664664
    665665    __tr_list_init( &datatype->head );
    666666    __tr_list_append( &io->outbuf_datatypes, &datatype->head );
    667667
    668     evbuffer_add( io->outbuf, writeme, writemeLen );
    669 }
    670 
    671 void
    672 tr_peerIoWriteBuf( tr_peerIo         * io,
    673                    struct evbuffer   * buf,
    674                    int                 isPieceData )
    675 {
    676     const size_t n = EVBUFFER_LENGTH( buf );
    677     tr_peerIoWrite( io, EVBUFFER_DATA( buf ), n, isPieceData );
    678     evbuffer_drain( buf, n );
    679 }
    680 
    681 /**
    682 ***
    683 **/
    684 
    685 void
    686 tr_peerIoWriteBytes( tr_peerIo       * io,
    687                      struct evbuffer * outbuf,
    688                      const void      * bytes,
    689                      size_t            byteCount )
    690 {
    691     uint8_t tmp[MAX_STACK_ARRAY_SIZE];
    692 
    693668    switch( io->encryptionMode )
    694669    {
    695         case PEER_ENCRYPTION_NONE:
    696             evbuffer_add( outbuf, bytes, byteCount );
    697             break;
    698 
    699         case PEER_ENCRYPTION_RC4: {
     670        case PEER_ENCRYPTION_RC4:
     671        {
     672            uint8_t tmp[MAX_STACK_ARRAY_SIZE];
    700673            const uint8_t * walk = bytes;
    701             evbuffer_expand( outbuf, byteCount );
    702             while( byteCount > 0 ) {
     674            evbuffer_expand( io->outbuf, byteCount );
     675            while( byteCount > 0 )
     676            {
    703677                const size_t thisPass = MIN( byteCount, sizeof( tmp ) );
    704678                tr_cryptoEncrypt( io->crypto, thisPass, walk, tmp );
    705                 evbuffer_add( outbuf, tmp, thisPass );
     679                evbuffer_add( io->outbuf, tmp, thisPass );
    706680                walk += thisPass;
    707681                byteCount -= thisPass;
     
    710684        }
    711685
     686        case PEER_ENCRYPTION_NONE:
     687            evbuffer_add( io->outbuf, bytes, byteCount );
     688            break;
     689
    712690        default:
    713691            assert( 0 );
    714     }
     692            break;
     693    }
     694}
     695
     696void
     697tr_peerIoWriteBuf( tr_peerIo         * io,
     698                   struct evbuffer   * buf,
     699                   tr_bool             isPieceData )
     700{
     701    const size_t n = EVBUFFER_LENGTH( buf );
     702    tr_peerIoWrite( io, EVBUFFER_DATA( buf ), n, isPieceData );
     703    evbuffer_drain( buf, n );
    715704}
    716705
  • branches/1.5x/libtransmission/peer-io.h

    r7767 r7771  
    225225                                  const void        * writeme,
    226226                                  size_t              writemeLen,
    227                                   int                 isPieceData );
     227                                  tr_bool             isPieceData );
    228228
    229229void    tr_peerIoWriteBuf       ( tr_peerIo         * io,
    230230                                  struct evbuffer   * buf,
    231                                   int                 isPieceData );
     231                                  tr_bool             isPieceData );
    232232
    233233/**
     
    256256}
    257257
    258 void      tr_peerIoWriteBytes( tr_peerIo *       io,
    259                                struct evbuffer * outbuf,
    260                                const void *      bytes,
    261                                size_t            byteCount );
    262 
    263 static TR_INLINE void  tr_peerIoWriteUint8( tr_peerIo *       io,
    264                                          struct evbuffer * outbuf,
    265                                          uint8_t           writeme )
     258static TR_INLINE void tr_peerIoWriteBytes( tr_peerIo        * io UNUSED,
     259                                           struct evbuffer  * outbuf,
     260                                           const void       * bytes,
     261                                           size_t             byteCount )
     262{
     263    evbuffer_add( outbuf, bytes, byteCount );
     264}
     265
     266static TR_INLINE void  tr_peerIoWriteUint8( tr_peerIo        * io,
     267                                            struct evbuffer  * outbuf,
     268                                            uint8_t            writeme )
    266269{
    267270    tr_peerIoWriteBytes( io, outbuf, &writeme, sizeof( uint8_t ) );
    268271}
    269272
    270 static TR_INLINE void tr_peerIoWriteUint16( tr_peerIo *      io,
    271                                          struct evbuffer * outbuf,
    272                                          uint16_t          writeme )
     273static TR_INLINE void tr_peerIoWriteUint16( tr_peerIo        * io,
     274                                            struct evbuffer * outbuf,
     275                                            uint16_t           writeme )
    273276{
    274277    const uint16_t tmp = htons( writeme );
     
    276279}
    277280
    278 static TR_INLINE void tr_peerIoWriteUint32( tr_peerIo *      io,
    279                                          struct evbuffer * outbuf,
    280                                          uint32_t          writeme )
     281static TR_INLINE void tr_peerIoWriteUint32( tr_peerIo        * io,
     282                                            struct evbuffer * outbuf,
     283                                            uint32_t           writeme )
    281284{
    282285    const uint32_t tmp = htonl( writeme );
     
    284287}
    285288
    286 void      tr_peerIoReadBytes( tr_peerIo *      io,
    287                               struct evbuffer * inbuf,
    288                               void *            bytes,
    289                               size_t            byteCount );
    290 
    291 static TR_INLINE void tr_peerIoReadUint8( tr_peerIo *      io,
    292                                        struct evbuffer * inbuf,
    293                                        uint8_t *        setme )
     289void tr_peerIoReadBytes( tr_peerIo        * io,
     290                         struct evbuffer * inbuf,
     291                         void             * bytes,
     292                         size_t             byteCount );
     293
     294static TR_INLINE void tr_peerIoReadUint8( tr_peerIo        * io,
     295                                          struct evbuffer * inbuf,
     296                                          uint8_t          * setme )
    294297{
    295298    tr_peerIoReadBytes( io, inbuf, setme, sizeof( uint8_t ) );
    296299}
    297300
    298 static TR_INLINE void tr_peerIoReadUint16( tr_peerIo *      io,
    299                                         struct evbuffer * inbuf,
    300                                         uint16_t *        setme )
     301static TR_INLINE void tr_peerIoReadUint16( tr_peerIo        * io,
     302                                           struct evbuffer * inbuf,
     303                                           uint16_t         * setme )
    301304{
    302305    uint16_t tmp;
     
    305308}
    306309
    307 static TR_INLINE void tr_peerIoReadUint32( tr_peerIo *      io,
    308                                         struct evbuffer * inbuf,
    309                                         uint32_t *        setme )
     310static TR_INLINE void tr_peerIoReadUint32( tr_peerIo        * io,
     311                                           struct evbuffer * inbuf,
     312                                           uint32_t         * setme )
    310313{
    311314    uint32_t tmp;
     
    314317}
    315318
    316 void      tr_peerIoDrain( tr_peerIo *      io,
    317                           struct evbuffer * inbuf,
    318                           size_t            byteCount );
     319void      tr_peerIoDrain( tr_peerIo        * io,
     320                          struct evbuffer  * inbuf,
     321                          size_t             byteCount );
    319322
    320323/**
  • branches/1.5x/libtransmission/peer-msgs.c

    r7722 r7771  
    786786    struct peer_request req;
    787787
     788    dbgmsg( msgs, "clientIsChoked %d, download allowed %d, len %d, max %d, msgs->clientWillAskFor.len %d",
     789            (int)msgs->peer->clientIsChoked,
     790            (int)tr_torrentIsPieceTransferAllowed( msgs->torrent, TR_PEER_TO_CLIENT ),
     791            len, max, msgs->clientWillAskFor.len );
     792
    788793    if( msgs->peer->clientIsChoked )
    789794        return;
     
    809814            ++sent;
    810815        }
     816        else dbgmsg( msgs, "not asking for it because we've already got it..." );
    811817    }
    812818
     
    11671173    tr_peerIoReadUint8( msgs->peer->io, inbuf, &id );
    11681174    msgs->incoming.id = id;
     1175    dbgmsg( msgs, "msgs->incoming.id is now %d; msgs->incoming.length is %zu", id, (size_t)msgs->incoming.length );
    11691176
    11701177    if( id == BT_PIECE )
     
    13361343    --msglen; /* id length */
    13371344
     1345    dbgmsg( msgs, "got BT id %d, len %d, buffer size is %zu", (int)id, (int)msglen, inlen );
     1346
    13381347    if( inlen < msglen )
    13391348        return READ_LATER;
    1340 
    1341     dbgmsg( msgs, "got BT id %d, len %d, buffer size is %zu", (int)id, (int)msglen, inlen );
    13421349
    13431350    if( !messageLengthIsCorrect( msgs, id, msglen + 1 ) )
     
    16011608    const size_t      inlen = EVBUFFER_LENGTH( in );
    16021609
     1610    dbgmsg( msgs, "canRead: inlen is %zu, msgs->state is %d", inlen, msgs->state );
     1611
    16031612    if( !inlen )
    16041613    {
     
    16241633            assert( 0 );
    16251634    }
     1635
     1636    dbgmsg( msgs, "canRead: ret is %d", (int)ret );
    16261637
    16271638    /* log the raw data that was read */
     
    19571968            int bencLen;
    19581969            uint8_t * tmp, *walk;
     1970            tr_peerIo       * io  = msgs->peer->io;
    19591971            struct evbuffer * out = msgs->outMessages;
    19601972
     
    20392051            /* write the pex message */
    20402052            benc = tr_bencSave( &val, &bencLen );
    2041             tr_peerIoWriteUint32( msgs->peer->io, out, 2 * sizeof( uint8_t ) + bencLen );
    2042             tr_peerIoWriteUint8 ( msgs->peer->io, out, BT_LTEP );
    2043             tr_peerIoWriteUint8 ( msgs->peer->io, out, msgs->ut_pex_id );
    2044             tr_peerIoWriteBytes ( msgs->peer->io, out, benc, bencLen );
     2053            tr_peerIoWriteUint32( io, out, 2 * sizeof( uint8_t ) + bencLen );
     2054            tr_peerIoWriteUint8 ( io, out, BT_LTEP );
     2055            tr_peerIoWriteUint8 ( io, out, msgs->ut_pex_id );
     2056            tr_peerIoWriteBytes ( io, out, benc, bencLen );
    20452057            pokeBatchPeriod( msgs, HIGH_PRIORITY_INTERVAL_SECS );
    20462058            dbgmsg( msgs, "sending a pex message; outMessage size is now %zu", EVBUFFER_LENGTH( out ) );
     2059            dbgOutMessageLen( msgs );
    20472060
    20482061            tr_free( benc );
  • branches/1.5x/macosx/version.sh

    r7728 r7771  
    99# these should be the only two lines you need to change
    1010PEERID_PREFIX="-TR142X-"
    11 USERAGENT_PREFIX="1.50b2"
     11USERAGENT_PREFIX="1.50b3"
    1212
    1313SVN_REVISION=`find ./libtransmission -name "*\.[chmp]" -o -name "*\.cpp" -o -name "*\.po" -o -name "*\.sh" | \
Note: See TracChangeset for help on using the changeset viewer.