summaryrefslogtreecommitdiff
path: root/ace/Service_Manager.cpp
diff options
context:
space:
mode:
authorschmidt <douglascraigschmidt@users.noreply.github.com>2000-09-11 13:34:51 +0000
committerschmidt <douglascraigschmidt@users.noreply.github.com>2000-09-11 13:34:51 +0000
commitd65fc11b5c5c4cfcc453e8218ab7eadbe1cb5f65 (patch)
tree0c75022a67fc16080b3fea0d847a2204213430c0 /ace/Service_Manager.cpp
parente1b1b38e6b3f8a07445a998dabcab161723b8ff1 (diff)
downloadATCD-d65fc11b5c5c4cfcc453e8218ab7eadbe1cb5f65.tar.gz
ChangeLogTag:Mon Sep 11 08:10:21 2000 Douglas C. Schmidt <schmidt@ace.cs.wustl.edu>
Diffstat (limited to 'ace/Service_Manager.cpp')
-rw-r--r--ace/Service_Manager.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/ace/Service_Manager.cpp b/ace/Service_Manager.cpp
index 40425194e9c..f54e8162d00 100644
--- a/ace/Service_Manager.cpp
+++ b/ace/Service_Manager.cpp
@@ -266,7 +266,16 @@ ACE_Service_Manager::handle_input (ACE_HANDLE)
// Read service request from client.
- switch (client_stream_.recv (request, sizeof request))
+ ssize_t result;
+
+ // Keep looping until we actually get the request. Note that Win32
+ // sets the socket into non-blocking mode, so we may need to loop if
+ // the system is heavily loaded.
+ do
+ result = client_stream_.recv (request, sizeof request);
+ while (result == -1 && errno == EWOULDBLOCK)
+
+ switch (result)
{
case -1:
if (this->debug_)