summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Huston <shuston@riverace.com>2012-11-29 15:12:42 +0000
committerSteve Huston <shuston@riverace.com>2012-11-29 15:12:42 +0000
commit3c0c4a5aa0ef013109d80ed03d0997df34129b71 (patch)
treea6e492eae799fe9cd7623a91c815296c67d659b0
parent925b68ddbb9a6ea7a2c945563c72fc00efa45cb5 (diff)
downloadATCD-3c0c4a5aa0ef013109d80ed03d0997df34129b71.tar.gz
ChangeLogTag:Thu Nov 29 15:08:26 UTC 2012 Steve Huston <shuston@riverace.com>
-rw-r--r--ChangeLog6
-rw-r--r--ace/ACE.cpp8
2 files changed, 13 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 9accdc58ca7..8794e3ff93d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Thu Nov 29 15:08:26 UTC 2012 Steve Huston <shuston@riverace.com>
+
+ * ace/ACE.cpp (handle_timed_complete): Adapt to an occasionally seen
+ scenario where only the POLLERR bit is set on a failed connect.
+ This is for the poll() case, not select().
+
Tue Nov 20 23:55:57 UTC 2012 Steve Huston <shuston@riverace.com>
* ace/config-hpux-11.00.h:
diff --git a/ace/ACE.cpp b/ace/ACE.cpp
index 952e83b9bed..8d6d6fa1e82 100644
--- a/ace/ACE.cpp
+++ b/ace/ACE.cpp
@@ -2552,7 +2552,13 @@ ACE::handle_timed_complete (ACE_HANDLE h,
else
# if defined (ACE_HAS_POLL)
- need_to_check = (fds.revents & POLLIN);
+ {
+ // The "official" bit for failed connect is POLLIN. However, POLLERR
+ // is often set and there are occasional cases seen with some kernels
+ // where only POLLERR is set on a failed connect.
+ need_to_check = (fds.revents & POLLIN) || (fds.revents & POLLERR);
+ known_failure = (fds.revents & POLLERR)
+ }
# else
need_to_check = true;
# endif /* ACE_HAS_POLL */