summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTerry Wilson <twilson@digium.com>2010-06-15 21:10:15 +0000
committerTerry Wilson <twilson@digium.com>2010-06-15 21:10:15 +0000
commitfb71a38a41abfc3de4e29a660cf574431e4a25d3 (patch)
tree47893409c05728690d8c7f3f45f3e8d6ae2a6ae7
parent480f4128588f1797aeed722bbf52ee2d82ff22ae (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: https://origsvn.digium.com/svn/asterisk/trunk@270660 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-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))) {