diff options
author | Christian Grothoff <christian@grothoff.org> | 2017-09-14 21:07:43 +0200 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2017-09-14 21:07:43 +0200 |
commit | 1c3e78724343e48c9fbc26b9985085b5d25ba540 (patch) | |
tree | 96eadc9e377b0dd5fc36d55e34f42064f03cd588 | |
parent | f346e89ceb7eecf6de1abd4b2b794926d671b72c (diff) |
be more precise about encoding HTTP bodies
-rw-r--r-- | src/exchange/taler-exchange-httpd_keystate.c | 9 | ||||
-rw-r--r-- | src/exchange/taler-exchange-httpd_responses.c | 11 |
2 files changed, 15 insertions, 5 deletions
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; } |