ndb - bug#28443

  review comment
  if some tcp-transporter has data, then do select with timeout 0
parent b26bbbb8
...@@ -814,22 +814,6 @@ TransporterRegistry::poll_TCP(Uint32 timeOutMillis) ...@@ -814,22 +814,6 @@ TransporterRegistry::poll_TCP(Uint32 timeOutMillis)
return 0; return 0;
} }
struct timeval timeout;
#ifdef NDB_OSE
// Return directly if there are no TCP transporters configured
if(timeOutMillis <= 1){
timeout.tv_sec = 0;
timeout.tv_usec = 1025;
} else {
timeout.tv_sec = timeOutMillis / 1000;
timeout.tv_usec = (timeOutMillis % 1000) * 1000;
}
#else
timeout.tv_sec = timeOutMillis / 1000;
timeout.tv_usec = (timeOutMillis % 1000) * 1000;
#endif
NDB_SOCKET_TYPE maxSocketValue = -1; NDB_SOCKET_TYPE maxSocketValue = -1;
// Needed for TCP/IP connections // Needed for TCP/IP connections
...@@ -855,6 +839,24 @@ TransporterRegistry::poll_TCP(Uint32 timeOutMillis) ...@@ -855,6 +839,24 @@ TransporterRegistry::poll_TCP(Uint32 timeOutMillis)
hasdata |= t->hasReceiveData(); hasdata |= t->hasReceiveData();
} }
timeOutMillis = hasdata ? 0 : timeOutMillis;
struct timeval timeout;
#ifdef NDB_OSE
// Return directly if there are no TCP transporters configured
if(timeOutMillis <= 1){
timeout.tv_sec = 0;
timeout.tv_usec = 1025;
} else {
timeout.tv_sec = timeOutMillis / 1000;
timeout.tv_usec = (timeOutMillis % 1000) * 1000;
}
#else
timeout.tv_sec = timeOutMillis / 1000;
timeout.tv_usec = (timeOutMillis % 1000) * 1000;
#endif
// The highest socket value plus one // The highest socket value plus one
maxSocketValue++; maxSocketValue++;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment