aboutsummaryrefslogtreecommitdiffstats
path: root/res
diff options
context:
space:
mode:
authortwilson <twilson@f38db490-d61c-443f-a65b-d21fe96a405b>2010-06-15 21:10:15 +0000
committertwilson <twilson@f38db490-d61c-443f-a65b-d21fe96a405b>2010-06-15 21:10:15 +0000
commited5fc9c3c2ba50a0ffa02670905189e74014a4e9 (patch)
tree47893409c05728690d8c7f3f45f3e8d6ae2a6ae7 /res
parentbf9c932f9e9125572e38f99f0da6c51d2f0db358 (diff)
Don't send files twice and remove extra \r\n from header
After the manager http auth changes, we forgot to remove the manual sending of the file. Also, ast_http_send adds two \r\n to the header that is passed to it, so a trailing \r\n is removed from the Content-type header. It might be better to change ast_http_send, but I don't like changing the behavior of an API function. (closes issue #17239) Reported by: cjacobsen Patches: patch2.diff uploaded by cjacobsen (license 1029) Tested by: lathama, cjacobsen git-svn-id: http://svn.digium.com/svn/asterisk/trunk@270660 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'res')
-rw-r--r--res/res_phoneprov.c17
1 files changed, 3 insertions, 14 deletions
diff --git a/res/res_phoneprov.c b/res/res_phoneprov.c
index 91268a508..e969bc402 100644
--- a/res/res_phoneprov.c
+++ b/res/res_phoneprov.c
@@ -411,7 +411,6 @@ static int phoneprov_callback(struct ast_tcptls_session_instance *ser, const str
char *file = NULL;
int len;
int fd;
- char buf[256];
struct ast_str *http_header;
if (method != AST_HTTP_GET && method != AST_HTTP_HEAD) {
@@ -441,21 +440,11 @@ static int phoneprov_callback(struct ast_tcptls_session_instance *ser, const str
}
http_header = ast_str_create(80);
- ast_str_set(&http_header, 0, "Content-type: %s\r\n",
+ ast_str_set(&http_header, 0, "Content-type: %s",
route->file->mime_type);
- while ((len = read(fd, buf, sizeof(buf))) > 0) {
- if (fwrite(buf, 1, len, ser->f) != len) {
- if (errno != EPIPE) {
- ast_log(LOG_WARNING, "fwrite() failed: %s\n", strerror(errno));
- } else {
- ast_debug(3, "Requester closed the connection while downloading '%s'\n", path);
- }
- break;
- }
- }
-
ast_http_send(ser, method, 200, NULL, http_header, NULL, fd, 0);
+
close(fd);
route = unref_route(route);
return 0;
@@ -515,7 +504,7 @@ static int phoneprov_callback(struct ast_tcptls_session_instance *ser, const str
}
http_header = ast_str_create(80);
- ast_str_set(&http_header, 0, "Content-type: %s\r\n",
+ ast_str_set(&http_header, 0, "Content-type: %s",
route->file->mime_type);
if (!(result = ast_str_create(512))) {