diff --git a/src/exchange/taler-exchange-httpd_keystate.c b/src/exchange/taler-exchange-httpd_keystate.c index 32a619e7b..47b10a9b7 100644 --- a/src/exchange/taler-exchange-httpd_keystate.c +++ b/src/exchange/taler-exchange-httpd_keystate.c @@ -1496,10 +1496,11 @@ TEH_KS_handler_keys (struct TEH_RequestHandler *rh, MHD_add_response_header (response, MHD_HTTP_HEADER_CONTENT_TYPE, rh->mime_type)); - if (MHD_YES != - MHD_add_response_header (response, - MHD_HTTP_HEADER_CONTENT_ENCODING, - "deflate")) + if ( (MHD_YES == comp) && + (MHD_YES != + MHD_add_response_header (response, + MHD_HTTP_HEADER_CONTENT_ENCODING, + "deflate")) ) { GNUNET_break (0); MHD_destroy_response (response); diff --git a/src/exchange/taler-exchange-httpd_responses.c b/src/exchange/taler-exchange-httpd_responses.c index c31c248f5..bde14d815 100644 --- a/src/exchange/taler-exchange-httpd_responses.c +++ b/src/exchange/taler-exchange-httpd_responses.c @@ -53,6 +53,11 @@ TEH_RESPONSE_add_global_headers (struct MHD_Response *response) * * @param connection connection to check * @return #MHD_YES if 'deflate' compression is allowed + * + * Note that right now we're ignoring q-values, which is technically + * not correct, and also do not support "*" anywhere but in a line by + * itself. This should eventually be fixed, see also + * https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html */ int TEH_RESPONSE_can_compress (struct MHD_Connection *connection) @@ -69,11 +74,15 @@ TEH_RESPONSE_can_compress (struct MHD_Connection *connection) "deflate"); if (NULL == de) return MHD_NO; + if (0 == strcmp (de, + "*")) + return MHD_YES; if ( ( (de == ae) || ( de[-1] == ',') || (de[-1] == ' ') ) && ( (de[strlen ("deflate")] == '\0') || - (de[strlen ("deflate")] == ',') ) ) + (de[strlen ("deflate")] == ',') || + (de[strlen ("deflate")] == ';') ) ) return MHD_YES; return MHD_NO; }