Index: /branches/prototype-v0/zoo-project/zoo-kernel/configure.ac
===================================================================
--- /branches/prototype-v0/zoo-project/zoo-kernel/configure.ac	(revision 866)
+++ /branches/prototype-v0/zoo-project/zoo-kernel/configure.ac	(revision 867)
@@ -112,16 +112,16 @@
 #============================================================================
 
-AC_ARG_WITH([gettext],
-    [AS_HELP_STRING([--with-gettext=PATH], [Specifies an alternative location for the openssl library])],
-    [GETTEXT_DIR="$withval"], [GETTEXT_DIR="/usr/"])
-GETTEXT_CFLAGS="-I$GETTEXT_DIR/include"
-GETTEXT_LDFLAGS="-L$GETTEXT_DIR/lib -lintl"
-CFLAGS_SAVE="$CFLAGS"
-CFLAGS="$GETTEXT_CFLAGS"
-LIBS_SAVE="$LIBS"
-LIBS="$GETTEXT_LDFLAGS"
-AM_GNU_GETTEXT([external], [], [])
-AC_CHECK_LIB(intl,
-			[dgettext], [] , [AC_MSG_ERROR([could not find $i function in gettext library])])
+#AC_ARG_WITH([gettext],
+#    [AS_HELP_STRING([--with-gettext=PATH], [Specifies an alternative location for the openssl library])],
+#    [GETTEXT_DIR="$withval"], [GETTEXT_DIR="/usr/"])
+#GETTEXT_CFLAGS="-I$GETTEXT_DIR/include"
+#GETTEXT_LDFLAGS="-L$GETTEXT_DIR/lib -lintl"
+#CFLAGS_SAVE="$CFLAGS"
+#CFLAGS="$GETTEXT_CFLAGS"
+#LIBS_SAVE="$LIBS"
+#LIBS="$GETTEXT_LDFLAGS"
+#AM_GNU_GETTEXT([external], [], [])
+#AC_CHECK_LIB(intl,
+#			[dgettext], [] , [AC_MSG_ERROR([could not find $i function in gettext library])])
 AC_SUBST([GETTEXT_CFLAGS])
 AC_SUBST([GETTEXT_LDFLAGS])
Index: /branches/prototype-v0/zoo-project/zoo-kernel/request_parser.c
===================================================================
--- /branches/prototype-v0/zoo-project/zoo-kernel/request_parser.c	(revision 866)
+++ /branches/prototype-v0/zoo-project/zoo-kernel/request_parser.c	(revision 867)
@@ -905,5 +905,4 @@
 		  }
 
-
 		  while (cur4 != NULL)
 		    {
@@ -979,5 +978,5 @@
 
 		      if (strcasecmp (test->value, "base64") != 0)
-			{ 
+			{
 			  xmlChar *mv = xmlNodeListGetString (doc,
 							      cur4->xmlChildrenNode,
@@ -1007,4 +1006,5 @@
 							     &buffersize,
 							     "utf-8", 0);
+				  xmlFreeDoc (doc1);
 				}
 			      else
@@ -1022,14 +1022,39 @@
 			      addIntToMap (tmpmaps->content, "size",
 					   buffersize);
-			      xmlFreeDoc (doc1);
 			    }else{
-			    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){
-			      xmlFree(mv);
-			      mv=xmlStrdup(cur5->content);
+			    if(xmlStrcasecmp
+			       (cur4->name, BAD_CAST "BoundingBoxData") == 0){
+			      xmlDocPtr doc1 = xmlNewDoc(BAD_CAST "1.0");
+			      int buffersize;
+			      xmlDocSetRootElement(doc1,cur4);
+			      xmlDocDumpFormatMemoryEnc(doc1,&mv,
+							&buffersize,
+							"utf-8",0);
+			      addIntToMap (tmpmaps->content, "size",
+					   buffersize);
+			      xmlParseBoundingBox(main_conf,&tmpmaps->content,doc1);
+			    }else{
+			      xmlNodePtr cur5 = cur4->children;
+			      while (cur5 != NULL
+				     && cur5->type != XML_ELEMENT_NODE
+				     && cur5->type != XML_CDATA_SECTION_NODE)
+				cur5 = cur5->next;
+			      if (cur5 != NULL
+				  && cur5->type != XML_CDATA_SECTION_NODE)
+				{
+				  xmlDocPtr doc1 = xmlNewDoc (BAD_CAST "1.0");
+				  int buffersize;
+				  xmlDocSetRootElement (doc1, cur5);
+				  xmlDocDumpFormatMemoryEnc (doc1, &mv,
+							     &buffersize,
+							     "utf-8", 0);
+				  addIntToMap (tmpmaps->content, "size",
+					       buffersize);
+				}
+			      else /*if (cur5 != NULL
+				     && cur5->type == XML_CDATA_SECTION_NODE)*/{
+				xmlFree(mv);
+				mv=xmlStrdup(cur5->content);
+			      }
 			    }
 			  }
@@ -1102,4 +1127,41 @@
     }
   return 1;
