diff options
author | twilson <twilson@f38db490-d61c-443f-a65b-d21fe96a405b> | 2010-06-15 21:10:15 +0000 |
---|---|---|
committer | twilson <twilson@f38db490-d61c-443f-a65b-d21fe96a405b> | 2010-06-15 21:10:15 +0000 |
commit | ed5fc9c3c2ba50a0ffa02670905189e74014a4e9 (patch) | |
tree | 47893409c05728690d8c7f3f45f3e8d6ae2a6ae7 | |
parent | bf9c932f9e9125572e38f99f0da6c51d2f0db358 (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
-rw-r--r-- | res/res_phoneprov.c | 17 |
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))) { |