diff --git a/src/ioc/rsrv/caservertask.c b/src/ioc/rsrv/caservertask.c index 80310a422..24fa5859f 100644 --- a/src/ioc/rsrv/caservertask.c +++ b/src/ioc/rsrv/caservertask.c @@ -66,17 +66,6 @@ static void req_server (void *pParm) IOC_sock = conf->tcp; - /* listen and accept new connections */ - if ( listen ( IOC_sock, 20 ) < 0 ) { - char sockErrBuf[64]; - epicsSocketConvertErrnoToString ( - sockErrBuf, sizeof ( sockErrBuf ) ); - errlogPrintf ( "CAS: Listen error: %s\n", - sockErrBuf ); - epicsSocketDestroy (IOC_sock); - epicsThreadSuspendSelf (); - } - epicsEventSignal(castcp_startStopEvent); while (TRUE) { @@ -194,7 +183,7 @@ SOCKET* rsrv_grab_tcp(unsigned short *port) epicsSocketEnableAddressReuseDuringTimeWaitState ( tcpsock ); - if(bind(tcpsock, &scratch.sa, sizeof(scratch))==0) { + if(bind(tcpsock, &scratch.sa, sizeof(scratch))==0 && listen(tcpsock, 20)==0) { if(scratch.ia.sin_port==0) { /* use first socket to pick a random port */ osiSocklen_t alen = sizeof(ifaceAddr);