diff options
author | Steve Huston <shuston@riverace.com> | 2012-11-29 15:12:42 +0000 |
---|---|---|
committer | Steve Huston <shuston@riverace.com> | 2012-11-29 15:12:42 +0000 |
commit | 3c0c4a5aa0ef013109d80ed03d0997df34129b71 (patch) | |
tree | a6e492eae799fe9cd7623a91c815296c67d659b0 | |
parent | 925b68ddbb9a6ea7a2c945563c72fc00efa45cb5 (diff) | |
download | ATCD-3c0c4a5aa0ef013109d80ed03d0997df34129b71.tar.gz |
ChangeLogTag:Thu Nov 29 15:08:26 UTC 2012 Steve Huston <shuston@riverace.com>
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | ace/ACE.cpp | 8 |
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 */ |