+}
+
+/**
+ * Parse a BoundingBoxData node
+ *
+ * http://schemas.opengis.net/ows/1.1.0/owsCommon.xsd: BoundingBoxType
+ * 
+ * A map to store boundingbox information will contain:
+ *  - LowerCorner : double double (minimum within this bounding box)
+ *  - UpperCorner : double double (maximum within this bounding box)
+ *  - crs : URI (Reference to definition of the CRS)
+ *  - dimensions : int 
+ *
+ * @param main_conf the conf maps containing the main.cfg settings
+ * @param request_inputs the map storing KVP raw value 
+ * @param doc the xmlDocPtr containing the BoudingoxData node
+ * @return a map containing all the bounding box keys
+ */
+int xmlParseBoundingBox(maps** main_conf,map** current_input,xmlDocPtr doc){
+  xmlNode *root_element = xmlDocGetRootElement(doc);
+  for(xmlAttrPtr attr = root_element->properties; NULL != attr; attr = attr->next){
+    xmlChar *val = xmlGetProp (root_element, BAD_CAST attr->name);
+    addToMap(*current_input,(char*)attr->name,(char*)val);
+    xmlFree(val);
+    xmlNodePtr cur = root_element->children;
+    while(cur!=NULL && cur->type != XML_ELEMENT_NODE)
+      cur=cur->next;
+    while(cur!=NULL && cur->type==XML_ELEMENT_NODE){
+      xmlChar *val =
+	xmlNodeListGetString (doc, cur->xmlChildrenNode, 1);
+      addToMap(*current_input,(char*)cur->name,(char*)val);
+      cur=cur->next;
+      xmlFree(val);
+      while(cur!=NULL && cur->type != XML_ELEMENT_NODE)
+	cur=cur->next;
+    }
+  }
 }
 
Index: /branches/prototype-v0/zoo-project/zoo-kernel/request_parser.h
===================================================================
--- /branches/prototype-v0/zoo-project/zoo-kernel/request_parser.h	(revision 866)
+++ /branches/prototype-v0/zoo-project/zoo-kernel/request_parser.h	(revision 867)
@@ -44,4 +44,5 @@
   int kvpParseOutputs(maps**,map *,maps**);
   int xmlParseInputs(maps**,service*,maps**,xmlDocPtr,xmlNodeSet*,HINTERNET*);
+  int xmlParseBoundingBox(maps** main_conf,map** current_input,xmlDocPtr doc);
   int xmlParseOutputs(maps**,map**,maps**,xmlDocPtr,xmlNodePtr,bool);
   int xmlParseRequest(maps**,const char*,map**,service*,maps**,maps**,HINTERNET*);
Index: /branches/prototype-v0/zoo-project/zoo-kernel/response_print.c
===================================================================
--- /branches/prototype-v0/zoo-project/zoo-kernel/response_print.c	(revision 866)
+++ /branches/prototype-v0/zoo-project/zoo-kernel/response_print.c	(revision 867)
@@ -2623,7 +2623,18 @@
   if(tmpSess!=NULL){
     map *_tmp=getMapFromMaps(m,"lenv","cookie");
+    maps *tmps=getMaps(m,"senv");
     char* sessId=NULL;
     if(_tmp!=NULL){
       printf("Set-Cookie: %s; HttpOnly\r\n",_tmp->value);
+      map *_tmp1=getMapFromMaps(m,"senv","ecookie_length");
+      if(_tmp1!=NULL){
+	int len=atoi(_tmp1->value);
+	int cnt=0;
+	for(cnt=0;cnt<len;cnt++){
+	  map* _tmp2=getMapArray(tmps->content,"ecookie",cnt);
+	  if(_tmp2!=NULL)
+	    printf("Set-Cookie: %s; HttpOnly\r\n",_tmp->value);
+	}
+      }
       printf("P3P: CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"\r\n");
       char session_file_path[100];
Index: /branches/prototype-v0/zoo-project/zoo-kernel/service_internal_ms.c
===================================================================
--- /branches/prototype-v0/zoo-project/zoo-kernel/service_internal_ms.c	(revision 866)
+++ /branches/prototype-v0/zoo-project/zoo-kernel/service_internal_ms.c	(revision 867)
@@ -81,10 +81,13 @@
  */ 
 int getPublishedId(maps* elem){
-  map* myIndex=getMap(elem->content,"published_id");
-  if(myIndex!=NULL){
-    return atoi(myIndex->value);
+  if(elem!=NULL && elem->content!=NULL){
+    map* myIndex=getMap(elem->content,"published_id");
+    if(myIndex!=NULL){
+      return atoi(myIndex->value);
+    }
   }
   return 0;
 }
+
 /**
  * Add width and height keys to an output maps containing the maximum width
@@ -243,5 +246,5 @@
   else
     sprintf(layers,options[proto][3],layerName->value);
-  
+
   if(format==NULL || width==NULL || height==NULL || extent==NULL){
     char tmpStr[1024];
