curl/docs/libcurl
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
..
opts libcurl: add UNIX domain sockets support 2014-12-04 02:52:19 +01:00
.gitignore IGNORE: files generated by maketgz 2010-04-14 17:34:57 +02:00
ABI docs/libcurl/ABI: more markdown friendly 2014-10-21 10:43:12 +02:00
curl_easy_cleanup.3 curl*3: added small examples 2014-11-25 14:25:02 +01:00
curl_easy_duphandle.3 libcurl docs: improvements all over 2014-09-19 15:08:26 +02:00
curl_easy_escape.3 curl*3: added small examples 2014-11-25 14:25:02 +01:00
curl_easy_getinfo.3 vtls: remove QsoSSL 2014-10-13 16:33:47 +02:00
curl_easy_init.3 curl*3: added small examples 2014-11-25 14:25:02 +01:00
curl_easy_pause.3 curl_easy_pause.3: minor wording edit 2014-10-24 09:16:06 +02:00
curl_easy_perform.3 curl*3: added small examples 2014-11-25 14:25:02 +01:00
curl_easy_recv.3 lib man pages: update easy setopt option references 2014-06-21 20:21:47 +02:00
curl_easy_reset.3 libcurl docs: improvements all over 2014-09-19 15:08:26 +02:00
curl_easy_send.3 lib man pages: update easy setopt option references 2014-06-21 20:21:47 +02:00
curl_easy_setopt.3 libcurl: add UNIX domain sockets support 2014-12-04 02:52:19 +01:00
curl_easy_strerror.3 docs: edited lots of libcurl docs for clarity 2014-10-21 10:26:40 +02:00
curl_easy_unescape.3 libcurl docs: man page edits 2014-06-21 23:52:06 +02:00
curl_escape.3 source header: added to more files 2011-03-12 00:14:32 +01:00
curl_formadd.3 curl_formadd.3: setting CURLFORM_CONTENTSLENGTH 0 zero means strlen 2014-08-29 08:10:38 +02:00
curl_formfree.3 lib man pages: update easy setopt option references 2014-06-21 20:21:47 +02:00
curl_formget.3 curl_formget.3: CURLFORM_STREAM has its drawbacks 2011-06-13 22:03:33 +02:00
curl_free.3 docs: edited lots of libcurl docs for clarity 2014-10-21 10:26:40 +02:00
curl_getdate.3 curl_getdate.3: provide a "SEE ALSO" section 2014-10-24 09:12:17 +02:00
curl_getenv.3 source header: added to more files 2011-03-12 00:14:32 +01:00
curl_global_cleanup.3 source header: added to more files 2011-03-12 00:14:32 +01:00
curl_global_init_mem.3 docs: fix typos in man pages 2013-01-28 14:22:48 +01:00
curl_global_init.3 curl_global_init.3: minor formatting fix, add version info 2014-10-24 09:08:22 +02:00
curl_mprintf.3 source header: added to more files 2011-03-12 00:14:32 +01:00
curl_multi_add_handle.3 docs: edited lots of libcurl docs for clarity 2014-10-21 10:26:40 +02:00
curl_multi_assign.3 docs: edited lots of libcurl docs for clarity 2014-10-21 10:26:40 +02:00
curl_multi_cleanup.3 libcurl documentation: clarifications and typos 2013-02-22 23:22:22 +01:00
curl_multi_fdset.3 man pages: SEE ALSO curl_multi_wait 2014-11-25 11:48:56 +01:00
curl_multi_info_read.3 source header: added to more files 2011-03-12 00:14:32 +01:00
curl_multi_init.3 source header: added to more files 2011-03-12 00:14:32 +01:00
curl_multi_perform.3 man pages: SEE ALSO curl_multi_wait 2014-11-25 11:48:56 +01:00
curl_multi_remove_handle.3 docs: edited lots of libcurl docs for clarity 2014-10-21 10:26:40 +02:00
curl_multi_setopt.3 curl_multi_setopt.3: refer to stand-alone pages 2014-11-04 10:37:09 +01:00
curl_multi_socket_action.3 docs/libcurl: fix formatting in manpage 2013-04-16 09:52:12 +02:00
curl_multi_socket_all.3 The inital early embryos to describe the curl_multi_socket() API. Committed 2005-12-22 15:11:11 +00:00
curl_multi_socket.3 source header: added to more files 2011-03-12 00:14:32 +01:00
curl_multi_strerror.3 source header: added to more files 2011-03-12 00:14:32 +01:00
curl_multi_timeout.3 libcurl documentation: clarifications and typos 2013-02-22 23:22:22 +01:00
curl_multi_wait.3 curl_multi_wait.3: clarify numfds being used if not NULL 2014-11-25 11:48:38 +01:00
curl_share_cleanup.3 source header: added to more files 2011-03-12 00:14:32 +01:00
curl_share_init.3 lib man pages: update easy setopt option references 2014-06-21 20:21:47 +02:00
curl_share_setopt.3 Fixed some typos in documentation 2012-07-20 21:02:58 +02:00
curl_share_strerror.3 source header: added to more files 2011-03-12 00:14:32 +01:00
curl_slist_append.3 source header: added to more files 2011-03-12 00:14:32 +01:00
curl_slist_free_all.3 source header: added to more files 2011-03-12 00:14:32 +01:00
curl_strequal.3 source header: added to more files 2011-03-12 00:14:32 +01:00
curl_strnequal.3 prepend the man3 dir to the file name to work better. 2004-04-02 11:04:34 +00:00
curl_unescape.3 libcurl docs: man page edits 2014-06-21 23:52:06 +02:00
curl_version_info.3 libcurl: add UNIX domain sockets support 2014-12-04 02:52:19 +01:00
curl_version.3 curl_version.3: recommend using curl_version_info() instead 2014-02-18 08:59:56 +01:00
getinfo-times getinfo-times: Typo fixed 2014-08-29 16:41:17 +02:00
index.html libcurl documentation: updates HTML index 2013-02-22 23:22:21 +01:00
libcurl-easy.3 *.3: add/extend "SEE ALSO" sections 2014-10-24 09:22:38 +02:00
libcurl-errors.3 *.3: add/extend "SEE ALSO" sections 2014-10-24 09:22:38 +02:00
libcurl-multi.3 *.3: add/extend "SEE ALSO" sections 2014-10-24 09:22:38 +02:00
libcurl-share.3 *.3: add/extend "SEE ALSO" sections 2014-10-24 09:22:38 +02:00
libcurl-tutorial.3 docs: Use consistent naming for Kerberos 2014-11-15 13:10:45 +00:00
libcurl.3 libcurl.3: fix formatting 2014-11-25 11:56:43 +01:00
libcurl.m4 libcurl.m4: include the standard source header 2014-07-29 00:06:36 +02:00
Makefile.am libcurl build: use correct dir when cd'ing to opts for pdf building 2014-06-18 10:15:07 +02:00
symbols-in-versions libcurl: add UNIX domain sockets support 2014-12-04 02:52:19 +01:00
symbols.pl symbols.pl: provide LIBCURL_HAS macro for apps 2011-11-24 22:56:39 +01:00