diff --git a/main/manager.c b/main/manager.c
index a96818e8a7a4e02440c83b402d4847fcacfb4ff3..decc65e135c6e3cc59264ad1143909e2ebf2ecc3 100644
--- a/main/manager.c
+++ b/main/manager.c
@@ -2809,16 +2809,17 @@ static struct ast_str *generic_http_callback(enum output_format format,
 	if (s->f != NULL) {	/* have temporary output */
 		char *buf;
 		size_t l = ftell(s->f);
-
-		if (format == FORMAT_XML || format == FORMAT_HTML) {
-			if (l) {
-				if ((buf = mmap(NULL, l, PROT_READ | PROT_WRITE, MAP_SHARED, s->fd, 0))) {
+		
+		if (l) {
+			if ((buf = mmap(NULL, l, PROT_READ | PROT_WRITE, MAP_SHARED, s->fd, 0))) {
+				if (format == FORMAT_XML || format == FORMAT_HTML)
 					xml_translate(&out, buf, params, format);
-					munmap(buf, l);
-				}
-			} else {
-				xml_translate(&out, "", params, format);
+				else
+					ast_str_append(&out, 0, buf);
+				munmap(buf, l);
 			}
+		} else if (format == FORMAT_XML || format == FORMAT_HTML) {
+			xml_translate(&out, "", params, format);
 		}
 		fclose(s->f);
 		s->f = NULL;