-check for ETag in request, generate 304 if applicable
This commit is contained in:
parent
a6a1fa9fde
commit
a6b2108009
@ -2854,7 +2854,11 @@ TEH_keys_get_handler (struct TEH_RequestContext *rc,
|
|||||||
const char *const args[])
|
const char *const args[])
|
||||||
{
|
{
|
||||||
struct GNUNET_TIME_Timestamp last_issue_date;
|
struct GNUNET_TIME_Timestamp last_issue_date;
|
||||||
|
const char *etag;
|
||||||
|
|
||||||
|
etag = MHD_lookup_connection_value (rc->connection,
|
||||||
|
MHD_HEADER_KIND,
|
||||||
|
MHD_HTTP_HEADER_IF_NONE_MATCH);
|
||||||
(void) args;
|
(void) args;
|
||||||
{
|
{
|
||||||
const char *have_cherrypick;
|
const char *have_cherrypick;
|
||||||
@ -2935,6 +2939,31 @@ TEH_keys_get_handler (struct TEH_RequestContext *rc,
|
|||||||
Wait until they are. */
|
Wait until they are. */
|
||||||
return suspend_request (rc->connection);
|
return suspend_request (rc->connection);
|
||||||
}
|
}
|
||||||
|
if ( (NULL != etag) &&
|
||||||
|
(0 == strcmp (etag,
|
||||||
|
krd->etag)) )
|
||||||
|
{
|
||||||
|
MHD_RESULT ret;
|
||||||
|
struct MHD_Response *resp;
|
||||||
|
|
||||||
|
resp = MHD_create_response_from_buffer (0,
|
||||||
|
NULL,
|
||||||
|
MHD_RESPMEM_PERSISTENT);
|
||||||
|
TALER_MHD_add_global_headers (resp);
|
||||||
|
GNUNET_break (GNUNET_OK ==
|
||||||
|
setup_general_response_headers (ksh,
|
||||||
|
resp));
|
||||||
|
GNUNET_break (MHD_YES ==
|
||||||
|
MHD_add_response_header (resp,
|
||||||
|
MHD_HTTP_HEADER_ETAG,
|
||||||
|
krd->etag));
|
||||||
|
ret = MHD_queue_response (rc->connection,
|
||||||
|
MHD_HTTP_NOT_MODIFIED,
|
||||||
|
resp);
|
||||||
|
GNUNET_break (MHD_YES == ret);
|
||||||
|
MHD_destroy_response (resp);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
return MHD_queue_response (rc->connection,
|
return MHD_queue_response (rc->connection,
|
||||||
MHD_HTTP_OK,
|
MHD_HTTP_OK,
|
||||||
(MHD_YES ==
|
(MHD_YES ==
|
||||||
|
Loading…
Reference in New Issue
Block a user