]> granicus.if.org Git - curl/commitdiff
url: fix unix-socket support for proxy-disabled builds
authorIsaac Boukris <iboukris@gmail.com>
Fri, 24 Feb 2017 09:28:08 +0000 (11:28 +0200)
committerJay Satiro <raysatiro@yahoo.com>
Sat, 25 Feb 2017 23:21:15 +0000 (18:21 -0500)
Prior to this change if curl was built with Unix Socket support
(--enable-unix-sockets) and without Proxy support (--disable-proxy) then
unix socket options would erroneously be ignored.

Regression introduced in:
0b8d682f81ee9acb763dd4c9ad805fe08d1227c0

Bug: https://github.com/curl/curl/issues/1274
Reported-by: mccormickt12@users.noreply.github.com
Closes https://github.com/curl/curl/pull/1289

lib/url.c

index b2dac8bcbdbc24abb06b8e1ee76fdad265cbb5a9..94c9bc6813c052240e465378ad4099a6d402502e 100644 (file)
--- a/lib/url.c
+++ b/lib/url.c
@@ -6256,6 +6256,17 @@ static CURLcode create_conn(struct Curl_easy *data,
     }
   }
 
+#ifdef USE_UNIX_SOCKETS
+  if(data->set.str[STRING_UNIX_SOCKET_PATH]) {
+    conn->unix_domain_socket = strdup(data->set.str[STRING_UNIX_SOCKET_PATH]);
+    if(conn->unix_domain_socket == NULL) {
+      result = CURLE_OUT_OF_MEMORY;
+      goto out;
+    }
+    conn->abstract_unix_socket = data->set.abstract_unix_socket;
+  }
+#endif
+
 #ifndef CURL_DISABLE_PROXY
   /*************************************************************
    * Extract the user and password from the authentication string
@@ -6310,17 +6321,10 @@ static CURLcode create_conn(struct Curl_easy *data,
   Curl_safefree(no_proxy);
 
 #ifdef USE_UNIX_SOCKETS
-  if(data->set.str[STRING_UNIX_SOCKET_PATH]) {
-    if(proxy) {
-      free(proxy); /* Unix domain sockets cannot be proxied, so disable it */
-      proxy = NULL;
-    }
-    conn->unix_domain_socket = strdup(data->set.str[STRING_UNIX_SOCKET_PATH]);
-    if(conn->unix_domain_socket == NULL) {
-      result = CURLE_OUT_OF_MEMORY;
-      goto out;
-    }
-    conn->abstract_unix_socket = data->set.abstract_unix_socket;
+  /* For the time being do not mix proxy and unix domain sockets. See #1274 */
+  if(proxy && conn->unix_domain_socket) {
+    free(proxy);
+    proxy = NULL;
   }
 #endif