fixed 1st argument to select
This commit is contained in:
@@ -1619,26 +1619,24 @@ void cac::waitUntilNoRecvThreadsPending ()
|
||||
{
|
||||
fd_set mask;
|
||||
FD_ZERO ( & mask );
|
||||
int count = 0;
|
||||
SOCKET maxFD = 0;
|
||||
epicsGuard < cacMutex > guard ( this->mutex );
|
||||
tsDLIter < tcpiiu > iter = this->serverList.firstIter ();
|
||||
if ( this->pudpiiu ) {
|
||||
this->pudpiiu->fdMaskSet ( mask );
|
||||
count++;
|
||||
this->pudpiiu->fdMaskSet ( mask, maxFD );
|
||||
}
|
||||
while ( iter.valid() ) {
|
||||
iter->fdMaskSet ( mask );
|
||||
count++;
|
||||
iter->fdMaskSet ( mask, maxFD );
|
||||
iter++;
|
||||
}
|
||||
|
||||
struct timeval delay = { 0, 0 };
|
||||
int status = select ( count, & mask, 0, 0, & delay );
|
||||
int status = select ( maxFD+1, & mask, 0, 0, & delay );
|
||||
if ( status <= 0 ) {
|
||||
return;
|
||||
}
|
||||
this->nRecvThreadsPending =
|
||||
static_cast < unsigned > ( count );
|
||||
static_cast < unsigned > ( status );
|
||||
}
|
||||
|
||||
this->recvThreadActivityComplete.wait ( 0.1 );
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
#include "epicsThread.h"
|
||||
#include "epicsMemory.h"
|
||||
#include "epicsTime.h"
|
||||
#include "tsMinMax.h"
|
||||
|
||||
#ifdef udpiiuh_accessh_epicsExportSharedSymbols
|
||||
# define epicsExportSharedSymbols
|
||||
@@ -98,7 +99,7 @@ public:
|
||||
bool pushDatagramMsg ( const caHdr &hdr, const void *pExt, ca_uint16_t extsize);
|
||||
void shutdown ();
|
||||
double roundTripDelayEstimate () const;
|
||||
void fdMaskSet ( fd_set & mask ) const;
|
||||
void fdMaskSet ( fd_set & mask, SOCKET & maxFD ) const;
|
||||
|
||||
// exceptions
|
||||
class noSocket {};
|
||||
@@ -222,8 +223,9 @@ inline double udpiiu::roundTripDelayEstimate () const
|
||||
return this->rtteMean;
|
||||
}
|
||||
|
||||
inline void udpiiu::fdMaskSet ( fd_set & mask ) const
|
||||
inline void udpiiu::fdMaskSet ( fd_set & mask, SOCKET & maxFD ) const
|
||||
{
|
||||
maxFD = tsMax ( this->sock, maxFD );
|
||||
FD_SET ( this->sock, & mask );
|
||||
}
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
|
||||
#include "epicsMemory.h"
|
||||
#include "tsDLList.h"
|
||||
#include "tsMinMax.h"
|
||||
|
||||
#include "comBuf.h"
|
||||
#include "caServerID.h"
|
||||
@@ -133,7 +134,7 @@ public:
|
||||
|
||||
bool bytesArePendingInOS () const;
|
||||
|
||||
void fdMaskSet ( fd_set & ) const;
|
||||
void fdMaskSet ( fd_set &, SOCKET & maxFd ) const;
|
||||
|
||||
private:
|
||||
hostNameCache hostNameCacheInstance;
|
||||
@@ -249,8 +250,9 @@ inline unsigned tcpiiu::channelCount ()
|
||||
return this->channelList.count ();
|
||||
}
|
||||
|
||||
inline void tcpiiu::fdMaskSet ( fd_set & mask ) const
|
||||
inline void tcpiiu::fdMaskSet ( fd_set & mask, SOCKET & maxFD ) const
|
||||
{
|
||||
maxFD = tsMax ( this->sock, maxFD );
|
||||
FD_SET ( this->sock, & mask );
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user