diff options
author | Terry Wilson <twilson@digium.com> | 2008-08-01 21:56:07 +0000 |
---|---|---|
committer | Terry Wilson <twilson@digium.com> | 2008-08-01 21:56:07 +0000 |
commit | 671627028c3dde78f2704485ae1b2f3d321e3436 (patch) | |
tree | 6e73594bc852c223bb8956270a1d24645bcb89b1 | |
parent | ca38a1a082b71406a93c50826aabf02b297edfee (diff) |
Fix mime parsing by re-adding support for passing headers to callback functions
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@135235 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-rw-r--r-- | main/http.c | 19 | ||||
-rw-r--r-- | res/res_http_post.c | 6 |
2 files changed, 23 insertions, 2 deletions
diff --git a/main/http.c b/main/http.c index e6256b3df..bb6ae6121 100644 --- a/main/http.c +++ b/main/http.c @@ -657,6 +657,7 @@ static void *httpd_helper_thread(void *data) int status = 200, contentlength = 0; struct ast_str *out = NULL; unsigned int static_content = 0; + struct ast_variable *tail = headers; if (!fgets(buf, sizeof(buf), ser->f)) { goto done; @@ -686,6 +687,24 @@ static void *httpd_helper_thread(void *data) } if (!strncasecmp(cookie, "Cookie: ", 8)) { vars = parse_cookies(cookie); + } else { + char *name, *val; + + val = cookie; + name = strsep(&val, ":"); + if (ast_strlen_zero(name) || ast_strlen_zero(val)) { + continue; + } + ast_trim_blanks(name); + val = ast_skip_blanks(val); + + if (!headers) { + headers = ast_variable_new(name, val, __FILE__); + tail = headers; + } else { + tail->next = ast_variable_new(name, val, __FILE__); + tail = tail->next; + } } } diff --git a/res/res_http_post.c b/res/res_http_post.c index d065365fd..f1ae7a7da 100644 --- a/res/res_http_post.c +++ b/res/res_http_post.c @@ -203,6 +203,8 @@ static struct ast_str *http_post_callback(struct ast_tcptls_session_instance *se } for (var = headers; var; var = var->next) { + fprintf(f, "%s: %s\r\n", var->name, var->value); + if (!strcasecmp(var->name, "Content-Length")) { if ((sscanf(var->value, "%u", &content_len)) != 1) { ast_log(LOG_ERROR, "Invalid Content-Length in POST request!\n"); @@ -211,11 +213,11 @@ static struct ast_str *http_post_callback(struct ast_tcptls_session_instance *se return NULL; } ast_debug(1, "Got a Content-Length of %d\n", content_len); - } else if (!strcasecmp(var->name, "Content-Type")) { - fprintf(f, "Content-Type: %s\r\n\r\n", var->value); } } + fprintf(f, "\r\n"); + for (res = sizeof(buf); content_len; content_len -= res) { if (content_len < res) { res = content_len; |