curl/docs
Peter Wu 970c22f970 libcurl: add UNIX domain sockets support
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: Peter Wu <peter@lekensteyn.nl>
2014-12-04 02:52:19 +01:00
..
examples multi-single.c: switch to use curl_multi_wait 2014-11-25 11:45:38 +01:00
libcurl libcurl: add UNIX domain sockets support 2014-12-04 02:52:19 +01:00
.gitignore
BINDINGS BINDINGS: add node-libcurl 2014-09-18 09:05:29 +02:00
BUGS BUGS: update bug tracker URL 2013-01-13 23:16:11 +01:00
CONTRIBUTE CONTRIBUTE: mention our Bug/Reported-by commit style 2014-05-09 13:49:22 +02:00
curl-config.1 curl-config.1: fix curl-config usage in example 2012-05-20 15:38:54 +02:00
curl.1 curl.1: fix trivial typo 2014-12-03 22:38:46 +01:00
DISTRO-DILEMMA docs: fixed a bunch of typos 2014-03-14 23:38:00 +01:00
FAQ docs: Updated for the SMB protocol 2014-11-30 21:53:30 +00:00
FEATURES docs: Updated for the SMB protocol 2014-11-30 21:53:30 +00:00
HISTORY HISTORY: two glimpses in 2014 2014-10-21 08:58:24 +02:00
HTTP-COOKIES HTTP-COOKIES: clarified and modified layout 2012-07-03 11:10:41 +02:00
index.html
INSTALL INSTALL: Updated pre-processor references to the old VC6 project files 2014-11-09 14:22:02 +00:00
INSTALL.cmake cmake: enable IPv6 by default if available 2014-10-13 11:21:03 +02:00
INSTALL.devcpp Fixed some typos in documentation 2012-07-20 21:02:58 +02:00
INTERNALS sasl_gssapi: Introduced GSS-API based SASL module 2014-12-02 21:57:45 +00:00
KNOWN_BUGS NTLM: ignore CURLOPT_FORBID_REUSE during NTLM HTTP auth 2014-08-22 16:05:31 +02:00
LIBCURL-STRUCTS docs: fixed a bunch of typos 2014-03-14 23:38:00 +01:00
LICENSE-MIXING LICENSE-MIXING: removed krb4 info 2014-09-10 10:38:31 +02:00
MAIL-ETIQUETTE MAIL-ETIQUETTE: "1.8 I posted, now what?" 2014-09-04 08:57:28 +02:00
Makefile.am SSL-PROBLEMS: describes common curl+SSL problems 2014-03-08 22:21:41 +00:00
MANUAL docs: Updated for the SMB protocol 2014-11-30 21:53:30 +00:00
mk-ca-bundle.1 mk-ca-bundle: added SHA-384 signature algorithm 2014-10-15 13:23:22 +02:00
README.cmake removed execute file permission 2011-12-30 03:53:25 +01:00
README.netware docs: fixed a bunch of typos 2014-03-14 23:38:00 +01:00
README.win32
RELEASE-PROCEDURE RELEASE-PROCEDURE: better markdown, more content 2014-10-10 10:39:01 +02:00
RESOURCES
ROADMAP.md docs: Updated following the addition of SSPI based HTTP digest auth 2014-11-06 23:44:11 +00:00
SECURITY SECURITY: slightly nicer markdown format 2014-10-10 10:50:23 +02:00
SSL-PROBLEMS docs: fixed a bunch of typos 2014-03-14 23:38:00 +01:00
SSLCERTS SSLCERTS: minor updates 2014-09-10 10:13:04 +02:00
THANKS THANKS: added missing contributor from 2012 2014-11-05 13:01:37 +01:00
THANKS-filter THANKS-filter: added another Michał Górny version we've used 2014-11-05 23:14:32 +01:00
TheArtOfHttpScripting docs: fixed a bunch of typos 2014-03-14 23:38:00 +01:00
TODO TODO: Lets support QOP options in GSSAPI authentication 2014-11-15 00:38:00 +00:00
VERSIONS

                                  _   _ ____  _
                              ___| | | |  _ \| |
                             / __| | | | |_) | |
                            | (__| |_| |  _ <| |___
                             \___|\___/|_| \_\_____|

README.win32

  Read the README file first.

  Curl has been compiled, built and run on all sorts of Windows and win32
  systems. While not being the main develop target, a fair share of curl users
  are win32-based.

  The unix-style man pages are tricky to read on windows, so therefore are all
  those pages converted to HTML as well as pdf, and included in the release
  archives.

  The main curl.1 man page is also "built-in" in the command line tool. Use a
  command line similar to this in order to extract a separate text file:

        curl -M >manual.txt

  Read the INSTALL file for instructions how to compile curl self.