diff options
-rw-r--r-- | ChangeLog | 14 | ||||
-rw-r--r-- | ChangeLogs/ChangeLog-03a | 14 | ||||
-rw-r--r-- | ace/Event_Handler.h | 5 | ||||
-rw-r--r-- | ace/TP_Reactor.cpp | 6 |
4 files changed, 38 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog index 2e32d7796a8..5baaa61a48b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +Tue Nov 12 14:12:59 2002 Balachandran Natarajan <bala@isis-server.isis.vanderbilt.edu> + + This is a hackish fix for BUG 1361. Please see + http://deuce.doc.wustl.edu/bugzilla/show_bug.cgi?id=1361 + for details of this problem + + * ace/TP_Reactor.cpp (handle_socket_events): A hack to prevent + BUG 1361 from surfacing for applications like TAO, using the + TP_Reactor. This fix basically ensures that resume_i () is + not called naively. + + * ace/Event_Handler.h: Added a enum type which could be could be + used by the TP_Reactor. + Tue Nov 12 11:53:29 2002 Steve Huston <shuston@riverace.com> * tests/run_test.lst: Change FIFO_Test from !MSVC to !Win32 to diff --git a/ChangeLogs/ChangeLog-03a b/ChangeLogs/ChangeLog-03a index 2e32d7796a8..5baaa61a48b 100644 --- a/ChangeLogs/ChangeLog-03a +++ b/ChangeLogs/ChangeLog-03a @@ -1,3 +1,17 @@ +Tue Nov 12 14:12:59 2002 Balachandran Natarajan <bala@isis-server.isis.vanderbilt.edu> + + This is a hackish fix for BUG 1361. Please see + http://deuce.doc.wustl.edu/bugzilla/show_bug.cgi?id=1361 + for details of this problem + + * ace/TP_Reactor.cpp (handle_socket_events): A hack to prevent + BUG 1361 from surfacing for applications like TAO, using the + TP_Reactor. This fix basically ensures that resume_i () is + not called naively. + + * ace/Event_Handler.h: Added a enum type which could be could be + used by the TP_Reactor. + Tue Nov 12 11:53:29 2002 Steve Huston <shuston@riverace.com> * tests/run_test.lst: Change FIFO_Test from !MSVC to !Win32 to diff --git a/ace/Event_Handler.h b/ace/Event_Handler.h index 470751fb860..e5f0df47427 100644 --- a/ace/Event_Handler.h +++ b/ace/Event_Handler.h @@ -132,7 +132,12 @@ public: enum { + /// The handler is not resumed at all. Could lead to deadlock.. + ACE_EVENT_HANDLER_NOT_RESUMED = -1, + /// The reactor takes responsibility of resuming the handler and + /// is the default ACE_REACTOR_RESUMES_HANDLER = 0, + /// The application takes responsibility of resuming the handler ACE_APPLICATION_RESUMES_HANDLER }; /* Called to figure out whether the handler needs to resumed by the diff --git a/ace/TP_Reactor.cpp b/ace/TP_Reactor.cpp index 1f63c88e1f3..8c58233a391 100644 --- a/ace/TP_Reactor.cpp +++ b/ace/TP_Reactor.cpp @@ -562,7 +562,11 @@ ACE_TP_Reactor::handle_socket_events (int &event_count, if (this->dispatch_socket_event (dispatch_info) == 0) ++result; // Dispatched an event - int flag = 0; + // This is to get around a problem/ which is well described in + // 1361. This is just a work around that would help applications + // from resuming handles at the most inopportune moment. + int flag = + ACE_Event_Handler::ACE_EVENT_HANDLER_NOT_RESUMED; // Acquire the token since we want to access the handler // repository. The call to find () does not hold a lock and hence |