1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-07-06 22:12:47 -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:
Simon Tatham
2018-10-05 07:24:16 +01:00
parent b798230844
commit 884a7df94b
20 changed files with 222 additions and 209 deletions

View File

@ -29,7 +29,7 @@ typedef struct LocalProxySocket {
int pending_error;
const SocketVtable *sockvt;
Socket sock;
} LocalProxySocket;
static void localproxy_select_result(int fd, int event);
@ -105,7 +105,7 @@ static int localproxy_errfd_find(void *av, void *bv)
static Plug *sk_localproxy_plug (Socket *s, Plug *p)
{
LocalProxySocket *ps = FROMFIELD(s, LocalProxySocket, sockvt);
LocalProxySocket *ps = FROMFIELD(s, LocalProxySocket, sock);
Plug *ret = ps->plug;
if (p)
ps->plug = p;
@ -114,7 +114,7 @@ static Plug *sk_localproxy_plug (Socket *s, Plug *p)
static void sk_localproxy_close (Socket *s)
{
LocalProxySocket *ps = FROMFIELD(s, LocalProxySocket, sockvt);
LocalProxySocket *ps = FROMFIELD(s, LocalProxySocket, sock);
if (ps->to_cmd >= 0) {
del234(localproxy_by_tofd, ps);
@ -202,7 +202,7 @@ static int localproxy_try_send(LocalProxySocket *ps)
static int sk_localproxy_write (Socket *s, const void *data, int len)
{
LocalProxySocket *ps = FROMFIELD(s, LocalProxySocket, sockvt);
LocalProxySocket *ps = FROMFIELD(s, LocalProxySocket, sock);
assert(ps->outgoingeof == EOF_NO);
@ -224,7 +224,7 @@ static int sk_localproxy_write_oob (Socket *s, const void *data, int len)
static void sk_localproxy_write_eof (Socket *s)
{
LocalProxySocket *ps = FROMFIELD(s, LocalProxySocket, sockvt);
LocalProxySocket *ps = FROMFIELD(s, LocalProxySocket, sock);
assert(ps->outgoingeof == EOF_NO);
ps->outgoingeof = EOF_PENDING;
@ -234,13 +234,13 @@ static void sk_localproxy_write_eof (Socket *s)
static void sk_localproxy_flush (Socket *s)
{
/* LocalProxySocket *ps = FROMFIELD(s, LocalProxySocket, sockvt); */
/* LocalProxySocket *ps = FROMFIELD(s, LocalProxySocket, sock); */
/* do nothing */
}
static void sk_localproxy_set_frozen (Socket *s, int is_frozen)
{
LocalProxySocket *ps = FROMFIELD(s, LocalProxySocket, sockvt);
LocalProxySocket *ps = FROMFIELD(s, LocalProxySocket, sock);
if (ps->from_cmd < 0)
return;
@ -253,7 +253,7 @@ static void sk_localproxy_set_frozen (Socket *s, int is_frozen)
static const char * sk_localproxy_socket_error (Socket *s)
{
LocalProxySocket *ps = FROMFIELD(s, LocalProxySocket, sockvt);
LocalProxySocket *ps = FROMFIELD(s, LocalProxySocket, sock);
return ps->error;
}
@ -330,7 +330,7 @@ Socket *platform_new_connection(SockAddr *addr, const char *hostname,
return NULL;
ret = snew(LocalProxySocket);
ret->sockvt = &LocalProxySocket_sockvt;
ret->sock.vt = &LocalProxySocket_sockvt;
ret->plug = plug;
ret->error = NULL;
ret->outgoingeof = EOF_NO;
@ -358,7 +358,7 @@ Socket *platform_new_connection(SockAddr *addr, const char *hostname,
pipe(cmd_err_pipe) < 0) {
ret->error = dupprintf("pipe: %s", strerror(errno));
sfree(cmd);
return &ret->sockvt;
return &ret->sock;
}
cloexec(to_cmd_pipe[1]);
cloexec(from_cmd_pipe[0]);
@ -369,7 +369,7 @@ Socket *platform_new_connection(SockAddr *addr, const char *hostname,
if (pid < 0) {
ret->error = dupprintf("fork: %s", strerror(errno));
sfree(cmd);
return &ret->sockvt;
return &ret->sock;
} else if (pid == 0) {
close(0);
close(1);
@ -399,13 +399,13 @@ Socket *platform_new_connection(SockAddr *addr, const char *hostname,
if (ret->to_cmd == -1) {
ret->error = dupprintf("/dev/null: %s", strerror(errno));
sfree(cmd);
return &ret->sockvt;
return &ret->sock;
}
ret->from_cmd = open(cmd, O_RDONLY);
if (ret->from_cmd == -1) {
ret->error = dupprintf("%s: %s", cmd, strerror(errno));
sfree(cmd);
return &ret->sockvt;
return &ret->sock;
}
sfree(cmd);
ret->cmd_err = -1;
@ -430,5 +430,5 @@ Socket *platform_new_connection(SockAddr *addr, const char *hostname,
/* We are responsible for this and don't need it any more */
sk_addr_free(addr);
return &ret->sockvt;
return &ret->sock;
}