|
|
|
@ -43,10 +43,12 @@ gboolean li_response_send_headers(liConnection *con) {
|
|
|
|
|
/* They never have a content-body/length */
|
|
|
|
|
li_chunkqueue_reset(con->out);
|
|
|
|
|
con->out->is_closed = TRUE;
|
|
|
|
|
} else if (con->out->is_closed && (vr->request.http_method != LI_HTTP_METHOD_HEAD || con->out->length > 0)) {
|
|
|
|
|
/* do not send content-length: 0 if backend already skipped content generation for HEAD */
|
|
|
|
|
g_string_printf(con->wrk->tmp_str, "%"L_GOFFSET_FORMAT, con->out->length);
|
|
|
|
|
li_http_header_overwrite(vr->response.headers, CONST_STR_LEN("Content-Length"), GSTR_LEN(con->wrk->tmp_str));
|
|
|
|
|
} else if (con->out->is_closed) {
|
|
|
|
|
if (vr->request.http_method != LI_HTTP_METHOD_HEAD || con->out->length > 0) {
|
|
|
|
|
/* do not send content-length: 0 if backend already skipped content generation for HEAD */
|
|
|
|
|
g_string_printf(con->wrk->tmp_str, "%"L_GOFFSET_FORMAT, con->out->length);
|
|
|
|
|
li_http_header_overwrite(vr->response.headers, CONST_STR_LEN("Content-Length"), GSTR_LEN(con->wrk->tmp_str));
|
|
|
|
|
}
|
|
|
|
|
} else if (con->keep_alive && vr->request.http_version == LI_HTTP_VERSION_1_1) {
|
|
|
|
|
/* TODO: maybe someone set a content length header? */
|
|
|
|
|
if (!(vr->response.transfer_encoding & LI_HTTP_TRANSFER_ENCODING_CHUNKED)) {
|
|
|
|
|