diff options
-rw-r--r-- | utils/http/cache-control.c | 10 | ||||
-rw-r--r-- | utils/http/cache-control.h | 8 |
2 files changed, 18 insertions, 0 deletions
diff --git a/utils/http/cache-control.c b/utils/http/cache-control.c index f348f1614..44700821d 100644 --- a/utils/http/cache-control.c +++ b/utils/http/cache-control.c @@ -30,6 +30,7 @@ */ struct http_cache_control { uint32_t max_age; /**< Max age (delta seconds) */ + bool max_age_valid; /**< Whether max-age is valid */ bool no_cache; /**< Whether caching is forbidden */ bool no_store; /**< Whether persistent caching is forbidden */ }; @@ -240,6 +241,7 @@ nserror http_parse_cache_control(const char *header_value, http_directive *directives = NULL; lwc_string *value_str = NULL; uint32_t max_age = 0; + bool max_age_valid = false; bool no_cache = false; bool no_store = false; nserror error; @@ -279,6 +281,7 @@ nserror http_parse_cache_control(const char *header_value, corestring_lwc_max_age, &value_str); if (error == NSERROR_OK && value_str != NULL) { error = parse_max_age(value_str, &max_age); + max_age_valid = (error == NSERROR_OK); lwc_string_unref(value_str); } @@ -310,6 +313,7 @@ nserror http_parse_cache_control(const char *header_value, } cc->max_age = max_age; + cc->max_age_valid = max_age_valid; cc->no_cache = no_cache; cc->no_store = no_store; @@ -325,6 +329,12 @@ void http_cache_control_destroy(http_cache_control *victim) } /* See cache-control.h for documentation */ +bool http_cache_control_has_max_age(http_cache_control *cc) +{ + return cc->max_age_valid; +} + +/* See cache-control.h for documentation */ uint32_t http_cache_control_max_age(http_cache_control *cc) { return cc->max_age; diff --git a/utils/http/cache-control.h b/utils/http/cache-control.h index 22c5f97ac..945cfcec0 100644 --- a/utils/http/cache-control.h +++ b/utils/http/cache-control.h @@ -43,6 +43,14 @@ nserror http_parse_cache_control(const char *header_value, void http_cache_control_destroy(http_cache_control *victim); /** + * Determine if a valid max-age directive is present + * + * \param cc Object to inspect + * \return Whether max-age is valid + */ +bool http_cache_control_has_max_age(http_cache_control *cc); + +/** * Get the value of a cache control's max-age * * \param cc Object to inspect |