Control of 'addr' is now handed over to {platform_,}new_connection() and
[u/mdw/putty] / proxy.c
diff --git a/proxy.c b/proxy.c
index ed25f1a..169be0d 100644 (file)
--- a/proxy.c
+++ b/proxy.c
@@ -90,6 +90,7 @@ static void sk_proxy_close (Socket s)
     Proxy_Socket ps = (Proxy_Socket) s;
 
     sk_close(ps->sub_socket);
+    sk_addr_free(ps->remote_addr);
     sfree(ps);
 }
 
@@ -349,11 +350,6 @@ SockAddr name_lookup(char *host, int port, char **canonicalname,
     return sk_namelookup(host, canonicalname);
 }
 
-Socket platform_new_connection(SockAddr addr, char *hostname,
-                              int port, int privport,
-                              int oobinline, int nodelay, Plug plug,
-                              const Config *cfg);
-
 Socket new_connection(SockAddr addr, char *hostname,
                      int port, int privport,
                      int oobinline, int nodelay, Plug plug,
@@ -396,7 +392,7 @@ Socket new_connection(SockAddr addr, char *hostname,
        ret->fn = &socket_fn_table;
        ret->cfg = *cfg;               /* STRUCTURE COPY */
        ret->plug = plug;
-       ret->remote_addr = addr;
+       ret->remote_addr = addr;       /* will need to be freed on close */
        ret->remote_port = port;
 
        ret->error = NULL;
@@ -448,8 +444,6 @@ Socket new_connection(SockAddr addr, char *hostname,
        if (sk_socket_error(ret->sub_socket) != NULL)
            return (Socket) ret;
 
-       sk_addr_free(proxy_addr);
-
        /* start the proxy negotiation process... */
        sk_set_frozen(ret->sub_socket, 0);
        ret->negotiate(ret, PROXY_CHANGE_NEW);