Index: /trunk/zoo-project/zoo-kernel/request_parser.c
===================================================================
--- /trunk/zoo-project/zoo-kernel/request_parser.c	(revision 755)
+++ /trunk/zoo-project/zoo-kernel/request_parser.c	(revision 756)
@@ -1688,5 +1688,5 @@
 	setMapArray(lres,"text",length,message);
 	setMapArray(lres,"locator",length,toCheck);
-	setMapArray(lres,"code",length,"MissingParameter");
+	setMapArray(lres,"code",length,"MissingParameterValue");
       }
       free(message);
@@ -1754,5 +1754,5 @@
       }
       if(lres==NULL){
-	lres=createMap("code","InvalidParameterValue");
+	lres=createMap("code",code);
 	addToMap(lres,"text",message);
 	addToMap(lres,"locator",locator);       
@@ -1765,5 +1765,5 @@
 	setMapArray(lres,"text",length,message);
 	setMapArray(lres,"locator",length,locator);
-	setMapArray(lres,"code",length,"InvalidParameterValue");
+	setMapArray(lres,"code",length,code);
       }
     }
Index: /trunk/zoo-project/zoo-kernel/response_print.c
===================================================================
--- /trunk/zoo-project/zoo-kernel/response_print.c	(revision 755)
+++ /trunk/zoo-project/zoo-kernel/response_print.c	(revision 756)
@@ -720,9 +720,17 @@
 	free(val);
       }
+      else{
+	if(vid==0 && i>=2)
+	  xmlNewProp(n,BAD_CAST capabilities[vid][i],BAD_CAST tmp1->value);
+	else
+	  xmlNewNsProp(n,ns,BAD_CAST capabilities[vid][i],BAD_CAST tmp1->value);
+      }
+    }
+    else{
+      if(vid==0 && i>=2)
+	xmlNewProp(n,BAD_CAST capabilities[vid][i],BAD_CAST capabilities[vid][i+1]);
       else
-	xmlNewNsProp(n,ns,BAD_CAST capabilities[vid][i],BAD_CAST tmp1->value);
-    }
-    else
-      xmlNewNsProp(n,ns,BAD_CAST capabilities[vid][i],BAD_CAST capabilities[vid][i+1]);
+	xmlNewNsProp(n,ns,BAD_CAST capabilities[vid][i],BAD_CAST capabilities[vid][i+1]);
+    }
   }
 }
Index: /trunk/zoo-project/zoo-kernel/server_internal.c
===================================================================
--- /trunk/zoo-project/zoo-kernel/server_internal.c	(revision 755)
+++ /trunk/zoo-project/zoo-kernel/server_internal.c	(revision 756)
@@ -237,22 +237,39 @@
  */
 int isValidLang(maps* conf,const char *str){
-  map *tmpMap=getMapFromMaps(conf,"main","lang");
-  char *tmp=zStrdup(tmpMap->value);
+  map *tmpMap=getMapFromMaps(conf,"main","language");
+  char *tmp0=NULL,*tmp=NULL,*tmp1=NULL;
+  if(tmpMap!=NULL)
+    tmp0=zStrdup(tmpMap->value);
+  tmpMap=getMapFromMaps(conf,"main","lang");
+  if(tmpMap!=NULL)
+    tmp=zStrdup(tmpMap->value);
+  if(tmp0!=NULL && tmp!=NULL){
+    tmp1=(char*)malloc((strlen(tmp0)+strlen(tmp)+2)*sizeof(char));
+    sprintf(tmp1,"%s,%s",tmp0,tmp);
+    free(tmp0);
+    free(tmp);
+  }else{
+    if(tmp!=NULL){
+      tmp1==zStrdup(tmp);
+      free(tmp);
+    }else{
+      if(tmp0!=NULL){
+	tmp1==zStrdup(tmp0);
+	free(tmp0);
+      }
+    }
+  }
   char *pToken,*saveptr;
-  pToken=strtok_r(tmp,",",&saveptr);
+  pToken=strtok_r(tmp1,",",&saveptr);
   int res=-1;
-  char *pToken1,*saveptr1;
-  pToken1=strtok_r(tmp,",",&saveptr1);
-  while(pToken1!=NULL){
-    while(pToken!=NULL){
-      if(strcasecmp(pToken1,pToken)==0){
-	res=1;
-	break;
-      }
-      pToken=strtok_r(NULL,",",&saveptr);
-    }
-    pToken1=strtok_r(NULL,",",&saveptr1);
-  }
-  free(tmp);
+  while(pToken!=NULL){
+    if(strcasecmp(str,pToken)==0){
+      res=1;
+      break;
+    }
+    pToken=strtok_r(NULL,",",&saveptr);
+  }
+  if(tmp1!=NULL)
+    free(tmp1);
   return res;
 }
