Ignore:
Timestamp:
Dec 2, 2008, 3:41:58 AM (13 years ago)
Author:
charles
Message:

(libT) re-apply jhujhiti's IPv6 patch. This merges in my tr_port cleanup, so any new bugs are mine :/

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/libtransmission/peer-io.c

    r7224 r7231  
    2020 #include <winsock2.h>
    2121#else
    22  #include <netinet/in.h> /* struct in_addr */
    2322 #include <arpa/inet.h> /* inet_ntoa */
    2423#endif
     
    9897    tr_session             * session;
    9998
    100     struct in_addr           in_addr;
     99    tr_address               addr;
    101100    struct tr_iobuf        * iobuf;
    102101    tr_list                * output_datatypes; /* struct tr_datatype */
     
    239238
    240239static tr_peerIo*
    241 tr_peerIoNew( tr_session *          session,
    242               const struct in_addr * in_addr,
    243               tr_port                port,
    244               const uint8_t *        torrentHash,
    245               int                    isIncoming,
    246               int                    socket )
     240tr_peerIoNew( tr_session       * session,
     241              const tr_address * addr,
     242              tr_port            port,
     243              const uint8_t    * torrentHash,
     244              int                isIncoming,
     245              int                socket )
    247246{
    248247    tr_peerIo * io;
     
    255254    io->crypto = tr_cryptoNew( torrentHash, isIncoming );
    256255    io->session = session;
    257     io->in_addr = *in_addr;
     256    io->addr = *addr;
    258257    io->port = port;
    259258    io->socket = socket;
     
    267266
    268267tr_peerIo*
    269 tr_peerIoNewIncoming( tr_session *          session,
    270                       const struct in_addr * in_addr,
    271                       tr_port                port,
    272                       int                    socket )
     268tr_peerIoNewIncoming( tr_session       * session,
     269                      const tr_address * addr,
     270                      tr_port            port,
     271                      int                socket )
    273272{
    274273    assert( session );
    275     assert( in_addr );
     274    assert( addr );
    276275    assert( socket >= 0 );
    277276
    278     return tr_peerIoNew( session, in_addr, port,
    279                          NULL, 1,
    280                          socket );
     277    return tr_peerIoNew( session, addr, port, NULL, 1, socket );
    281278}
    282279
    283280tr_peerIo*
    284 tr_peerIoNewOutgoing( tr_session *          session,
    285                       const struct in_addr * in_addr,
    286                       int                    port,
    287                       const uint8_t *        torrentHash )
     281tr_peerIoNewOutgoing( tr_session       * session,
     282                      const tr_address * addr,
     283                      tr_port            port,
     284                      const uint8_t    * torrentHash )
    288285{
    289286    int socket;
    290287
    291288    assert( session );
    292     assert( in_addr );
    293     assert( port >= 0 );
     289    assert( addr );
    294290    assert( torrentHash );
    295291
    296     socket = tr_netOpenTCP( session, in_addr, port );
     292    socket = tr_netOpenTCP( session, addr, port );
    297293
    298294    return socket < 0
    299295           ? NULL
    300            : tr_peerIoNew( session, in_addr, port, torrentHash, 0, socket );
     296           : tr_peerIoNew( session, addr, port, torrentHash, 0, socket );
    301297}
    302298
     
    337333}
    338334
    339 const struct in_addr*
     335const tr_address*
    340336tr_peerIoGetAddress( const tr_peerIo * io,
    341337                           tr_port   * port )
     
    346342        *port = io->port;
    347343
    348     return &io->in_addr;
     344    return &io->addr;
    349345}
    350346
    351347const char*
    352 tr_peerIoAddrStr( const struct in_addr * addr,
    353                   tr_port                port )
     348tr_peerIoAddrStr( const tr_address * addr,
     349                  tr_port            port )
    354350{
    355351    static char buf[512];
    356352
    357     tr_snprintf( buf, sizeof( buf ), "%s:%u", inet_ntoa( *addr ),
    358                 ntohs( port ) );
     353    if( addr->type == TR_AF_INET )
     354        tr_snprintf( buf, sizeof( buf ), "%s:%u", tr_ntop_non_ts( addr ), ntohs( port ) );
     355    else
     356        tr_snprintf( buf, sizeof( buf ), "[%s]:%u", tr_ntop_non_ts( addr ), ntohs( port ) );
    359357    return buf;
    360358}
     
    363361tr_peerIoGetAddrStr( const tr_peerIo * io )
    364362{
    365     return tr_peerIoAddrStr( &io->in_addr, io->port );
     363    return tr_peerIoAddrStr( &io->addr, io->port );
    366364}
    367365
     
    402400        tr_netClose( io->socket );
    403401
    404     io->socket = tr_netOpenTCP( io->session, &io->in_addr, io->port );
     402    io->socket = tr_netOpenTCP( io->session, &io->addr, io->port );
    405403
    406404    if( io->socket >= 0 )
Note: See TracChangeset for help on using the changeset viewer.