Only server binds -- does this let us roam?
This commit is contained in:
+10
-10
@@ -64,16 +64,6 @@ void Connection::setup( void )
|
|||||||
throw NetworkException( "socket", errno );
|
throw NetworkException( "socket", errno );
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Bind to free local port.
|
|
||||||
This usage does not seem to be endorsed by POSIX. */
|
|
||||||
struct sockaddr_in local_addr;
|
|
||||||
local_addr.sin_family = AF_INET;
|
|
||||||
local_addr.sin_port = htons( 0 );
|
|
||||||
local_addr.sin_addr.s_addr = INADDR_ANY;
|
|
||||||
if ( bind( sock, (sockaddr *)&local_addr, sizeof( local_addr ) ) < 0 ) {
|
|
||||||
throw NetworkException( "bind", errno );
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Enable path MTU discovery */
|
/* Enable path MTU discovery */
|
||||||
char flag = IP_PMTUDISC_DO;
|
char flag = IP_PMTUDISC_DO;
|
||||||
socklen_t optlen = sizeof( flag );
|
socklen_t optlen = sizeof( flag );
|
||||||
@@ -99,6 +89,16 @@ Connection::Connection() /* server */
|
|||||||
RTTVAR( 500 )
|
RTTVAR( 500 )
|
||||||
{
|
{
|
||||||
setup();
|
setup();
|
||||||
|
|
||||||
|
/* Bind to free local port.
|
||||||
|
This usage does not seem to be endorsed by POSIX. */
|
||||||
|
struct sockaddr_in local_addr;
|
||||||
|
local_addr.sin_family = AF_INET;
|
||||||
|
local_addr.sin_port = htons( 0 );
|
||||||
|
local_addr.sin_addr.s_addr = INADDR_ANY;
|
||||||
|
if ( bind( sock, (sockaddr *)&local_addr, sizeof( local_addr ) ) < 0 ) {
|
||||||
|
throw NetworkException( "bind", errno );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Connection::Connection( const char *key_str, const char *ip, int port ) /* client */
|
Connection::Connection( const char *key_str, const char *ip, int port ) /* client */
|
||||||
|
|||||||
@@ -208,6 +208,7 @@ void serve( int host_fd )
|
|||||||
}
|
}
|
||||||
} catch ( Network::NetworkException e ) {
|
} catch ( Network::NetworkException e ) {
|
||||||
fprintf( stderr, "%s: %s\r\n", e.function.c_str(), strerror( e.the_errno ) );
|
fprintf( stderr, "%s: %s\r\n", e.function.c_str(), strerror( e.the_errno ) );
|
||||||
|
sleep( 1 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -207,6 +207,7 @@ void client( const char *ip, int port, const char *key )
|
|||||||
}
|
}
|
||||||
} catch ( Network::NetworkException e ) {
|
} catch ( Network::NetworkException e ) {
|
||||||
fprintf( stderr, "%s: %s\r\n", e.function.c_str(), strerror( e.the_errno ) );
|
fprintf( stderr, "%s: %s\r\n", e.function.c_str(), strerror( e.the_errno ) );
|
||||||
|
sleep( 1 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user