summaryrefslogtreecommitdiff
path: root/ndb
diff options
context:
space:
mode:
authorunknown <jonas@perch.ndb.mysql.com>2007-05-18 11:06:03 +0200
committerunknown <jonas@perch.ndb.mysql.com>2007-05-18 11:06:03 +0200
commita5731933a1877dafad0783a226460067bd91bb70 (patch)
tree57a8da2b5010d6c13c52178e35b6a7e6363b1ca9 /ndb
parent9bfed5190a93327194ed323c6d80a23956ef3c07 (diff)
downloadmariadb-git-a5731933a1877dafad0783a226460067bd91bb70.tar.gz
ndb - bug#28443
review comment if some tcp-transporter has data, then do select with timeout 0 ndb/src/common/transporter/TransporterRegistry.cpp: review comment if some tcp-transporter has data, then do select with timeout 0
Diffstat (limited to 'ndb')
-rw-r--r--ndb/src/common/transporter/TransporterRegistry.cpp34
1 files changed, 18 insertions, 16 deletions
diff --git a/ndb/src/common/transporter/TransporterRegistry.cpp b/ndb/src/common/transporter/TransporterRegistry.cpp
index c0ee93a8489..c459b5640dc 100644
--- a/ndb/src/common/transporter/TransporterRegistry.cpp
+++ b/ndb/src/common/transporter/TransporterRegistry.cpp
@@ -814,22 +814,6 @@ TransporterRegistry::poll_TCP(Uint32 timeOutMillis)
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;
// Needed for TCP/IP connections
@@ -855,6 +839,24 @@ TransporterRegistry::poll_TCP(Uint32 timeOutMillis)
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
maxSocketValue++;