myserver-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[myserver-commit] [2962] Silent exception in `ForkServer::forkServerLoop


From: Giuseppe Scrivano
Subject: [myserver-commit] [2962] Silent exception in `ForkServer::forkServerLoop'.
Date: Fri, 14 Nov 2008 19:06:17 +0000

Revision: 2962
          http://svn.sv.gnu.org/viewvc/?view=rev&root=myserver&revision=2962
Author:   gscrivano
Date:     2008-11-14 19:06:17 +0000 (Fri, 14 Nov 2008)

Log Message:
-----------
Silent exception in `ForkServer::forkServerLoop'.

Modified Paths:
--------------
    trunk/myserver/src/base/process/fork_server.cpp

Modified: trunk/myserver/src/base/process/fork_server.cpp
===================================================================
--- trunk/myserver/src/base/process/fork_server.cpp     2008-11-12 16:59:08 UTC 
(rev 2961)
+++ trunk/myserver/src/base/process/fork_server.cpp     2008-11-14 19:06:17 UTC 
(rev 2962)
@@ -310,46 +310,55 @@
 #ifdef NOT_WIN
   for (;;)
     {
-      char command;
-      u_long nbr;
-      MYSERVER_SOCKADDR_STORAGE sockaddr;
-      int len = sizeof (sockaddr);
-
-      if (!socket->dataOnRead(5, 0))
-        continue;
-
-      Socket sin = socket->accept (&sockaddr, &len);
-      Socket sout = socket->accept (&sockaddr, &len);
-
-      //if (sin.getHandle () == -1 || sout.getHandle ())
-      //  {
-      //    continue;
-      //  }
-
-      if (sin.read (&command, 1, &nbr))
+      try
         {
-          sin.shutdown (2);
-          sin.close ();
-          sout.shutdown (2);
-          sout.close ();
-          continue;
-        }
-
-      switch (command)
-        {
-        case 'e': //exit process
-          exit (0);
-          return 0;
-        case 'r':
-          if (handleRequest (sin, sout, socket))
+          char command;
+          u_long nbr;
+          MYSERVER_SOCKADDR_STORAGE sockaddr;
+          int len = sizeof (sockaddr);
+          
+          if (!socket->dataOnRead(5, 0))
+            continue;
+          
+          Socket sin = socket->accept (&sockaddr, &len);
+          Socket sout = socket->accept (&sockaddr, &len);
+          
+          //if (sin.getHandle () == -1 || sout.getHandle ())
+          //  {
+          //    continue;
+          //  }
+          
+          if (sin.read (&command, 1, &nbr))
             {
               sin.shutdown (2);
               sin.close ();
               sout.shutdown (2);
               sout.close ();
+              continue;
             }
+        
+          switch (command)
+            {
+            case 'e': //exit process
+              exit (0);
+              return 0;
+            case 'r':
+              if (handleRequest (sin, sout, socket))
+                {
+                  sin.shutdown (2);
+                  sin.close ();
+                  sout.shutdown (2);
+                  sout.close ();
+                }
+            }
         }
-
+      /* Don't let the fork server come back from this function 
+         in _any_ case.  */
+      catch(...)
+        {
+          perror ("fork server died.");
+          exit (1);
+        }
     }
 #endif
   return 0;






reply via email to

[Prev in Thread] Current Thread [Next in Thread]