Index: trunk/zoo-project/zoo-kernel/zoo_loader.c
===================================================================
--- trunk/zoo-project/zoo-kernel/zoo_loader.c	(revision 515)
+++ trunk/zoo-project/zoo-kernel/zoo_loader.c	(revision 516)
@@ -356,8 +356,5 @@
   runRequest(&tmpMap);
 
-  /** 
-   * Required but can't be made after executing a process using POST requests.
-   */
-  if(/*strncasecmp(cgiRequestMethod,"post",4)!=0 && count(tmpMap)!=1 && */tmpMap!=NULL){
+  if(tmpMap!=NULL){
     freeMap(&tmpMap);
     free(tmpMap);
Index: trunk/zoo-project/zoo-kernel/zoo_service_loader.c
===================================================================
--- trunk/zoo-project/zoo-kernel/zoo_service_loader.c	(revision 515)
+++ trunk/zoo-project/zoo-kernel/zoo_service_loader.c	(revision 516)
@@ -666,10 +666,11 @@
   
 #ifndef USE_GDB
-  (void) signal(SIGSEGV,sig_handler);
-  (void) signal(SIGTERM,sig_handler);
-  (void) signal(SIGINT,sig_handler);
-  (void) signal(SIGILL,sig_handler);
-  (void) signal(SIGFPE,sig_handler);
-  (void) signal(SIGABRT,sig_handler);
+  signal(SIGCHLD, SIG_IGN);
+  signal(SIGSEGV,sig_handler);
+  signal(SIGTERM,sig_handler);
+  signal(SIGINT,sig_handler);
+  signal(SIGILL,sig_handler);
+  signal(SIGFPE,sig_handler);
+  signal(SIGABRT,sig_handler);
 #endif
 
@@ -2716,10 +2717,10 @@
    */
 #ifndef USE_GDB
-  (void) signal(SIGSEGV,donothing);
-  (void) signal(SIGTERM,donothing);
-  (void) signal(SIGINT,donothing);
-  (void) signal(SIGILL,donothing);
-  (void) signal(SIGFPE,donothing);
-  (void) signal(SIGABRT,donothing);
+  signal(SIGSEGV,donothing);
+  signal(SIGTERM,donothing);
+  signal(SIGINT,donothing);
+  signal(SIGILL,donothing);
+  signal(SIGFPE,donothing);
+  signal(SIGABRT,donothing);
 #endif
   if(((int)getpid())!=cpid || cgiSid!=NULL){
@@ -2772,4 +2773,8 @@
 #endif
 
+  if(((int)getpid())!=cpid || cgiSid!=NULL){
+    exit(0);
+  }
+
   return 0;
 }
