X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=proxy.h;h=cc11061efa59fc6bb14be0a52cb3786a6d88255e;hb=277ca3a397955ac4bcb112cc50998b27ebcbcdc3;hp=43d92cb0aa9c7f0a8d881d019315670eddc93f33;hpb=eabd704d1ecf72868794284d0f24e8d69ec9ce76;p=PuTTY.git diff --git a/proxy.h b/proxy.h index 43d92cb0..cc11061e 100644 --- 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,14 @@ 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; - + /* configuration, used to look up proxy settings */ + Config cfg; }; 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 +97,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