fix cases where there is no content or transfer encoding was specified

from Dug Song


svn:r291
This commit is contained in:
Niels Provos 2006-12-02 21:28:39 +00:00
parent 7fe5edf50c
commit ec0679199f

31
http.c
View File

@ -302,21 +302,26 @@ evhttp_make_header_response(struct evhttp_connection *evcon,
req->response_code_line); req->response_code_line);
evbuffer_add(evcon->output_buffer, line, strlen(line)); evbuffer_add(evcon->output_buffer, line, strlen(line));
/* Potentially add headers */ /* Potentially add headers for unidentified content. */
if (evhttp_find_header(req->output_headers, "Content-Type") == NULL) { if (EVBUFFER_LENGTH(req->output_buffer) &&
evhttp_find_header(req->output_headers, "Content-Type") == NULL) {
evhttp_add_header(req->output_headers, evhttp_add_header(req->output_headers,
"Content-Type", "text/html; charset=ISO-8859-1"); "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
* we need to add the content length if the user did not give it, * connections to work.
* this is required for persistent connections to work. */
*/ if (evhttp_find_header(req->output_headers,
if (evhttp_find_header(req->output_headers, "Content-Length") == NULL){ "Transfer-Encoding") == NULL &&
static char len[12]; evhttp_find_header(req->output_headers,
snprintf(len, sizeof(len), "%ld", "Content-Length") == NULL) {
(long)EVBUFFER_LENGTH(req->output_buffer)); static char len[12];
evhttp_add_header(req->output_headers, "Content-Length", len); 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 */ /* if the request asked for a close, we send a close, too */