Fix compression.

The "Content-Encoding: deflate" header is now added from
within the compression routine itself, and _not_ from the
"exchange handle".

This fixed the bank-lib functions as those do not use any
exchange handle, and therefore were wrongly sending compressed
bodies without adding the mentioned HTTP header.
This commit is contained in:
Marcello Stanisci 2019-05-16 16:58:09 +02:00
parent 8d34b22aff
commit 95933156a6
No known key found for this signature in database
GPG Key ID: 8D526861953F4C0F
4 changed files with 16 additions and 13 deletions

View File

@ -189,7 +189,6 @@ TALER_BANK_admin_add_incoming (struct GNUNET_CURL_Context *ctx,
struct TALER_BANK_AdminAddIncomingHandle *aai; struct TALER_BANK_AdminAddIncomingHandle *aai;
json_t *admin_obj; json_t *admin_obj;
CURL *eh; CURL *eh;
struct curl_slist *headers = NULL;
if (NULL == exchange_base_url) if (NULL == exchange_base_url)
{ {
@ -213,11 +212,13 @@ TALER_BANK_admin_add_incoming (struct GNUNET_CURL_Context *ctx,
aai->cb_cls = res_cb_cls; aai->cb_cls = res_cb_cls;
aai->request_url = TALER_BANK_path_to_url_ (bank_base_url, aai->request_url = TALER_BANK_path_to_url_ (bank_base_url,
"/admin/add/incoming"); "/admin/add/incoming");
headers = TALER_BANK_make_auth_header_ (auth); aai->post_ctx.headers = TALER_BANK_make_auth_header_ (auth);
GNUNET_assert (NULL != GNUNET_assert
(headers = curl_slist_append (headers, (NULL != (aai->post_ctx.headers = curl_slist_append
(aai->post_ctx.headers,
"Content-Type: application/json"))); "Content-Type: application/json")));
eh = curl_easy_init (); eh = curl_easy_init ();
GNUNET_assert (GNUNET_OK == GNUNET_assert (GNUNET_OK ==
@ -232,7 +233,7 @@ TALER_BANK_admin_add_incoming (struct GNUNET_CURL_Context *ctx,
aai->job = GNUNET_CURL_job_add2 (ctx, aai->job = GNUNET_CURL_job_add2 (ctx,
eh, eh,
headers, aai->post_ctx.headers,
&handle_admin_add_incoming_finished, &handle_admin_add_incoming_finished,
aai); aai);
return aai; return aai;

View File

@ -1784,12 +1784,6 @@ TALER_EXCHANGE_connect
GNUNET_break (GNUNET_OK == GNUNET_break (GNUNET_OK ==
GNUNET_CURL_append_header (ctx, GNUNET_CURL_append_header (ctx,
"Expect:")); "Expect:"));
#if COMPRESS_BODIES
/* Tell exchange we compress bodies */
GNUNET_break (GNUNET_OK ==
GNUNET_CURL_append_header (ctx,
"Content-Encoding: deflate"));
#endif
exchange = GNUNET_new (struct TALER_EXCHANGE_Handle); exchange = GNUNET_new (struct TALER_EXCHANGE_Handle);
exchange->ctx = ctx; exchange->ctx = ctx;
exchange->url = GNUNET_strdup (url); exchange->url = GNUNET_strdup (url);

View File

@ -78,6 +78,10 @@ TEAH_curl_easy_post (struct TEAH_PostContext *ctx,
slen = (size_t) cbuf_size; slen = (size_t) cbuf_size;
ctx->json_enc = (char *) cbuf; ctx->json_enc = (char *) cbuf;
} }
GNUNET_assert
(NULL != (ctx->headers = curl_slist_append
(ctx->headers,
"Content-Encoding: deflate")));
#else #else
ctx->json_enc = str; ctx->json_enc = str;
#endif #endif

View File

@ -30,7 +30,7 @@
/** /**
* Should we compress PUT/POST bodies with 'deflate' encoding? * Should we compress PUT/POST bodies with 'deflate' encoding?
*/ */
#define COMPRESS_BODIES 0 #define COMPRESS_BODIES 1
/** /**
* State used for #TEAL_curl_easy_post() and * State used for #TEAL_curl_easy_post() and
@ -43,6 +43,10 @@ struct TEAH_PostContext
*/ */
char *json_enc; char *json_enc;
/**
* Custom headers.
*/
struct curl_slist *headers;
}; };