Increase FONT_MAXNO from 0x2f to 0x40, to ensure the fonts[] array
[u/mdw/putty] / proxy.c
diff --git a/proxy.c b/proxy.c
index 051beb7..70da38c 100644 (file)
--- a/proxy.c
+++ b/proxy.c
@@ -286,6 +286,15 @@ static int proxy_for_destination (SockAddr addr, char *hostname, int port,
     const char *exclude_list;
 
     /*
+     * Special local connections such as Unix-domain sockets
+     * unconditionally cannot be proxied, even in proxy-localhost
+     * mode. There just isn't any way to ask any known proxy type for
+     * them.
+     */
+    if (addr && sk_address_is_special_local(addr))
+        return 0;                      /* do not proxy */
+
+    /*
      * Check the host name and IP against the hard-coded
      * representations of `localhost'.
      */
@@ -464,6 +473,7 @@ Socket new_connection(SockAddr addr, char *hostname,
                                   conf_get_int(conf, CONF_addressfamily));
        if (sk_addr_error(proxy_addr) != NULL) {
            ret->error = "Proxy error: Unable to resolve proxy host name";
+            sfree(pplug);
            return (Socket)ret;
        }
        sfree(proxy_canonical_name);
@@ -741,8 +751,7 @@ int proxy_socks4_negotiate (Proxy_Socket p, int change)
 
        type = sk_addrtype(p->remote_addr);
        if (type == ADDRTYPE_IPV6) {
-           plug_closing(p->plug, "Proxy error: SOCKS version 4 does"
-                        " not support IPv6", PROXY_ERROR_GENERAL, 0);
+            p->error = "Proxy error: SOCKS version 4 does not support IPv6";
            return 1;
        } else if (type == ADDRTYPE_IPV4) {
            namelen = 0;