diff options
author | Christian Grothoff <christian@grothoff.org> | 2017-09-26 13:56:33 +0200 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2017-09-26 13:56:33 +0200 |
commit | 472853442f481e309d38e46d40ba22e01f76f1f1 (patch) | |
tree | 193720cec3c71add324644e104701c374d6c7fad /src/exchange/taler-exchange-httpd_keystate.c | |
parent | a8de810bf7b78308976791b78311c36b69139b26 (diff) | |
download | exchange-472853442f481e309d38e46d40ba22e01f76f1f1.tar.gz exchange-472853442f481e309d38e46d40ba22e01f76f1f1.tar.bz2 exchange-472853442f481e309d38e46d40ba22e01f76f1f1.zip |
fix calculation of 'Expires:' header, also handle HTTP HEAD requests
Diffstat (limited to 'src/exchange/taler-exchange-httpd_keystate.c')
-rw-r--r-- | src/exchange/taler-exchange-httpd_keystate.c | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/src/exchange/taler-exchange-httpd_keystate.c b/src/exchange/taler-exchange-httpd_keystate.c index cb704dd03..06bb50492 100644 --- a/src/exchange/taler-exchange-httpd_keystate.c +++ b/src/exchange/taler-exchange-httpd_keystate.c @@ -1047,12 +1047,15 @@ setup_general_response_headers (const struct TEH_KS_StateHandle *key_state, MHD_add_response_header (response, MHD_HTTP_HEADER_LAST_MODIFIED, dat)); - get_date_string (key_state->next_reload, - dat); - GNUNET_break (MHD_YES == - MHD_add_response_header (response, - MHD_HTTP_HEADER_EXPIRES, - dat)); + if (0 != key_state->next_reload.abs_value_us) + { + get_date_string (key_state->next_reload, + dat); + GNUNET_break (MHD_YES == + MHD_add_response_header (response, + MHD_HTTP_HEADER_EXPIRES, + dat)); + } return GNUNET_OK; } @@ -1458,6 +1461,13 @@ make_fresh_key_state () off++; } + /* Compute next automatic reload time */ + key_state->next_reload = + GNUNET_TIME_absolute_min (GNUNET_TIME_absolute_ntoh (key_state->current_sign_key_issue.issue.expire), + key_state->min_dk_expire); + GNUNET_assert (0 != key_state->next_reload.abs_value_us); + + /* Initialize `krd_array` */ key_state->krd_array_length = off; key_state->krd_array @@ -1487,6 +1497,7 @@ make_fresh_key_state () } last = d; } + /* Finally, build an `empty` response without denomination keys for requests past the last known denomination key start date */ if ( (off + 1 < key_state->krd_array_length) || @@ -1503,12 +1514,6 @@ make_fresh_key_state () return NULL; } - /* Compute next automatic reload time */ - key_state->next_reload = - GNUNET_TIME_absolute_min (GNUNET_TIME_absolute_ntoh (key_state->current_sign_key_issue.issue.expire), - key_state->min_dk_expire); - GNUNET_assert (0 != key_state->next_reload.abs_value_us); - /* Clean up intermediary state we don't need anymore and return new key_state! */ destroy_response_factory (&rfc); |