summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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 */