Index: branches/prototype-v0/zoo-project/zoo-kernel/request_parser.c
===================================================================
--- branches/prototype-v0/zoo-project/zoo-kernel/request_parser.c	(revision 867)
+++ branches/prototype-v0/zoo-project/zoo-kernel/request_parser.c	(revision 871)
@@ -933,6 +933,16 @@
 				    tmpmaps->content =
 				      createMap (list[l], (char *) val);
+				  xmlFree (val);
 				}
-			      xmlFree (val);
+			      else{
+				if(l==0){
+				  if (tmpmaps->content != NULL)
+				    addToMap (tmpmaps->content, list[l],
+					      "string");
+				  else
+				    tmpmaps->content =
+				      createMap (list[l],"string");
+				}
+			      }
 			      free (list[l]);
 			    }
@@ -959,13 +969,13 @@
 				      tmpmaps->content =
 					createMap (coms[l], (char *) val);
+				    xmlFree (val);
 				  }
-				xmlFree (val);
 			      }
 			  }
 
 		      map *test = getMap (tmpmaps->content, "encoding");
-
+		      
 		      if (test == NULL)
-			{ 
+			{
 			  if (tmpmaps->content != NULL)
 			    addToMap (tmpmaps->content, "encoding",
@@ -977,5 +987,5 @@
 			}
 
-		      if (strcasecmp (test->value, "base64") != 0)
+		      if (getMap(tmpmaps->content,"dataType")==NULL && test!=NULL && strcasecmp (test->value, "base64") != 0)
 			{
 			  xmlChar *mv = xmlNodeListGetString (doc,
@@ -983,5 +993,5 @@
 							      1);
 			  map *ltmp =
-			    getMap (tmpmaps->content, "mimeType");
+			    getMap (tmpmaps->content, "mimeType");			  
 			  if (mv == NULL
 			      ||
@@ -1068,10 +1078,25 @@
 		      else
 			{
-			  xmlChar *tmp = xmlNodeListGetRawString (doc,
-								  cur4->xmlChildrenNode,
-								  0);
-			  addToMap (tmpmaps->content, "value",
-				    (char *) tmp);
-			  xmlFree (tmp);
+			  xmlNodePtr cur5 = cur4->children;
+			  while (cur5 != NULL
+				 && cur5->type != XML_CDATA_SECTION_NODE)
+			    cur5 = cur5->next;
+			  if (cur5 != NULL
+			      && cur5->type == XML_CDATA_SECTION_NODE)
+			    {
+			      addToMap (tmpmaps->content,
+					"value",
+					(char *) cur5->content);
+			    }
+			  else{
+			    if(cur4->xmlChildrenNode!=NULL){
+			      xmlChar *tmp = xmlNodeListGetRawString (doc,
+								      cur4->xmlChildrenNode,
+								      0);
+			      addToMap (tmpmaps->content, "value",
+					(char *) tmp);
+			      xmlFree (tmp);
+			    }
+			  }
 			}
 
Index: branches/prototype-v0/zoo-project/zoo-kernel/service.c
===================================================================
--- branches/prototype-v0/zoo-project/zoo-kernel/service.c	(revision 867)
+++ branches/prototype-v0/zoo-project/zoo-kernel/service.c	(revision 871)
@@ -925,5 +925,5 @@
   }
 
-  char *tmpV[12]={
+  char *tmpV[14]={
     (char*)"size",
     (char*)"value",
@@ -937,10 +937,12 @@
     (char*)"schema",
     (char*)"encoding",
-    (char*)"isCached"
+    (char*)"isCached",
+    (char*)"LowerCorner",
+    (char*)"UpperCorner"
   };
   sprintf(tmpLen,"%d",len+1);
   addToMap(_cursor->content,"length",tmpLen);
   int i=0;
-  for(i=0;i<12;i++){
+  for(i=0;i<14;i++){
     map* tmpVI=getMap(tmp->content,tmpV[i]);
     if(tmpVI!=NULL){
Index: branches/prototype-v0/zoo-project/zoo-kernel/ulinet.c
===================================================================
--- branches/prototype-v0/zoo-project/zoo-kernel/ulinet.c	(revision 867)
+++ branches/prototype-v0/zoo-project/zoo-kernel/ulinet.c	(revision 871)
@@ -561,5 +561,35 @@
     mc = curl_multi_perform(hInternet->handle, &still_running);
     if(mc==CURLM_OK){
+#if LIBCURL_VERSION_MINOR >= 28
       mc = curl_multi_wait(hInternet->handle, NULL, 0, 1000, &numfds);
+#else
+      struct timeval timeout;
+      fd_set fdread;
+      fd_set fdwrite;
+      fd_set fdexcep;
+      int maxfd = -1;
+
+      long curl_timeo = -1;
+
+      FD_ZERO(&fdread);
+      FD_ZERO(&fdwrite);
+      FD_ZERO(&fdexcep);
+
+      /* set a suitable timeout to play around with */
+      timeout.tv_sec = 1;
+      timeout.tv_usec = 0;
+
+      curl_multi_timeout(hInternet->handle, &curl_timeo);
+      if(curl_timeo >= 0) {
+	timeout.tv_sec = curl_timeo / 1000;
+	if(timeout.tv_sec > 1)
+	  timeout.tv_sec = 1;
+	else
+	  timeout.tv_usec = (curl_timeo % 1000) * 1000;
+      }
+
+      /* get file descriptors from the transfers */
+      mc = curl_multi_fdset(hInternet->handle, &fdread, &fdwrite, &fdexcep, &maxfd);
+#endif
     }
     if(mc != CURLM_OK) {
Index: branches/prototype-v0/zoo-project/zoo-kernel/ulinet.h
===================================================================
--- branches/prototype-v0/zoo-project/zoo-kernel/ulinet.h	(revision 867)
+++ branches/prototype-v0/zoo-project/zoo-kernel/ulinet.h	(revision 871)
@@ -30,4 +30,5 @@
 #include <fcntl.h>
 #include <curl/curl.h>
+#include <curl/curlver.h>
 #include "service.h"
 #ifndef WIN32
