Line data Source code
1 : /* 2 : This file is part of TALER 3 : Copyright (C) 2014-2018, 2021 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/merchant_api_curl_defaults.c 19 : * @brief curl easy handle defaults 20 : * @author Florian Dold 21 : */ 22 : 23 : #include "merchant_api_curl_defaults.h" 24 : 25 : 26 : CURL * 27 0 : TALER_MERCHANT_curl_easy_get_ (const char *url) 28 : { 29 : CURL *eh; 30 : 31 0 : eh = curl_easy_init (); 32 0 : if (NULL == eh) 33 : { 34 0 : GNUNET_break (0); 35 0 : return NULL; 36 : } 37 0 : GNUNET_assert (CURLE_OK == 38 : curl_easy_setopt (eh, 39 : CURLOPT_URL, 40 : url)); 41 0 : GNUNET_assert (CURLE_OK == 42 : curl_easy_setopt (eh, 43 : CURLOPT_FOLLOWLOCATION, 44 : 1L)); 45 : /* Enable compression (using whatever curl likes), see 46 : https://curl.se/libcurl/c/CURLOPT_ACCEPT_ENCODING.html */ 47 0 : GNUNET_break (CURLE_OK == 48 : curl_easy_setopt (eh, 49 : CURLOPT_ACCEPT_ENCODING, 50 : "")); 51 : /* limit MAXREDIRS to 5 as a simple security measure against 52 : a potential infinite loop caused by a malicious target */ 53 0 : GNUNET_assert (CURLE_OK == 54 : curl_easy_setopt (eh, 55 : CURLOPT_MAXREDIRS, 56 : 5L)); 57 0 : GNUNET_assert (CURLE_OK == 58 : curl_easy_setopt (eh, 59 : CURLOPT_TCP_FASTOPEN, 60 : 1L)); 61 0 : return eh; 62 : }