exchange

Base system with REST service to issue digital coins, run by the payment service provider
Log | Files | Refs | Submodules | README | LICENSE

commit 1c3e78724343e48c9fbc26b9985085b5d25ba540
parent f346e89ceb7eecf6de1abd4b2b794926d671b72c
Author: Christian Grothoff <christian@grothoff.org>
Date:   Thu, 14 Sep 2017 21:07:43 +0200

be more precise about encoding HTTP bodies

Diffstat:
Msrc/exchange/taler-exchange-httpd_keystate.c | 9+++++----
Msrc/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 @@ -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 @@ -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; }