Ignore:
Timestamp:
Jan 12, 2006, 7:12:58 PM (16 years ago)
Author:
root
Message:

Update 2006-01-11

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/libtransmission/net.c

    r1 r26  
    107107}
    108108
    109 int tr_netBind( int * port )
    110 {
    111     int s, i;
     109int tr_netBind( int port )
     110{
     111    int s;
    112112    struct sockaddr_in sock;
    113     int minPort, maxPort;
     113#ifdef SO_REUSEADDR
     114    int optval;
     115#endif
    114116
    115117    s = createSocket();
     
    119121    }
    120122
    121     minPort = *port;
    122     maxPort = minPort + 1000;
    123     maxPort = MIN( maxPort, 65535 );
    124 
    125     for( i = minPort; i <= maxPort; i++ )
    126     {
    127         memset( &sock, 0, sizeof( sock ) );
    128         sock.sin_family      = AF_INET;
    129         sock.sin_addr.s_addr = INADDR_ANY;
    130         sock.sin_port        = htons( i );
    131 
    132         if( !bind( s, (struct sockaddr *) &sock,
    133                    sizeof( struct sockaddr_in ) ) )
    134         {
    135             break;
    136         }
    137     }
    138 
    139     if( i > maxPort )
    140     {
     123#ifdef SO_REUSEADDR
     124    optval = 1;
     125    setsockopt( s, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof( optval ) );
     126#endif
     127
     128    memset( &sock, 0, sizeof( sock ) );
     129    sock.sin_family      = AF_INET;
     130    sock.sin_addr.s_addr = INADDR_ANY;
     131    sock.sin_port        = htons( port );
     132
     133    if( bind( s, (struct sockaddr *) &sock,
     134               sizeof( struct sockaddr_in ) ) )
     135    {
     136        tr_err( "Could not bind port %d", port );
    141137        tr_netClose( s );
    142         tr_err( "Could not bind any port from %d to %d",
    143                 minPort, maxPort );
    144138        return -1;
    145139    }
    146140   
    147     tr_inf( "Binded port %d", i );
    148     *port = i;
     141    tr_inf( "Binded port %d", port );
    149142    listen( s, 5 );
    150143
Note: See TracChangeset for help on using the changeset viewer.