diff options
-rw-r--r-- | file.c | 11 | ||||
-rw-r--r-- | handler.c | 9 | ||||
-rw-r--r-- | uhttpd.h | 1 |
3 files changed, 16 insertions, 5 deletions
@@ -565,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); @@ -121,6 +121,14 @@ handle_add_header(struct json_script_ctx *ctx, struct blob_attr *data) } static void +handle_no_cache(struct json_script_ctx *ctx, struct blob_attr *data) +{ + struct client *cl = cur_client; + + cl->dispatch.no_cache = true; +} + +static void handle_command(struct json_script_ctx *ctx, const char *name, struct blob_attr *data, struct blob_attr *vars) { @@ -131,6 +139,7 @@ handle_command(struct json_script_ctx *ctx, const char *name, { "redirect", handle_redirect }, { "rewrite", handle_set_uri }, { "add-header", handle_add_header }, + { "no-cache", handle_no_cache }, }; int i; @@ -224,6 +224,7 @@ struct dispatch { void (*req_free)(struct client *cl); bool data_blocked; + bool no_cache; union { struct { |