aboutsummaryrefslogtreecommitdiff
path: root/src/exchange-lib
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2018-10-18 21:33:37 +0200
committerFlorian Dold <florian.dold@gmail.com>2018-10-18 21:41:05 +0200
commit9114794bee49af5d7c38d7f69a31808e4dedb6b1 (patch)
treed8f4ca8f2915b21fd0324d2ab488fc6b9f70da2d /src/exchange-lib
parent16b0c6547084e88aec7105e23cc5f6fd72abaf4f (diff)
exchange-lib: disable 'Expect: 100-continue'
Diffstat (limited to 'src/exchange-lib')
-rw-r--r--src/exchange-lib/curl_defaults.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/exchange-lib/curl_defaults.c b/src/exchange-lib/curl_defaults.c
index ccadffa28..b46507b91 100644
--- a/src/exchange-lib/curl_defaults.c
+++ b/src/exchange-lib/curl_defaults.c
@@ -49,5 +49,26 @@ TEL_curl_easy_get (char *url)
CURLOPT_TCP_FASTOPEN,
1L));
+ {
+ /* Unfortunately libcurl needs chunk to be alive until after
+ curl_easy_perform. To avoid manual cleanup, we keep
+ one static list here. */
+ static struct curl_slist *chunk = NULL;
+ if (NULL == chunk)
+ {
+ /* With POST requests, we do not want to wait for the
+ "100 Continue" response, as our request bodies are usually
+ small and directy sending them saves us a round trip.
+
+ Clearing the expect header like this disables libcurl's
+ default processing of the header.
+
+ Disabling this header is safe for other HTTP methods, thus
+ we don't distinguish further before setting it. */
+ chunk = curl_slist_append (chunk, "Expect:");
+ }
+ GNUNET_assert (CURLE_OK == curl_easy_setopt (eh, CURLOPT_HTTPHEADER, chunk));
+ }
+
return eh;
}