From: Niels Provos Date: Sat, 2 Dec 2006 21:28:39 +0000 (+0000) Subject: fix cases where there is no content or transfer encoding was specified X-Git-Tag: release-2.0.1-alpha~679 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ec0679199fbdddcb3308a72a90a15b342cc3c0a3;p=libevent fix cases where there is no content or transfer encoding was specified from Dug Song svn:r291 --- diff --git a/http.c b/http.c index d8e134fa..aec8df37 100644 --- a/http.c +++ b/http.c @@ -302,21 +302,26 @@ evhttp_make_header_response(struct evhttp_connection *evcon, req->response_code_line); evbuffer_add(evcon->output_buffer, line, strlen(line)); - /* Potentially add headers */ - if (evhttp_find_header(req->output_headers, "Content-Type") == NULL) { + /* Potentially add headers for unidentified content. */ + if (EVBUFFER_LENGTH(req->output_buffer) && + evhttp_find_header(req->output_headers, "Content-Type") == NULL) { evhttp_add_header(req->output_headers, "Content-Type", "text/html; charset=ISO-8859-1"); - } - - /* - * we need to add the content length if the user did not give it, - * this is required for persistent connections to work. - */ - if (evhttp_find_header(req->output_headers, "Content-Length") == NULL){ - static char len[12]; - snprintf(len, sizeof(len), "%ld", - (long)EVBUFFER_LENGTH(req->output_buffer)); - evhttp_add_header(req->output_headers, "Content-Length", len); + /* + * we need to add the content length if the user did + * not give it, this is required for persistent + * connections to work. + */ + if (evhttp_find_header(req->output_headers, + "Transfer-Encoding") == NULL && + evhttp_find_header(req->output_headers, + "Content-Length") == NULL) { + static char len[12]; + snprintf(len, sizeof(len), "%ld", + (long)EVBUFFER_LENGTH(req->output_buffer)); + evhttp_add_header(req->output_headers, + "Content-Length", len); + } } /* if the request asked for a close, we send a close, too */