diff options
Diffstat (limited to 'docs/libcurl')
-rw-r--r-- | docs/libcurl/curl_easy_setopt.3 | 2 | ||||
-rw-r--r-- | docs/libcurl/curl_version_info.3 | 3 | ||||
-rw-r--r-- | docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3 | 76 | ||||
-rw-r--r-- | docs/libcurl/symbols-in-versions | 2 |
4 files changed, 83 insertions, 0 deletions
diff --git a/docs/libcurl/curl_easy_setopt.3 b/docs/libcurl/curl_easy_setopt.3 index d79a42b04..71f681b70 100644 --- a/docs/libcurl/curl_easy_setopt.3 +++ b/docs/libcurl/curl_easy_setopt.3 @@ -187,6 +187,8 @@ Enable TCP keep-alive. See \fICURLOPT_TCP_KEEPALIVE(3)\fP Idle time before sending keep-alive. See \fICURLOPT_TCP_KEEPIDLE(3)\fP .IP CURLOPT_TCP_KEEPINTVL Interval between keep-alive probes. See \fICURLOPT_TCP_KEEPINTVL(3)\fP +.IP CURLOPT_UNIX_SOCKET_PATH +Path to a UNIX domain socket. See \fICURLOPT_UNIX_SOCKET_PATH(3)\fP .SH NAMES and PASSWORDS OPTIONS (Authentication) .IP CURLOPT_NETRC Enable .netrc parsing. See \fICURLOPT_NETRC(3)\fP diff --git a/docs/libcurl/curl_version_info.3 b/docs/libcurl/curl_version_info.3 index 3acf7851b..6e553463e 100644 --- a/docs/libcurl/curl_version_info.3 +++ b/docs/libcurl/curl_version_info.3 @@ -146,6 +146,9 @@ libcurl was built with support for NTLM delegation to a winbind helper. .IP CURL_VERSION_HTTP2 libcurl was built with support for HTTP2. (Added in 7.33.0) +.IP CURL_VERSION_UNIX_SOCKETS +libcurl was built with support for UNIX domain sockets. +(Added in 7.40.0) .RE \fIssl_version\fP is an ASCII string for the OpenSSL version used. If libcurl has no SSL support, this is NULL. diff --git a/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3 b/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3 new file mode 100644 index 000000000..880c2f71f --- /dev/null +++ b/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3 @@ -0,0 +1,76 @@ +.\" ************************************************************************** +.\" * _ _ ____ _ +.\" * Project ___| | | | _ \| | +.\" * / __| | | | |_) | | +.\" * | (__| |_| | _ <| |___ +.\" * \___|\___/|_| \_\_____| +.\" * +.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. +.\" * +.\" * This software is licensed as described in the file COPYING, which +.\" * you should have received as part of this distribution. The terms +.\" * are also available at http://curl.haxx.se/docs/copyright.html. +.\" * +.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell +.\" * copies of the Software, and permit persons to whom the Software is +.\" * furnished to do so, under the terms of the COPYING file. +.\" * +.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY +.\" * KIND, either express or implied. +.\" * +.\" ************************************************************************** +.\" +.TH CURLOPT_UNIX_SOCKET_PATH 3 "09 Oct 2014" "libcurl 7.40.0" "curl_easy_setopt options" +.SH NAME +CURLOPT_UNIX_SOCKET_PATH \- set UNIX domain socket +.SH SYNOPSIS +#include <curl/curl.h> + +CURLcode curl_easy_setopt(CURL *handle, CURLOPT_UNIX_SOCKET_PATH, char *path); +.SH DESCRIPTION +Enables the use of UNIX domain sockets as connection end point and sets the path +to \fIpath\fP. If \fIpath\fP is NULL, then UNIX domain sockets are disabled. An +empty string will result in an error at some point. + +When enabled, cURL will connect to the UNIX domain socket instead of +establishing a TCP connection to a host. Since no TCP connection is established, +cURL does not need to resolve the DNS hostname in the URL. + +The maximum path length on Cygwin, Linux and Solaris is 107. On other platforms +might be even less. + +Proxy and TCP options such as +.BR CURLOPT_TCP_NODELAY "(3) +are not supported. Proxy options such as +.BR CURLOPT_PROXY "(3) +have no effect either as these are TCP-oriented, and asking a proxy server to +connect to a certain UNIX domain socket is not possible. +.SH DEFAULT +Default is NULL, meaning that no UNIX domain sockets are used. +.SH PROTOCOLS +All protocols except for file:// and FTP are supported in theory. HTTP, IMAP, +POP3 and SMTP should in particular work (including their SSL/TLS variants). +.SH EXAMPLE +Given that you have an nginx server running, listening on /tmp/nginx.sock, you +can request a HTTP resource with: + + curl_easy_setopt(curl_handle, CURLOPT_UNIX_SOCKET_PATH, "/tmp/nginx.sock"); + curl_easy_setopt(curl_handle, CURLOPT_URL, "http://localhost/"); + +If you are on Linux and somehow have a need for paths larger than 107 bytes, you +could use the proc filesystem to bypass the limitation: + + int dirfd = open(long_directory_path_to_socket, O_DIRECTORY | O_RDONLY); + char path[108]; + snprintf(path, sizeof(path), "/proc/self/fd/%d/nginx.sock", dirfd); + curl_easy_setopt(curl_handle, CURLOPT_UNIX_SOCKET_PATH, path); + /* Be sure to keep dirfd valid until you discard the handle */ + +.SH AVAILABILITY +Since 7.40.0. +.SH RETURN VALUE +Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. +.SH "SEE ALSO" +.BR CURLOPT_OPENSOCKETFUNCTION "(3) +, +.BR unix "(7) diff --git a/docs/libcurl/symbols-in-versions b/docs/libcurl/symbols-in-versions index 642cc19f4..b8b0838b0 100644 --- a/docs/libcurl/symbols-in-versions +++ b/docs/libcurl/symbols-in-versions @@ -529,6 +529,7 @@ CURLOPT_TLSAUTH_TYPE 7.21.4 CURLOPT_TLSAUTH_USERNAME 7.21.4 CURLOPT_TRANSFERTEXT 7.1.1 CURLOPT_TRANSFER_ENCODING 7.21.6 +CURLOPT_UNIX_SOCKET_PATH 7.40.0 CURLOPT_UNRESTRICTED_AUTH 7.10.4 CURLOPT_UPLOAD 7.1 CURLOPT_URL 7.1 @@ -749,6 +750,7 @@ CURL_VERSION_SPNEGO 7.10.8 CURL_VERSION_SSL 7.10 CURL_VERSION_SSPI 7.13.2 CURL_VERSION_TLSAUTH_SRP 7.21.4 +CURL_VERSION_UNIX_SOCKETS 7.40.0 CURL_WAIT_POLLIN 7.28.0 CURL_WAIT_POLLOUT 7.28.0 CURL_WAIT_POLLPRI 7.28.0 |