summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog14
-rw-r--r--ChangeLogs/ChangeLog-03a14
-rw-r--r--ace/Event_Handler.h5
-rw-r--r--ace/TP_Reactor.cpp6
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