mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-07-13 00:57:33 -05:00
Make Socket and Plug into structs.
I think that means that _every_ one of my traitoids is now a struct containing a vtable pointer as one of its fields (albeit sometimes the only field), and never just a bare pointer.
This commit is contained in:
42
proxy.c
42
proxy.c
@ -73,14 +73,14 @@ void proxy_activate (ProxySocket *p)
|
||||
* unfreezing the actual underlying socket.
|
||||
*/
|
||||
if (!p->freeze)
|
||||
sk_set_frozen(&p->sockvt, 0);
|
||||
sk_set_frozen(&p->sock, 0);
|
||||
}
|
||||
|
||||
/* basic proxy socket functions */
|
||||
|
||||
static Plug *sk_proxy_plug (Socket *s, Plug *p)
|
||||
{
|
||||
ProxySocket *ps = FROMFIELD(s, ProxySocket, sockvt);
|
||||
ProxySocket *ps = FROMFIELD(s, ProxySocket, sock);
|
||||
Plug *ret = ps->plug;
|
||||
if (p)
|
||||
ps->plug = p;
|
||||
@ -89,7 +89,7 @@ static Plug *sk_proxy_plug (Socket *s, Plug *p)
|
||||
|
||||
static void sk_proxy_close (Socket *s)
|
||||
{
|
||||
ProxySocket *ps = FROMFIELD(s, ProxySocket, sockvt);
|
||||
ProxySocket *ps = FROMFIELD(s, ProxySocket, sock);
|
||||
|
||||
sk_close(ps->sub_socket);
|
||||
sk_addr_free(ps->remote_addr);
|
||||
@ -98,7 +98,7 @@ static void sk_proxy_close (Socket *s)
|
||||
|
||||
static int sk_proxy_write (Socket *s, const void *data, int len)
|
||||
{
|
||||
ProxySocket *ps = FROMFIELD(s, ProxySocket, sockvt);
|
||||
ProxySocket *ps = FROMFIELD(s, ProxySocket, sock);
|
||||
|
||||
if (ps->state != PROXY_STATE_ACTIVE) {
|
||||
bufchain_add(&ps->pending_output_data, data, len);
|
||||
@ -109,7 +109,7 @@ static int sk_proxy_write (Socket *s, const void *data, int len)
|
||||
|
||||
static int sk_proxy_write_oob (Socket *s, const void *data, int len)
|
||||
{
|
||||
ProxySocket *ps = FROMFIELD(s, ProxySocket, sockvt);
|
||||
ProxySocket *ps = FROMFIELD(s, ProxySocket, sock);
|
||||
|
||||
if (ps->state != PROXY_STATE_ACTIVE) {
|
||||
bufchain_clear(&ps->pending_output_data);
|
||||
@ -122,7 +122,7 @@ static int sk_proxy_write_oob (Socket *s, const void *data, int len)
|
||||
|
||||
static void sk_proxy_write_eof (Socket *s)
|
||||
{
|
||||
ProxySocket *ps = FROMFIELD(s, ProxySocket, sockvt);
|
||||
ProxySocket *ps = FROMFIELD(s, ProxySocket, sock);
|
||||
|
||||
if (ps->state != PROXY_STATE_ACTIVE) {
|
||||
ps->pending_eof = 1;
|
||||
@ -133,7 +133,7 @@ static void sk_proxy_write_eof (Socket *s)
|
||||
|
||||
static void sk_proxy_flush (Socket *s)
|
||||
{
|
||||
ProxySocket *ps = FROMFIELD(s, ProxySocket, sockvt);
|
||||
ProxySocket *ps = FROMFIELD(s, ProxySocket, sock);
|
||||
|
||||
if (ps->state != PROXY_STATE_ACTIVE) {
|
||||
ps->pending_flush = 1;
|
||||
@ -144,7 +144,7 @@ static void sk_proxy_flush (Socket *s)
|
||||
|
||||
static void sk_proxy_set_frozen (Socket *s, int is_frozen)
|
||||
{
|
||||
ProxySocket *ps = FROMFIELD(s, ProxySocket, sockvt);
|
||||
ProxySocket *ps = FROMFIELD(s, ProxySocket, sock);
|
||||
|
||||
if (ps->state != PROXY_STATE_ACTIVE) {
|
||||
ps->freeze = is_frozen;
|
||||
@ -183,7 +183,7 @@ static void sk_proxy_set_frozen (Socket *s, int is_frozen)
|
||||
|
||||
static const char * sk_proxy_socket_error (Socket *s)
|
||||
{
|
||||
ProxySocket *ps = FROMFIELD(s, ProxySocket, sockvt);
|
||||
ProxySocket *ps = FROMFIELD(s, ProxySocket, sock);
|
||||
if (ps->error != NULL || ps->sub_socket == NULL) {
|
||||
return ps->error;
|
||||
}
|
||||
@ -195,7 +195,7 @@ static const char * sk_proxy_socket_error (Socket *s)
|
||||
static void plug_proxy_log(Plug *plug, int type, SockAddr *addr, int port,
|
||||
const char *error_msg, int error_code)
|
||||
{
|
||||
ProxySocket *ps = FROMFIELD(plug, ProxySocket, plugvt);
|
||||
ProxySocket *ps = FROMFIELD(plug, ProxySocket, plugimpl);
|
||||
|
||||
plug_log(ps->plug, type, addr, port, error_msg, error_code);
|
||||
}
|
||||
@ -203,7 +203,7 @@ static void plug_proxy_log(Plug *plug, int type, SockAddr *addr, int port,
|
||||
static void plug_proxy_closing (Plug *p, const char *error_msg,
|
||||
int error_code, int calling_back)
|
||||
{
|
||||
ProxySocket *ps = FROMFIELD(p, ProxySocket, plugvt);
|
||||
ProxySocket *ps = FROMFIELD(p, ProxySocket, plugimpl);
|
||||
|
||||
if (ps->state != PROXY_STATE_ACTIVE) {
|
||||
ps->closing_error_msg = error_msg;
|
||||
@ -217,7 +217,7 @@ static void plug_proxy_closing (Plug *p, const char *error_msg,
|
||||
|
||||
static void plug_proxy_receive (Plug *p, int urgent, char *data, int len)
|
||||
{
|
||||
ProxySocket *ps = FROMFIELD(p, ProxySocket, plugvt);
|
||||
ProxySocket *ps = FROMFIELD(p, ProxySocket, plugimpl);
|
||||
|
||||
if (ps->state != PROXY_STATE_ACTIVE) {
|
||||
/* we will lose the urgentness of this data, but since most,
|
||||
@ -236,7 +236,7 @@ static void plug_proxy_receive (Plug *p, int urgent, char *data, int len)
|
||||
|
||||
static void plug_proxy_sent (Plug *p, int bufsize)
|
||||
{
|
||||
ProxySocket *ps = FROMFIELD(p, ProxySocket, plugvt);
|
||||
ProxySocket *ps = FROMFIELD(p, ProxySocket, plugimpl);
|
||||
|
||||
if (ps->state != PROXY_STATE_ACTIVE) {
|
||||
ps->sent_bufsize = bufsize;
|
||||
@ -249,7 +249,7 @@ static void plug_proxy_sent (Plug *p, int bufsize)
|
||||
static int plug_proxy_accepting(Plug *p,
|
||||
accept_fn_t constructor, accept_ctx_t ctx)
|
||||
{
|
||||
ProxySocket *ps = FROMFIELD(p, ProxySocket, plugvt);
|
||||
ProxySocket *ps = FROMFIELD(p, ProxySocket, plugimpl);
|
||||
|
||||
if (ps->state != PROXY_STATE_ACTIVE) {
|
||||
ps->accepting_constructor = constructor;
|
||||
@ -438,8 +438,8 @@ Socket *new_connection(SockAddr *addr, const char *hostname,
|
||||
return sret;
|
||||
|
||||
ret = snew(ProxySocket);
|
||||
ret->sockvt = &ProxySocket_sockvt;
|
||||
ret->plugvt = &ProxySocket_plugvt;
|
||||
ret->sock.vt = &ProxySocket_sockvt;
|
||||
ret->plugimpl.vt = &ProxySocket_plugvt;
|
||||
ret->conf = conf_copy(conf);
|
||||
ret->plug = plug;
|
||||
ret->remote_addr = addr; /* will need to be freed on close */
|
||||
@ -473,7 +473,7 @@ Socket *new_connection(SockAddr *addr, const char *hostname,
|
||||
proxy_type = "Telnet";
|
||||
} else {
|
||||
ret->error = "Proxy error: Unknown proxy method";
|
||||
return &ret->sockvt;
|
||||
return &ret->sock;
|
||||
}
|
||||
|
||||
{
|
||||
@ -501,7 +501,7 @@ Socket *new_connection(SockAddr *addr, const char *hostname,
|
||||
if (sk_addr_error(proxy_addr) != NULL) {
|
||||
ret->error = "Proxy error: Unable to resolve proxy host name";
|
||||
sk_addr_free(proxy_addr);
|
||||
return &ret->sockvt;
|
||||
return &ret->sock;
|
||||
}
|
||||
sfree(proxy_canonical_name);
|
||||
|
||||
@ -521,15 +521,15 @@ Socket *new_connection(SockAddr *addr, const char *hostname,
|
||||
ret->sub_socket = sk_new(proxy_addr,
|
||||
conf_get_int(conf, CONF_proxy_port),
|
||||
privport, oobinline,
|
||||
nodelay, keepalive, &ret->plugvt);
|
||||
nodelay, keepalive, &ret->plugimpl);
|
||||
if (sk_socket_error(ret->sub_socket) != NULL)
|
||||
return &ret->sockvt;
|
||||
return &ret->sock;
|
||||
|
||||
/* start the proxy negotiation process... */
|
||||
sk_set_frozen(ret->sub_socket, 0);
|
||||
ret->negotiate(ret, PROXY_CHANGE_NEW);
|
||||
|
||||
return &ret->sockvt;
|
||||
return &ret->sock;
|
||||
}
|
||||
|
||||
/* no proxy, so just return the direct socket */
|
||||
|
Reference in New Issue
Block a user