Index: /trunk/zoo-project/zoo-kernel/service_internal.c
===================================================================
--- /trunk/zoo-project/zoo-kernel/service_internal.c	(revision 482)
+++ /trunk/zoo-project/zoo-kernel/service_internal.c	(revision 483)
@@ -382,5 +382,5 @@
 int zooXmlAddNs(xmlNodePtr nr,const char* url,const char* name){
 #ifdef DEBUG
-  fprintf(stderr,"zooXmlAddNs %d \n",nbNs);
+  fprintf(stderr,"zooXmlAddNs %d %s \n",nbNs,name);
 #endif
   int currId=-1;
@@ -2028,4 +2028,5 @@
   xmlNodePtr n;
 
+  zooXmlCleanupNs();
   doc = xmlNewDoc(BAD_CAST "1.0");
   maps* tmpMap=getMaps(m,"main");
Index: /trunk/zoo-project/zoo-kernel/zoo_service_loader.c
===================================================================
--- /trunk/zoo-project/zoo-kernel/zoo_service_loader.c	(revision 482)
+++ /trunk/zoo-project/zoo-kernel/zoo_service_loader.c	(revision 483)
@@ -198,8 +198,9 @@
     return 1;
   DIR *dirp = opendir(conf_dir);
-  if(dirp==NULL){ 
-    dup2(saved_stdout,fileno(stdout));
-    errorException(m, _("The specified path doesn't exist."),"InvalidParameterValue","metapath");
-    return -1;
+  if(dirp==NULL){
+    if(level>0)
+      return 1;
+    else
+      return -1;
   }
   char tmp1[25];
@@ -888,6 +889,12 @@
     int saved_stdout = dup(fileno(stdout));
     dup2(fileno(stderr),fileno(stdout));
-    if(int res=recursReaddirF(m,n,conf_dir,NULL,saved_stdout,0,printGetCapabilitiesForProcess)<0)
+    if(int res=recursReaddirF(m,n,conf_dir,NULL,saved_stdout,0,printGetCapabilitiesForProcess)<0){
+      freeMaps(&m);
+      free(m);
+      free(REQUEST);
+      free(SERVICE_URL);
+      fflush(stdout);
       return res;
+    }
     dup2(saved_stdout,fileno(stdout));
     printDocument(m,doc,getpid());
@@ -2503,8 +2510,6 @@
        * this way the data will be updated at the end of the process run.
        */
-      printProcessResponse(m,request_inputs,cpid,
-			   s1,r_inputs1->value,SERVICE_STARTED,
-			   request_input_real_format,
-			   request_output_real_format);
+      printProcessResponse(m,request_inputs,cpid,s1,r_inputs1->value,SERVICE_STARTED,
+			   request_input_real_format,request_output_real_format);
 #ifndef WIN32
       fflush(stdout);
