DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

CURLOPT_UNIX_SOCKET_PATH(3)





CURLOPT_UNIX_SOCKET_PATH(3curl_easy_setopt optionCURLOPT_UNIX_SOCKET_PATH(3)



NAME

     CURLOPT_UNIX_SOCKET_PATH - set Unix domain socket


SYNOPSIS

     #include <curl/curl.h>

     CURLcode           curl_easy_setopt(CURL            *handle,
     CURLOPT_UNIX_SOCKET_PATH, char *path);


DESCRIPTION

     Enables the use of Unix domain sockets  as  connection  end-
     point  and sets the path to path. If path is NULL, then Unix
     domain sockets are disabled. An empty string will result  in
     an  error  at  some  point,  it will not disable use of Unix
     domain sockets.

     When enabled, curl will connect to the  Unix  domain  socket
     instead of establishing a TCP connection to a host. Since no
     TCP connection is created, 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 it might be even less.

     Proxy and TCP options such as CURLOPT_TCP_NODELAY(3) are not
     supported.  Proxy  options  such as 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.

     The application does not have  to  keep  the  string  around
     after setting this option.


DEFAULT

     Default is NULL, meaning that no  Unix  domain  sockets  are
     used.


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).


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:

libcurl 7.58.0   Last change: December 21, 2016                 1


CURLOPT_UNIX_SOCKET_PATH(3curl_easy_setopt optionCURLOPT_UNIX_SOCKET_PATH(3)


         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 */


AVAILABILITY

     Since 7.40.0.


RETURN VALUE

     Returns  CURLE_OK  if   the   option   is   supported,   and
     CURLE_UNKNOWN_OPTION if not.


SEE ALSO

     CURLOPT_OPENSOCKETFUNCTION(3), unix(7),

libcurl 7.58.0   Last change: December 21, 2016                 2


Man(1) output converted with man2html