diff options
author | Steve Huston <shuston@riverace.com> | 2015-03-12 18:52:45 -0400 |
---|---|---|
committer | Steve Huston <shuston@riverace.com> | 2015-03-12 18:52:45 -0400 |
commit | 47ccfd63e27de8fa9c92fad653e40a49e404efb3 (patch) | |
tree | 3e1743623aa3f68b4e3b9a3c5cb87a49015aee9a /ACE/ace/Dev_Poll_Reactor.cpp | |
parent | 2090102d827e2010a939d9ececd1118fa816fff9 (diff) | |
parent | 162ff579089f2c28b72f1e2952baeca125dcfb24 (diff) | |
download | ATCD-47ccfd63e27de8fa9c92fad653e40a49e404efb3.tar.gz |
Merge back from master to prepare for pull
Diffstat (limited to 'ACE/ace/Dev_Poll_Reactor.cpp')
-rw-r--r-- | ACE/ace/Dev_Poll_Reactor.cpp | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/ACE/ace/Dev_Poll_Reactor.cpp b/ACE/ace/Dev_Poll_Reactor.cpp index 9bf45ceb24e..87d78be7197 100644 --- a/ACE/ace/Dev_Poll_Reactor.cpp +++ b/ACE/ace/Dev_Poll_Reactor.cpp @@ -1320,7 +1320,22 @@ ACE_Dev_Poll_Reactor::dispatch_io_event (Token_Guard &guard) if (info != 0 && info->event_handler == eh) { if (status < 0) - this->remove_handler_i (handle, disp_mask, grd); + { + this->remove_handler_i (handle, disp_mask, grd); +#ifdef ACE_HAS_EVENT_POLL + // epoll-based effectively suspends handlers around the upcall. + // If the handler must be resumed, check to be sure it's the + // same handle/handler combination still. + if (reactor_resumes_eh) + { + info = this->handler_rep_.find (handle); + if (info != 0 && info->event_handler == eh) + { + this->resume_handler_i (handle); + } + } +#endif /* ACE_HAS_EVENT_POLL */ + } } } // Scope close handles eh ref count decrement, if needed. |