Bläddra i källkod

presence_dialoginfo : aux_body should return xmldoc instead of char

Luis Azedo 9 år sedan
förälder
incheckning
b6b7de8832
2 ändrade filer med 14 tillägg och 2 borttagningar
  1. 1 2
      modules/presence/notify.c
  2. 13 0
      modules/presence_dialoginfo/notify_body.c

+ 1 - 2
modules/presence/notify.c

@@ -1535,8 +1535,7 @@ int send_notify_request(subs_t* subs, subs_t * watcher_subs,
 					{
 						aux_body = subs->event->aux_body_processing(subs, notify_body);
 						if(aux_body) {
-							xmlFree(notify_body->s);
-							pkg_free(notify_body);
+							free_notify_body(notify_body, subs->event);
 							notify_body = aux_body;
 						}
 					}

+ 13 - 0
modules/presence_dialoginfo/notify_body.c

@@ -595,5 +595,18 @@ str *dlginfo_body_setversion(subs_t *subs, str *body) {
 	memcpy(version_start, version, version_len);
 	memset(version_start + version_len, ' ', 12 - version_len);
 
+	xmlDocPtr doc = xmlReadMemory(aux_body->s, aux_body->len, "noname.xml", NULL, 0);
+        if (doc == NULL) {
+		LM_ERR("error allocation xmldoc\n");
+		pkg_free(aux_body->s);
+		pkg_free(aux_body);
+		return NULL;
+	}
+	pkg_free(aux_body->s);
+        xmlDocDumpFormatMemory(doc,(xmlChar**)(void*)&aux_body->s, &aux_body->len, 1);
+
+        xmlCleanupParser();
+        xmlMemoryDump();
+
 	return aux_body;
 }