X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fuhttpd.git;a=blobdiff_plain;f=file.c;h=2a948186932e49fada921a5c2b7f0de1f801c513;hp=816df85256214756223628297a1cea04b71f9e3b;hb=9d9f07142bbef1c63a79620967a847a9493105e5;hpb=25023c796a9a55cd7ec7ff364cd1229fab958679 diff --git a/file.c b/file.c index 816df85..2a94818 100644 --- a/file.c +++ b/file.c @@ -235,7 +235,8 @@ uh_path_lookup(struct client *cl, const char *url) url with trailing slash appended */ if (!slash) { uh_http_header(cl, 302, "Found"); - ustream_printf(cl->us, "Content-Length: 0\r\n"); + if (!uh_use_chunked(cl)) + ustream_printf(cl->us, "Content-Length: 0\r\n"); ustream_printf(cl->us, "Location: %s%s%s\r\n\r\n", &path_phys[docroot_len], p.query ? "?" : "", @@ -564,11 +565,12 @@ static void uh_file_free(struct client *cl) static void uh_file_data(struct client *cl, struct path_info *pi, int fd) { /* test preconditions */ - if (!uh_file_if_modified_since(cl, &pi->stat) || - !uh_file_if_match(cl, &pi->stat) || - !uh_file_if_range(cl, &pi->stat) || - !uh_file_if_unmodified_since(cl, &pi->stat) || - !uh_file_if_none_match(cl, &pi->stat)) { + if (!cl->dispatch.no_cache && + (!uh_file_if_modified_since(cl, &pi->stat) || + !uh_file_if_match(cl, &pi->stat) || + !uh_file_if_range(cl, &pi->stat) || + !uh_file_if_unmodified_since(cl, &pi->stat) || + !uh_file_if_none_match(cl, &pi->stat))) { ustream_printf(cl->us, "\r\n"); uh_request_done(cl); close(fd); @@ -862,6 +864,7 @@ void uh_handle_request(struct client *cl) char *url = blobmsg_data(blob_data(cl->hdr.head)); char *error_handler; + blob_buf_init(&cl->hdr_response, 0); url = uh_handle_alias(url); uh_handler_run(cl, &url, false);