Skip to content
  1. Dec 04, 2014
    • Peter Wu's avatar
      libcurl: add UNIX domain sockets support · 970c22f9
      Peter Wu authored
      The ability to do HTTP requests over a UNIX domain socket has been
      requested before, in Apr 2008 [0][1] and Sep 2010 [2]. While a
      discussion happened, no patch seems to get through. I decided to give it
      a go since I need to test a nginx HTTP server which listens on a UNIX
      domain socket.
      
      One patch [3] seems to make it possible to use the
      CURLOPT_OPENSOCKETFUNCTION function to gain a UNIX domain socket.
      Another person wrote a Go program which can do HTTP over a UNIX socket
      for Docker[4] which uses a special URL scheme (though the name contains
      cURL, it has no relation to the cURL library).
      
      This patch considers support for UNIX domain sockets at the same level
      as HTTP proxies / IPv6, it acts as an intermediate socket provider and
      not as a separate protocol. Since this feature affects network
      operations, a new feature flag was added ("unix-sockets") with a
      corresponding CURL_VERSION_UNIX_SOCKETS macro.
      
      A new CURLOPT_UNIX_SOCKET_PATH option is added and documented. This
      option enables UNIX domain sockets support for all requests on the
      handle (replacing IP sockets and skipping proxies).
      
      A new configure option (--enable-unix-sockets) and CMake option
      (ENABLE_UNIX_SOCKETS) can disable this optional feature. Note that I
      deliberately did not mark this feature as advanced, this is a
      feature/component that should easily be available.
      
       [0]: http://curl.haxx.se/mail/lib-2008-04/0279.html
       [1]: http://daniel.haxx.se/blog/2008/04/14/http-over-unix-domain-sockets/
       [2]: http://sourceforge.net/p/curl/feature-requests/53/
       [3]: http://curl.haxx.se/mail/lib-2008-04/0361.html
       [4]: https://github.com/Soulou/curl-unix-socket
      
      
      
      Signed-off-by: default avatarPeter Wu <peter@lekensteyn.nl>
      970c22f9
  2. Nov 29, 2014
  3. Nov 07, 2014
  4. Nov 02, 2014
  5. Oct 13, 2014
  6. Oct 07, 2014
    • Travis Burtrum's avatar
      SSL: implement public key pinning · 93e45079
      Travis Burtrum authored
      Option --pinnedpubkey takes a path to a public key in DER format and
      only connect if it matches (currently only implemented with OpenSSL).
      
      Provides CURLOPT_PINNEDPUBLICKEY for curl_easy_setopt().
      
      Extract a public RSA key from a website like so:
      openssl s_client -connect google.com:443 2>&1 < /dev/null | \
      sed -n '/-----BEGIN/,/-----END/p' | openssl x509 -noout -pubkey \
      | openssl rsa -pubin -outform DER > google.com.der
      93e45079
  7. Jul 31, 2014
  8. Jul 28, 2014
  9. Jul 23, 2014
    • Daniel Stenberg's avatar
      http2: more and better error checking · 81cd24ad
      Daniel Stenberg authored
      1 - fixes the warnings when built without http2 support
      
      2 - adds CURLE_HTTP2, a new error code for errors detected by nghttp2
      basically when they are about http2 specific things.
      81cd24ad
  10. Jul 22, 2014
  11. Jun 18, 2014
  12. Jun 17, 2014
  13. Apr 04, 2014
  14. Feb 13, 2014
  15. Feb 10, 2014
  16. Dec 14, 2013
  17. Dec 06, 2013
    • Christian Weisgerber's avatar
      curl.h: <sys/select.h> for OpenBSD · 92e607ab
      Christian Weisgerber authored
      curl.h should also include <sys/select.h> on OpenBSD to reliably
      pull in select().  Typically, including <sys/time.h> will be enough,
      but not if strict standards-compliance is requested (e.g. by defining
      _XOPEN_SOURCE).
      92e607ab
  18. Nov 30, 2013
    • Steve Holme's avatar
      curl_easy_getinfo: Post CURLINFO_TLS_SESSION tidy up · dc68120e
      Steve Holme authored
      1) Renamed curl_tlsinfo to curl_tlssessioninfo as discussed on the
      mailing list.
      2) Renamed curl_ssl_backend to curl_sslbackend so it doesn't follow our
      function naming convention.
      3) Updated sessioninfo.c example accordingly.
      dc68120e
  19. Nov 21, 2013
  20. Nov 12, 2013
  21. Oct 15, 2013
    • Gergely Nagy's avatar
      SSL: protocol version can be specified more precisely · ad34a2d5
      Gergely Nagy authored
      CURL_SSLVERSION_TLSv1_0, CURL_SSLVERSION_TLSv1_1,
      CURL_SSLVERSION_TLSv1_2 enum values are added to force exact TLS version
      (CURL_SSLVERSION_TLSv1 means TLS 1.x).
      
      axTLS:
      axTLS only supports TLS 1.0 and 1.1 but it cannot be set that only one
      of these should be used, so we don't allow the new enum values.
      
      darwinssl:
      Added support for the new enum values.
      
      SChannel:
      Added support for the new enum values.
      
      CyaSSL:
      Added support for the new enum values.
      Bug: The original CURL_SSLVERSION_TLSv1 value enables only TLS 1.0 (it
      did the same before this commit), because CyaSSL cannot be configured to
      use TLS 1.0-1.2.
      
      GSKit:
      GSKit doesn't seem to support TLS 1.1 and TLS 1.2, so we do not allow
      those values.
      Bugfix: There was a typo that caused wrong SSL versions to be passed to
      GSKit.
      
      NSS:
      TLS minor version cannot be set, so we don't allow the new enum values.
      
      QsoSSL:
      TLS minor version cannot be set, so we don't allow the new enum values.
      
      OpenSSL:
      Added support for the new enum values.
      Bugfix: The original CURL_SSLVERSION_TLSv1 value enabled only TLS 1.0,
      now it enables 1.0-1.2.
      
      Command-line tool:
      Added command line options for the new values.
      ad34a2d5
  22. Sep 12, 2013
  23. Sep 04, 2013
  24. Aug 25, 2013
    • Kyle L. Huff's avatar
      options: added basic SASL XOAUTH2 support · 06c1bea7
      Kyle L. Huff authored
      Added the ability to specify an XOAUTH2 bearer token [RFC6750] via the
      option CURLOPT_XOAUTH2_BEARER for authentication using RFC6749 "OAuth
      2.0 Authorization Framework".
      06c1bea7
  25. Aug 22, 2013
  26. Jul 18, 2013
    • Daniel Stenberg's avatar
      CURLOPT_XFERINFOFUNCTION: introducing a new progress callback · 12d01cb6
      Daniel Stenberg authored
      CURLOPT_XFERINFOFUNCTION is now the preferred progress callback function
      and CURLOPT_PROGRESSFUNCTION is considered deprecated.
      
      This new callback uses pure 'curl_off_t' arguments to pass on full
      resolution sizes. It otherwise retains the same characteristics: the
      same call rate, the same meanings for the arguments and the return code
      is used the same way.
      
      The progressfunc.c example is updated to show how to use the new
      callback for newer libcurls while supporting the older one if built with
      an older libcurl or even built with a newer libcurl while running with
      an older.
      12d01cb6
  27. Apr 27, 2013
  28. Mar 13, 2013
    • Linus Nielsen's avatar
      Multiple pipelines and limiting the number of connections. · 0f147887
      Linus Nielsen authored
      Introducing a number of options to the multi interface that
      allows for multiple pipelines to the same host, in order to
      optimize the balance between the penalty for opening new
      connections and the potential pipelining latency.
      
      Two new options for limiting the number of connections:
      
      CURLMOPT_MAX_HOST_CONNECTIONS - Limits the number of running connections
      to the same host. When adding a handle that exceeds this limit,
      that handle will be put in a pending state until another handle is
      finished, so we can reuse the connection.
      
      CURLMOPT_MAX_TOTAL_CONNECTIONS - Limits the number of connections in total.
      When adding a handle that exceeds this limit,
      that handle will be put in a pending state until another handle is
      finished. The free connection will then be reused, if possible, or
      closed if the pending handle can't reuse it.
      
      Several new options for pipelining:
      
      CURLMOPT_MAX_PIPELINE_LENGTH - Limits the pipeling length. If a
      pipeline is "full" when a connection is to be reused, a new connection
      will be opened if the CURLMOPT_MAX_xxx_CONNECTIONS limits allow it.
      If not, the handle will be put in a pending state until a connection is
      ready (either free or a pipe got shorter).
      
      CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE - A pipelined connection will not
      be reused if it is currently processing a transfer with a content
      length that is larger than this.
      
      CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE - A pipelined connection will not
      be reused if it is currently processing a chunk larger than this.
      
      CURLMOPT_PIPELINING_SITE_BL - A blacklist of hosts that don't allow
      pipelining.
      
      CURLMOPT_PIPELINING_SERVER_BL - A blacklist of server types that don't allow
      pipelining.
      
      See the curl_multi_setopt() man page for details.
      0f147887
  29. Mar 12, 2013
  30. Mar 11, 2013
  31. Sep 26, 2012
  32. Aug 27, 2012
  33. Aug 16, 2012
    • Gokhan Sengun's avatar
      ftp: active conn, allow application to set sockopt after accept() call · 23ef5e4b
      Gokhan Sengun authored
      For active FTP connections, applications may need setting the sockopt after accept() call returns successful. This fix gives a call to the callback registered with CURL_SOCKOPTFUNCTION option. Also a new sock type - CURLSOCKTYPE_ACCEPT - is added. This type is to be passed to application callbacks with - purpose - parameter. Applications may use this parameter to distinguish between socket types.
      23ef5e4b
  34. Aug 08, 2012
  35. Jun 11, 2012