X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=proxy.h;h=2e2324c078343ae5d2229a79e5b08d20659b10d0;hb=510f49e405e71ba5c97875e7a019364e1ef5fac9;hp=6e6411413bfa323f6f163848feb5afc6ebfab8d0;hpb=d32e06c1fe68ad17269e3a21ded6a62865f38f42;p=PuTTY.git diff --git a/proxy.h b/proxy.h index 6e641141..2e2324c0 100644 --- a/proxy.h +++ b/proxy.h @@ -16,10 +16,10 @@ 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; + const char *error; Socket sub_socket; Plug plug; @@ -30,6 +30,7 @@ struct Socket_proxy_tag { bufchain pending_oob_output_data; int pending_flush; bufchain pending_input_data; + int pending_eof; #define PROXY_STATE_NEW -1 #define PROXY_STATE_ACTIVE 0 @@ -64,7 +65,7 @@ struct Socket_proxy_tag { */ /* closing */ - char *closing_error_msg; + const char *closing_error_msg; int closing_error_code; int closing_calling_back; @@ -77,14 +78,23 @@ struct Socket_proxy_tag { int sent_bufsize; /* accepting */ - void *accepting_sock; + accept_fn_t accepting_constructor; + accept_ctx_t accepting_ctx; + /* configuration, used to look up proxy settings */ + Conf *conf; + + /* CHAP transient data */ + int chap_num_attributes; + int chap_num_attributes_processed; + int chap_current_attribute; + int chap_current_datalen; }; 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; @@ -98,4 +108,18 @@ extern int proxy_telnet_negotiate (Proxy_Socket, int); extern int proxy_socks4_negotiate (Proxy_Socket, int); extern int proxy_socks5_negotiate (Proxy_Socket, int); +/* + * This may be reused by local-command proxies on individual + * platforms. + */ +char *format_telnet_command(SockAddr addr, int port, Conf *conf); + +/* + * These are implemented in cproxy.c or nocproxy.c, depending on + * whether encrypted proxy authentication is available. + */ +extern void proxy_socks5_offerencryptedauth(char *command, int *len); +extern int proxy_socks5_handlechap (Proxy_Socket p); +extern int proxy_socks5_selectchap(Proxy_Socket p); + #endif