Avoid potential memory leak.
[sgt/putty] / proxy.h
diff --git a/proxy.h b/proxy.h
index 43d92cb..c79759c 100644 (file)
--- a/proxy.h
+++ b/proxy.h
@@ -4,8 +4,7 @@
  * A proxy layer, if necessary, wedges itself between the
  * network code and the higher level backend.
  *
- * Supported proxies: HTTP CONNECT, generic telnet
- * In progress: SOCKS
+ * Supported proxies: HTTP CONNECT, generic telnet, SOCKS 4 & 5
  */
 
 #ifndef PUTTY_PROXY_H
@@ -17,7 +16,7 @@
 typedef struct Socket_proxy_tag * Proxy_Socket;
 
 struct Socket_proxy_tag {
-    struct socket_function_table *fn;
+    const struct socket_function_table *fn;
     /* the above variable absolutely *must* be the first in this structure */
 
     char * error;
@@ -80,30 +79,12 @@ struct Socket_proxy_tag {
     /* accepting */
     void *accepting_sock;
 
-    /* spin locks, for the critical switch from negotiating
-     * to active state. we have to dump all of our pending
-     * buffers without new events (read, writes, etc) corrupting
-     * things. we should not have built up a large amount of
-     * pending data during negotiation, so hopefully this will
-     * not have a large effect on performance.
-     */
-
-    char lock_close;
-    char lock_write;
-    char lock_write_oob;
-    char lock_receive;
-    char lock_flush;
-    char lock_closing;
-    char lock_sent;
-    char lock_accepting;
-    char lock_freeze;
-
 };
 
 typedef struct Plug_proxy_tag * Proxy_Plug;
 
 struct Plug_proxy_tag {
-    struct plug_function_table *fn;
+    const struct plug_function_table *fn;
     /* the above variable absolutely *must* be the first in this structure */
 
     Proxy_Socket proxy_socket;
@@ -114,6 +95,7 @@ extern void proxy_activate (Proxy_Socket);
 
 extern int proxy_http_negotiate (Proxy_Socket, int);
 extern int proxy_telnet_negotiate (Proxy_Socket, int);
-extern int proxy_socks_negotiate (Proxy_Socket, int);
+extern int proxy_socks4_negotiate (Proxy_Socket, int);
+extern int proxy_socks5_negotiate (Proxy_Socket, int);
 
 #endif