Make blockingSockTest use a free port number

Instead of using the CA server port 5064 which is often
in use, have the listening socket pick a free port.
This commit is contained in:
Michael Davidsaver
2012-12-06 14:31:50 -06:00
committed by Andrew Johnson
parent 694ac0a650
commit 79bc3f2265

View File

@@ -61,7 +61,7 @@ private:
class server {
public:
server ( const address & );
server ( address & );
void start ();
void daemon ();
protected:
@@ -165,19 +165,21 @@ extern "C" void serverDaemon ( void * pParam ) {
pSrv->daemon ();
}
server::server ( const address & addrIn ) :
server::server ( address & addrIn ) :
sock ( epicsSocketCreate ( AF_INET, SOCK_STREAM, IPPROTO_TCP ) ),
id ( 0 ), exit ( false )
{
verify ( this->sock != INVALID_SOCKET );
// setup server side
address tmpAddr = addrIn;
int status = bind ( this->sock,
& tmpAddr.sa, sizeof ( tmpAddr ) );
& addrIn.sa, sizeof ( addrIn ) );
if ( status ) {
testDiag ( "bind to server socket failed, status = %d", status );
testAbort ( "Stop all CA servers before running this test." );
}
osiSocklen_t slen = sizeof ( addrIn );
if ( getsockname(this->sock, &addrIn.sa, &slen) != 0 ) {
testAbort ( "Failed to read socket address" );
}
status = listen ( this->sock, 10 );
verify ( status == 0 );
@@ -249,7 +251,7 @@ MAIN(blockingSockTest)
memset ( (char *) & addr, 0, sizeof ( addr ) );
addr.ia.sin_family = AF_INET;
addr.ia.sin_addr.s_addr = htonl ( INADDR_LOOPBACK );
addr.ia.sin_port = htons ( 5064 ); // CA
addr.ia.sin_port = 0;
server srv ( addr );
srv.start ();