Skip to content
  1. Nov 15, 2017
  2. Nov 12, 2017
  3. Nov 09, 2017
    • Luca Boccassi's avatar
      --interface: add support for Linux VRF · 32828cc4
      Luca Boccassi authored
      The --interface command (CURLOPT_INTERFACE option) already uses
      SO_BINDTODEVICE on Linux, but it tries to parse it as an interface or IP
      address first, which fails in case the user passes a VRF.
      
      Try to use the socket option immediately and parse it as a fallback
      instead.  Update the documentation to mention this feature, and that it
      requires the binary to be ran by root or with CAP_NET_RAW capabilities
      for this to work.
      
      Closes #2024
      32828cc4
    • Daniel Stenberg's avatar
      67c55a26
    • Daniel Stenberg's avatar
      connect: store IPv6 connection status after valid connection · 6b12beb2
      Daniel Stenberg authored
      ... previously it would store it already in the happy eyeballs stage
      which could lead to the IPv6 bit being set for an IPv4 connection,
      leading to curl not wanting to do EPSV=>PASV for FTP transfers.
      
      Closes #2053
      6b12beb2
  4. Oct 29, 2017
  5. Oct 28, 2017
  6. Oct 25, 2017
    • Daniel Stenberg's avatar
      time: rename Curl_tvnow to Curl_now · 5d543fe9
      Daniel Stenberg authored
      ... since the 'tv' stood for timeval and this function does not return a
      timeval struct anymore.
      
      Also, cleaned up the Curl_timediff*() functions to avoid typecasts and
      clean up the descriptive comments.
      
      Closes #2011
      5d543fe9
    • Daniel Stenberg's avatar
      timediff: return timediff_t from the time diff functions · b9d25f9a
      Daniel Stenberg authored
      ... to cater for systems with unsigned time_t variables.
      
      - Renamed the functions to curlx_timediff and Curl_timediff_us.
      
      - Added overflow protection for both of them in either direction for
        both 32 bit and 64 bit time_ts
      
      - Reprefixed the curlx_time functions to use Curl_*
      
      Reported-by: Peter Piekarski
      Fixes #2004
      Closes #2005
      b9d25f9a
  7. Sep 29, 2017
    • Anders Bakken's avatar
      connect: fix race condition with happy eyeballs timeout · 49d75a4c
      Anders Bakken authored
      The timer should be started after conn->connecttime is set. Otherwise
      the timer could expire without this condition being true:
      
          /* should we try another protocol family? */
          if(i == 0 && conn->tempaddr[1] == NULL &&
            curlx_tvdiff(now, conn->connecttime) >= HAPPY_EYEBALLS_TIMEOUT) {
      
      Ref: #1928
      49d75a4c
  8. Sep 11, 2017
  9. Aug 16, 2017
    • Nick Zitzmann's avatar
      configure: check for __builtin_available() availability (#1788) · 870d849d
      Nick Zitzmann authored
      This change does two things:
      1. It un-breaks the build in Xcode 9.0. (Xcode 9.0 is currently
         failing trying to compile connectx() in lib/connect.c.)
      2. It finally weak-links the connectx() function, and falls back on
         connect() when run on older operating systems.
      870d849d
  10. Jul 28, 2017
  11. Jul 10, 2017
  12. Jul 04, 2017
  13. Jun 08, 2017
    • Daniel Stenberg's avatar
      expire: remove Curl_expire_latest() · 7fffe97b
      Daniel Stenberg authored
      With the introduction of expire IDs and the fact that existing timers
      can be removed now and thus never expire, the concept with adding a
      "latest" timer is not working anymore as it risks to not expire at all.
      
      So, to be certain the timers actually are in line and will expire, the
      plain Curl_expire() needs to be used. The _latest() function was added
      as a sort of shortcut in the past that's quite simply not necessary
      anymore.
      
      Follow-up to 31b39c40
      
      Reported-by: Paul Harris
      
      Closes #1555
      7fffe97b
  14. May 10, 2017
  15. Mar 30, 2017
  16. Mar 13, 2017
  17. Dec 19, 2016
  18. Dec 18, 2016
  19. Dec 13, 2016
  20. Nov 24, 2016
    • Frank Gevaerts's avatar
      add CURLINFO_SCHEME, CURLINFO_PROTOCOL, and %{scheme} · ba410f6c
      Frank Gevaerts authored
      Adds access to the effectively used protocol/scheme to both libcurl and
      curl, both in string and numeric (CURLPROTO_*) form.
      
      Note that the string form will be uppercase, as it is just the internal
      string.
      
      As these strings are declared internally as const, and all other strings
      returned by curl_easy_getinfo() are de-facto const as well, string
      handling in getinfo.c got const-ified.
      
      Closes #1137
      ba410f6c
    • Daniel Stenberg's avatar
    • Daniel Stenberg's avatar
      dbadaebf
    • Alex Rousskov's avatar
      proxy: Support HTTPS proxy and SOCKS+HTTP(s) · cb4e2be7
      Alex Rousskov authored
      * HTTPS proxies:
      
      An HTTPS proxy receives all transactions over an SSL/TLS connection.
      Once a secure connection with the proxy is established, the user agent
      uses the proxy as usual, including sending CONNECT requests to instruct
      the proxy to establish a [usually secure] TCP tunnel with an origin
      server. HTTPS proxies protect nearly all aspects of user-proxy
      communications as opposed to HTTP proxies that receive all requests
      (including CONNECT requests) in vulnerable clear text.
      
      With HTTPS proxies, it is possible to have two concurrent _nested_
      SSL/TLS sessions: the "outer" one between the user agent and the proxy
      and the "inner" one between the user agent and the origin server
      (through the proxy). This change adds supports for such nested sessions
      as well.
      
      A secure connection with a proxy requires its own set of the usual SSL
      options (their actual descriptions differ and need polishing, see TODO):
      
        --proxy-cacert FILE        CA certificate to verify peer against
        --proxy-capath DIR         CA directory to verify peer against
        --proxy-cert CERT[:PASSWD] Client certificate file and password
        --proxy-cert-type TYPE     Certificate file type (DER/PEM/ENG)
        --proxy-ciphers LIST       SSL ciphers to use
        --proxy-crlfile FILE       Get a CRL list in PEM format from the file
        --proxy-insecure           Allow connections to proxies with bad certs
        --proxy-key KEY            Private key file name
        --proxy-key-type TYPE      Private key file type (DER/PEM/ENG)
        --proxy-pass PASS          Pass phrase for the private key
        --proxy-ssl-allow-beast    Allow security flaw to improve interop
        --proxy-sslv2              Use SSLv2
        --proxy-sslv3              Use SSLv3
        --proxy-tlsv1              Use TLSv1
        --proxy-tlsuser USER       TLS username
        --proxy-tlspassword STRING TLS password
        --proxy-tlsauthtype STRING TLS authentication type (default SRP)
      
      All --proxy-foo options are independent from their --foo counterparts,
      except --proxy-crlfile which defaults to --crlfile and --proxy-capath
      which defaults to --capath.
      
      Curl now also supports %{proxy_ssl_verify_result} --write-out variable,
      similar to the existing %{ssl_verify_result} variable.
      
      Supported backends: OpenSSL, GnuTLS, and NSS.
      
      * A SOCKS proxy + HTTP/HTTPS proxy combination:
      
      If both --socks* and --proxy options are given, Curl first connects to
      the SOCKS proxy and then connects (through SOCKS) to the HTTP or HTTPS
      proxy.
      
      TODO: Update documentation for the new APIs and --proxy-* options.
      Look for "Added in 7.XXX" marks.
      cb4e2be7
  21. Nov 18, 2016
    • Marcel Raad's avatar
      lib: fix compiler warnings after de4de4e3 · 21aa32d3
      Marcel Raad authored
      Visual C++ now complains about implicitly casting time_t (64-bit) to
      long (32-bit). Fix this by changing some variables from long to time_t,
      or explicitly casting to long where the public interface would be
      affected.
      
      Closes #1131
      21aa32d3
  22. Oct 18, 2016
    • Daniel Stenberg's avatar
      select: switch to macros in uppercase · 8a6e89a9
      Daniel Stenberg authored
      Curl_select_ready() was the former API that was replaced with
      Curl_select_check() a while back and the former arg setup was provided
      with a define (in order to leave existing code unmodified).
      
      Now we instead offer SOCKET_READABLE and SOCKET_WRITABLE for the most
      common shortcuts where only one socket is checked. They're also more
      visibly macros.
      8a6e89a9
  23. Oct 16, 2016
  24. Aug 30, 2016
  25. Aug 28, 2016
  26. Aug 21, 2016
  27. Jul 20, 2016
  28. Jun 22, 2016
  29. Jun 04, 2016
  30. May 08, 2016
    • Antonio Larrosa's avatar
      connect: fix invalid "Network is unreachable" errors · ae8f6620
      Antonio Larrosa authored
      Sometimes, in systems with both ipv4 and ipv6 addresses but where the
      network doesn't support ipv6, Curl_is_connected returns an error
      (intermittently) even if the ipv4 socket connects successfully.
      
      This happens because there's a for-loop that iterates on the sockets but
      the error variable is not resetted when the ipv4 is checked and is ok.
      
      This patch fixes this problem by setting error to 0 when checking the
      second socket and not having a result yet.
      
      Fixes #794
      ae8f6620
  31. Apr 29, 2016
    • Daniel Stenberg's avatar
      lib: include curl_printf.h as one of the last headers · 4f45240b
      Daniel Stenberg authored
      curl_printf.h defines printf to curl_mprintf, etc. This can cause
      problems with external headers which may use
      __attribute__((format(printf, ...))) markers etc.
      
      To avoid that they cause problems with system includes, we include
      curl_printf.h after any system headers. That makes the three last
      headers to always be, and we keep them in this order:
      
       curl_printf.h
       curl_memory.h
       memdebug.h
      
      None of them include system headers, they all do funny #defines.
      
      Reported-by: David Benjamin
      
      Fixes #743
      4f45240b
  32. Apr 19, 2016