diff options
author | john_c <john_c@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2006-03-15 06:00:20 +0000 |
---|---|---|
committer | john_c <john_c@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2006-03-15 06:00:20 +0000 |
commit | 6a536cc7989b6899ed06cc3da542e5a9053f8b2f (patch) | |
tree | 385b6022324d855a682d10fec336ef4572e42c14 | |
parent | 5a0c5dafe093f0e53f5ee0f7b3b9a658a300caba (diff) | |
download | ATCD-6a536cc7989b6899ed06cc3da542e5a9053f8b2f.tar.gz |
Tue Mar 14 08:12:55 UTC 2006 Ciju John <john_c@ociweb.com>
-rw-r--r-- | TAO/ChangeLog | 17 | ||||
-rw-r--r-- | TAO/tao/Connection_Handler.cpp | 2 |
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; } |