summaryrefslogtreecommitdiff
path: root/ace/Service_Manager.cpp
diff options
context:
space:
mode:
authornanbor <nanbor@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-07-15 21:35:07 +0000
committernanbor <nanbor@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-07-15 21:35:07 +0000
commit752578774a45c949a8ea3c4afeae0188039f85d8 (patch)
tree16464735646397f994d6a534870767d8458bc51d /ace/Service_Manager.cpp
parent5f5bd628a3699eb7f3f4c2bb191e9537ba70554d (diff)
downloadATCD-752578774a45c949a8ea3c4afeae0188039f85d8.tar.gz
ChangeLogTag:Thu Jul 15 16:20:43 1999 Nanbor Wang <nanbor@cs.wustl.edu>
Diffstat (limited to 'ace/Service_Manager.cpp')
-rw-r--r--ace/Service_Manager.cpp17
1 files changed, 12 insertions, 5 deletions
diff --git a/ace/Service_Manager.cpp b/ace/Service_Manager.cpp
index d22733c872d..3e49485f5f7 100644
--- a/ace/Service_Manager.cpp
+++ b/ace/Service_Manager.cpp
@@ -103,7 +103,8 @@ ACE_Service_Manager::init (int argc, ASYS_TCHAR *argv[])
break;
}
- if (this->open (local_addr) == -1)
+ if (this->get_handle () == ACE_INVALID_HANDLE &&
+ this->open (local_addr) == -1)
ACE_ERROR_RETURN ((LM_ERROR,
ASYS_TEXT ("%p\n"),
ASYS_TEXT ("open")), -1);
@@ -128,11 +129,17 @@ ACE_Service_Manager::fini (void)
{
ACE_TRACE ("ACE_Service_Manager::fini");
+ int retv = 0;
if (this->get_handle () != ACE_INVALID_HANDLE)
- return ACE_Reactor::instance ()->remove_handler
- (this,
- ACE_Event_Handler::ACCEPT_MASK);
- return 0;
+ {
+ retv = ACE_Reactor::instance ()->remove_handler
+ (this,
+ ACE_Event_Handler::ACCEPT_MASK |
+ ACE_Event_Handler::DONT_CALL);
+ this->handle_close (ACE_INVALID_HANDLE,
+ ACE_Event_Handler::NULL_MASK);
+ }
+ return retv;
}
ACE_HANDLE