Line data Source code
1 : /*
2 : This file is part of TALER
3 : Copyright (C) 2014-2018 Taler Systems SA
4 :
5 : TALER is free software; you can redistribute it and/or modify it under the
6 : terms of the GNU General Public License as published by the Free Software
7 : Foundation; either version 3, or (at your option) any later version.
8 :
9 : TALER is distributed in the hope that it will be useful, but WITHOUT ANY
10 : WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
11 : A PARTICULAR PURPOSE. See the GNU General Public License for more details.
12 :
13 : You should have received a copy of the GNU General Public License along with
14 : TALER; see the file COPYING. If not, see
15 : <http://www.gnu.org/licenses/>
16 : */
17 : /**
18 : * @file lib/auditor_api_curl_defaults.c
19 : * @brief curl easy handle defaults
20 : * @author Florian Dold
21 : */
22 : #include "taler/taler_curl_lib.h"
23 : #include "taler/taler_auditor_service.h"
24 : #include "auditor_api_curl_defaults.h"
25 :
26 : /**
27 : * Global options for HTTP requests.
28 : */
29 : static enum TALER_AUDITOR_GlobalOptions aglobal_options;
30 :
31 :
32 : void
33 0 : TALER_AUDITOR_setup (enum TALER_AUDITOR_GlobalOptions go)
34 : {
35 0 : aglobal_options = go;
36 0 : }
37 :
38 :
39 : CURL *
40 247 : TALER_AUDITOR_curl_easy_get_ (const char *url)
41 : {
42 : CURL *eh;
43 : struct GNUNET_AsyncScopeSave scope;
44 :
45 247 : GNUNET_async_scope_get (&scope);
46 :
47 247 : eh = curl_easy_init ();
48 247 : if (NULL == eh)
49 0 : return NULL;
50 247 : GNUNET_assert (CURLE_OK ==
51 : curl_easy_setopt (eh,
52 : CURLOPT_URL,
53 : url));
54 247 : TALER_curl_set_secure_redirect_policy (eh,
55 : url);
56 : /* Enable compression (using whatever curl likes), see
57 : https://curl.se/libcurl/c/CURLOPT_ACCEPT_ENCODING.html */
58 247 : GNUNET_break (CURLE_OK ==
59 : curl_easy_setopt (eh,
60 : CURLOPT_ACCEPT_ENCODING,
61 : ""));
62 247 : GNUNET_assert (CURLE_OK ==
63 : curl_easy_setopt (eh,
64 : CURLOPT_TCP_FASTOPEN,
65 : 1L));
66 247 : TALER_curl_set_http_version (
67 : eh,
68 247 : (0 != (TALER_AUDITOR_GO_ENABLE_HTTP3 & aglobal_options)) &&
69 247 : (0 == (TALER_AUDITOR_GO_FORCE_HTTP1_1 & aglobal_options)));
70 247 : return eh;
71 : }
|