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;
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
int sent_bufsize;
/* accepting */
- void *accepting_sock;
+ accept_fn_t accepting_constructor;
+ accept_ctx_t accepting_ctx;
/* configuration, used to look up proxy settings */
- Config cfg;
+ 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;
* This may be reused by local-command proxies on individual
* platforms.
*/
-char *format_telnet_command(SockAddr addr, int port, const Config *cfg);
+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