diff options
author | Christian Grothoff <christian@grothoff.org> | 2024-04-07 19:40:31 +0200 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2024-04-07 19:40:31 +0200 |
commit | 052685737ceb34fdc942eb40ee4abab4824665d3 (patch) | |
tree | 975d0911d20e8fc41e03cc93c8a6fe32b59c508e /src | |
parent | b53099fee9ab9aa597c0f40f30699da9be1f2333 (diff) |
add cache control to /config
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/taler-merchant-httpd_config.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/backend/taler-merchant-httpd_config.c b/src/backend/taler-merchant-httpd_config.c index c7dec0f9..e8d4b0fa 100644 --- a/src/backend/taler-merchant-httpd_config.c +++ b/src/backend/taler-merchant-httpd_config.c @@ -89,9 +89,23 @@ MH_handler_config (struct TMH_RequestHandler *rh, { json_t *specs = json_object (); json_t *exchanges = json_array (); + struct GNUNET_TIME_Absolute a; + struct GNUNET_TIME_Timestamp km; + char dat[128]; GNUNET_assert (NULL != specs); GNUNET_assert (NULL != exchanges); + a = GNUNET_TIME_relative_to_absolute (GNUNET_TIME_UNIT_DAYS); + /* Round up to next full day to ensure the expiration + time does not become a fingerprint! */ + a = GNUNET_TIME_absolute_round_down (a, + GNUNET_TIME_UNIT_DAYS); + a = GNUNET_TIME_absolute_add (a, + GNUNET_TIME_UNIT_DAYS); + /* => /config response stays at most 48h in caches! */ + km = GNUNET_TIME_absolute_to_timestamp (a); + TALER_MHD_get_date_string (km.abs_time, + dat); TMH_exchange_get_trusted (&add_exchange, exchanges); for (unsigned int i = 0; i<TMH_num_cspecs; i++) @@ -118,6 +132,14 @@ MH_handler_config (struct TMH_RequestHandler *rh, "taler-merchant"), GNUNET_JSON_pack_string ("version", MERCHANT_PROTOCOL_VERSION)); + GNUNET_break (MHD_YES == + MHD_add_response_header (response, + MHD_HTTP_HEADER_EXPIRES, + dat)); + GNUNET_break (MHD_YES == + MHD_add_response_header (response, + MHD_HTTP_HEADER_CACHE_CONTROL, + "public,max-age=21600")); /* 6h */ } return MHD_queue_response (connection, MHD_HTTP_OK, |