From a684e7511d617ae97c305f5475829bfdcf072af1 Mon Sep 17 00:00:00 2001
From: Anthony Minessale <anthm@freeswitch.org>
Date: Fri, 15 Mar 2013 14:20:40 -0500
Subject: [PATCH] fix cache file messup

---
 src/mod/applications/mod_httapi/mod_httapi.c | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/src/mod/applications/mod_httapi/mod_httapi.c b/src/mod/applications/mod_httapi/mod_httapi.c
index 4b53b87fe5..fd84b8e86b 100644
--- a/src/mod/applications/mod_httapi/mod_httapi.c
+++ b/src/mod/applications/mod_httapi/mod_httapi.c
@@ -2289,7 +2289,7 @@ SWITCH_STANDARD_APP(httapi_function)
 
 static char *load_cache_data(http_file_context_t *context, const char *url)
 {
-	char *ext = NULL;
+	char *ext = NULL, *dext = NULL, *p;
 	char digest[SWITCH_MD5_DIGEST_STRING_SIZE] = { 0 };
 	char meta_buffer[1024] = "";
 	int fd;
@@ -2308,6 +2308,14 @@ static char *load_cache_data(http_file_context_t *context, const char *url)
 			ext = "wav";
 		}
 	}
+	
+	if (ext && (p = strchr(ext, '?'))) {
+		dext = strdup(ext);
+		if ((p = strchr(dext, '?'))) {
+			*p = '\0';
+			ext = dext;
+		} else free(dext);
+	}
 
 	context->cache_file_base = switch_core_sprintf(context->pool, "%s%s%s", globals.cache_path, SWITCH_PATH_SEPARATOR, digest);
 	context->cache_file = switch_core_sprintf(context->pool, "%s%s%s.%s", globals.cache_path, SWITCH_PATH_SEPARATOR, digest, ext);
@@ -2329,6 +2337,8 @@ static char *load_cache_data(http_file_context_t *context, const char *url)
 		close(fd);
 	}
 
+	switch_safe_free(dext);
+
 	return context->cache_file;
 }
 
@@ -2600,6 +2610,12 @@ static switch_status_t locate_url_file(http_file_context_t *context, const char
 
 
 		if (newext) {
+			char *p;
+
+			if ((p = strrchr(context->cache_file, '.'))) {
+				*p = '\0';
+			}
+			
 			context->cache_file = switch_core_sprintf(context->pool, "%s.%s", context->cache_file, newext);
 		}