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 "auditor_api_curl_defaults.h" 23 : 24 : 25 : CURL * 26 0 : TALER_AUDITOR_curl_easy_get_ (const char *url) 27 : { 28 : CURL *eh; 29 : struct GNUNET_AsyncScopeSave scope; 30 : 31 0 : GNUNET_async_scope_get (&scope); 32 : 33 0 : eh = curl_easy_init (); 34 0 : if (NULL == eh) 35 0 : return NULL; 36 0 : GNUNET_assert (CURLE_OK == 37 : curl_easy_setopt (eh, 38 : CURLOPT_URL, 39 : url)); 40 0 : GNUNET_assert (CURLE_OK == 41 : curl_easy_setopt (eh, 42 : CURLOPT_FOLLOWLOCATION, 43 : 1L)); 44 : /* Enable compression (using whatever curl likes), see 45 : https://curl.se/libcurl/c/CURLOPT_ACCEPT_ENCODING.html */ 46 0 : GNUNET_break (CURLE_OK == 47 : curl_easy_setopt (eh, 48 : CURLOPT_ACCEPT_ENCODING, 49 : "")); 50 : /* limit MAXREDIRS to 5 as a simple security measure against 51 : a potential infinite loop caused by a malicious target */ 52 0 : GNUNET_assert (CURLE_OK == 53 : curl_easy_setopt (eh, 54 : CURLOPT_MAXREDIRS, 55 : 5L)); 56 0 : GNUNET_assert (CURLE_OK == 57 : curl_easy_setopt (eh, 58 : CURLOPT_TCP_FASTOPEN, 59 : 1L)); 60 0 : return eh; 61 : }