summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjohn_c <john_c@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2006-03-15 06:00:20 +0000
committerjohn_c <john_c@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2006-03-15 06:00:20 +0000
commit6a536cc7989b6899ed06cc3da542e5a9053f8b2f (patch)
tree385b6022324d855a682d10fec336ef4572e42c14
parent5a0c5dafe093f0e53f5ee0f7b3b9a658a300caba (diff)
downloadATCD-6a536cc7989b6899ed06cc3da542e5a9053f8b2f.tar.gz
Tue Mar 14 08:12:55 UTC 2006 Ciju John <john_c@ociweb.com>
-rw-r--r--TAO/ChangeLog17
-rw-r--r--TAO/tao/Connection_Handler.cpp2
2 files changed, 19 insertions, 0 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog
index 7bd31439346..2e0a55556f2 100644
--- a/TAO/ChangeLog
+++ b/TAO/ChangeLog
@@ -1,3 +1,20 @@
+Tue Mar 14 08:12:55 UTC 2006 Ciju John <john_c@ociweb.com>
+
+ * tao/Connection_Handler.cpp:
+
+ When the client closes its connections, it sends an EOF to the
+ server. The sever reactor gets an event for that handler. It
+ first suspends the handler and then dispatches a thread to
+ handle_input(). Some where down the lane, a read() is done on the
+ handle and automatically the handle is resumed. At this point
+ another thread CAN enter the reactor and since the handle being
+ closed has been resumed, the reactor will add it to its
+ fd_set. As expected the reactor gets an event on that handle and
+ dispatches someone else to handle that event. What this patch
+ does is prevent the closing handler from being resumed. Thus it
+ never does get added to the reactor fd_set and the possibility
+ of getting a nil handler is removed.
+
Tue Mar 14 15:25:48 UTC 2006 J.T. Conklin <jtc@acorntoolworks.com>
* tao/Domain.pidl:
diff --git a/TAO/tao/Connection_Handler.cpp b/TAO/tao/Connection_Handler.cpp
index 0b190b16c95..82452d015f5 100644
--- a/TAO/tao/Connection_Handler.cpp
+++ b/TAO/tao/Connection_Handler.cpp
@@ -282,6 +282,8 @@ TAO_Connection_Handler::handle_input_internal (
t_id, handle, h, return_value));
}
+ if (return_value == -1)
+ resume_handle.set_flag (TAO_Resume_Handle::TAO_HANDLE_LEAVE_SUSPENDED);
return return_value;
}