Index: /trunk/zoo-project/zoo-kernel/main_conf_read.l
===================================================================
--- /trunk/zoo-project/zoo-kernel/main_conf_read.l	(revision 377)
+++ /trunk/zoo-project/zoo-kernel/main_conf_read.l	(revision 378)
@@ -31,5 +31,5 @@
 attname	[a-zA-Z0-9_\-:]+
 
-attvalue1	[\*,;@a-zA-Z0-9_\-.:" "\"\'/\\\(\)\+\x41-\xff]+
+attvalue1	[%\*,;@a-zA-Z0-9_\-.:" "\"\'/\\\(\)\+\x41-\xff]+
 
 attvalue		\"[^"]*\"|\'[^']*\'
Index: /trunk/zoo-project/zoo-kernel/service_internal.c
===================================================================
--- /trunk/zoo-project/zoo-kernel/service_internal.c	(revision 377)
+++ /trunk/zoo-project/zoo-kernel/service_internal.c	(revision 378)
@@ -1206,5 +1206,8 @@
       map* tmpm2=getMap(tmp_maps->content,"tmpUrl");
       if(tmpm1!=NULL && tmpm2!=NULL){
-	sprintf(url,"%s/%s/%s_%i.xml",tmpm1->value,tmpm2->value,service,pid);
+	if(strncasecmp(tmpm2->value,"http://",7)==0){
+	  sprintf(url,"%s/%s_%i.xml",tmpm2->value,service,pid);
+	}else
+	  sprintf(url,"%s/%s/%s_%i.xml",tmpm1->value,tmpm2->value,service,pid);
       }
     }
@@ -1892,6 +1895,11 @@
 	map *tmp3=getMapFromMaps(m,"main","serverAddress");
 	char *file_url;
-	file_url=(char*)malloc((strlen(tmp3->value)+strlen(tmp2->value)+strlen(s->name)+strlen(ext->value)+strlen(tmpI->name)+13)*sizeof(char));
-	sprintf(file_url,"%s/%s/%s_%s_%i.%s",tmp3->value,tmp2->value,s->name,tmpI->name,cpid+100000,ext->value);
+	if(strncasecmp(tmp2->value,"http://",7)==0){
+	  file_url=(char*)malloc((strlen(tmp2->value)+strlen(s->name)+strlen(ext->value)+strlen(tmpI->name)+13)*sizeof(char));
+	  sprintf(file_url,"%s/%s_%s_%i.%s",tmp2->value,s->name,tmpI->name,cpid+100000,ext->value);
+	}else{
+	  file_url=(char*)malloc((strlen(tmp3->value)+strlen(tmp2->value)+strlen(s->name)+strlen(ext->value)+strlen(tmpI->name)+13)*sizeof(char));
+	  sprintf(file_url,"%s/%s/%s_%s_%i.%s",tmp3->value,tmp2->value,s->name,tmpI->name,cpid+100000,ext->value);
+	}
 	addToMap(tmpI->content,"Reference",file_url);
 	if(hasExt!=true){
@@ -2524,5 +2532,6 @@
     addToCache(m,url,fcontent,fsize);
   free(fcontent);
-  free(cached);
+  if(cached!=NULL)
+    free(cached);
   return 0;
 }
