* 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
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;
/* accepting */
void *accepting_sock;
+ /* 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;
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