1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-07-01 03:22:48 -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

@ -43,7 +43,7 @@ typedef struct HandleSocket {
Plug *plug;
const SocketVtable *sockvt;
Socket sock;
} HandleSocket;
static int handle_gotdata(struct handle *h, void *data, int len)
@ -107,7 +107,7 @@ static void handle_sentdata(struct handle *h, int new_backlog)
static Plug *sk_handle_plug(Socket *s, Plug *p)
{
HandleSocket *hs = FROMFIELD(s, HandleSocket, sockvt);
HandleSocket *hs = FROMFIELD(s, HandleSocket, sock);
Plug *ret = hs->plug;
if (p)
hs->plug = p;
@ -116,7 +116,7 @@ static Plug *sk_handle_plug(Socket *s, Plug *p)
static void sk_handle_close(Socket *s)
{
HandleSocket *hs = FROMFIELD(s, HandleSocket, sockvt);
HandleSocket *hs = FROMFIELD(s, HandleSocket, sock);
if (hs->defer_close) {
hs->deferred_close = TRUE;
@ -136,7 +136,7 @@ static void sk_handle_close(Socket *s)
static int sk_handle_write(Socket *s, const void *data, int len)
{
HandleSocket *hs = FROMFIELD(s, HandleSocket, sockvt);
HandleSocket *hs = FROMFIELD(s, HandleSocket, sock);
return handle_write(hs->send_h, data, len);
}
@ -152,14 +152,14 @@ static int sk_handle_write_oob(Socket *s, const void *data, int len)
static void sk_handle_write_eof(Socket *s)
{
HandleSocket *hs = FROMFIELD(s, HandleSocket, sockvt);
HandleSocket *hs = FROMFIELD(s, HandleSocket, sock);
handle_write_eof(hs->send_h);
}
static void sk_handle_flush(Socket *s)
{
/* HandleSocket *hs = FROMFIELD(s, HandleSocket, sockvt); */
/* HandleSocket *hs = FROMFIELD(s, HandleSocket, sock); */
/* do nothing */
}
@ -191,7 +191,7 @@ static void handle_socket_unfreeze(void *hsv)
bufchain_consume(&hs->inputdata, len);
hs->defer_close = FALSE;
if (hs->deferred_close) {
sk_handle_close(&hs->sockvt);
sk_handle_close(&hs->sock);
return;
}
@ -212,7 +212,7 @@ static void handle_socket_unfreeze(void *hsv)
static void sk_handle_set_frozen(Socket *s, int is_frozen)
{
HandleSocket *hs = FROMFIELD(s, HandleSocket, sockvt);
HandleSocket *hs = FROMFIELD(s, HandleSocket, sock);
if (is_frozen) {
switch (hs->frozen) {
@ -267,13 +267,13 @@ static void sk_handle_set_frozen(Socket *s, int is_frozen)
static const char *sk_handle_socket_error(Socket *s)
{
HandleSocket *hs = FROMFIELD(s, HandleSocket, sockvt);
HandleSocket *hs = FROMFIELD(s, HandleSocket, sock);
return hs->error;
}
static char *sk_handle_peer_info(Socket *s)
{
HandleSocket *hs = FROMFIELD(s, HandleSocket, sockvt);
HandleSocket *hs = FROMFIELD(s, HandleSocket, sock);
ULONG pid;
static HMODULE kernel32_module;
DECL_WINDOWS_FUNCTION(static, BOOL, GetNamedPipeClientProcessId,
@ -325,7 +325,7 @@ Socket *make_handle_socket(HANDLE send_H, HANDLE recv_H, HANDLE stderr_H,
int flags = (overlapped ? HANDLE_FLAG_OVERLAPPED : 0);
hs = snew(HandleSocket);
hs->sockvt = &HandleSocket_sockvt;
hs->sock.vt = &HandleSocket_sockvt;
hs->plug = plug;
hs->error = NULL;
hs->frozen = UNFROZEN;
@ -343,5 +343,5 @@ Socket *make_handle_socket(HANDLE send_H, HANDLE recv_H, HANDLE stderr_H,
hs->defer_close = hs->deferred_close = FALSE;
return &hs->sockvt;
return &hs->sock;
}

View File

@ -76,7 +76,7 @@ struct NetSocket {
*/
NetSocket *parent, *child;
const SocketVtable *sockvt;
Socket sock;
};
struct SockAddr {
@ -910,7 +910,7 @@ SockAddr *sk_addr_dup(SockAddr *addr)
static Plug *sk_net_plug(Socket *sock, Plug *p)
{
NetSocket *s = FROMFIELD(sock, NetSocket, sockvt);
NetSocket *s = FROMFIELD(sock, NetSocket, sock);
Plug *ret = s->plug;
if (p)
s->plug = p;
@ -957,7 +957,7 @@ static Socket *sk_net_accept(accept_ctx_t ctx, Plug *plug)
* Create NetSocket structure.
*/
ret = snew(NetSocket);
ret->sockvt = &NetSocket_sockvt;
ret->sock.vt = &NetSocket_sockvt;
ret->error = NULL;
ret->plug = plug;
bufchain_init(&ret->output_data);
@ -976,7 +976,7 @@ static Socket *sk_net_accept(accept_ctx_t ctx, Plug *plug)
if (ret->s == INVALID_SOCKET) {
err = p_WSAGetLastError();
ret->error = winsock_error_string(err);
return &ret->sockvt;
return &ret->sock;
}
ret->oobinline = 0;
@ -986,12 +986,12 @@ static Socket *sk_net_accept(accept_ctx_t ctx, Plug *plug)
errstr = do_select(ret->s, 1);
if (errstr) {
ret->error = errstr;
return &ret->sockvt;
return &ret->sock;
}
add234(sktree, ret);
return &ret->sockvt;
return &ret->sock;
}
static DWORD try_connect(NetSocket *sock)
@ -1202,7 +1202,7 @@ Socket *sk_new(SockAddr *addr, int port, int privport, int oobinline,
* Create NetSocket structure.
*/
ret = snew(NetSocket);
ret->sockvt = &NetSocket_sockvt;
ret->sock.vt = &NetSocket_sockvt;
ret->error = NULL;
ret->plug = plug;
bufchain_init(&ret->output_data);
@ -1229,7 +1229,7 @@ Socket *sk_new(SockAddr *addr, int port, int privport, int oobinline,
err = try_connect(ret);
} while (err && sk_nextaddr(ret->addr, &ret->step));
return &ret->sockvt;
return &ret->sock;
}
Socket *sk_newlistener(const char *srcaddr, int port, Plug *plug,
@ -1253,7 +1253,7 @@ Socket *sk_newlistener(const char *srcaddr, int port, Plug *plug,
* Create NetSocket structure.
*/
ret = snew(NetSocket);
ret->sockvt = &NetSocket_sockvt;
ret->sock.vt = &NetSocket_sockvt;
ret->error = NULL;
ret->plug = plug;
bufchain_init(&ret->output_data);
@ -1295,7 +1295,7 @@ Socket *sk_newlistener(const char *srcaddr, int port, Plug *plug,
if (s == INVALID_SOCKET) {
err = p_WSAGetLastError();
ret->error = winsock_error_string(err);
return &ret->sockvt;
return &ret->sock;
}
SetHandleInformation((HANDLE)s, HANDLE_FLAG_INHERIT, 0);
@ -1381,14 +1381,14 @@ Socket *sk_newlistener(const char *srcaddr, int port, Plug *plug,
if (err) {
p_closesocket(s);
ret->error = winsock_error_string(err);
return &ret->sockvt;
return &ret->sock;
}
if (p_listen(s, SOMAXCONN) == SOCKET_ERROR) {
p_closesocket(s);
ret->error = winsock_error_string(p_WSAGetLastError());
return &ret->sockvt;
return &ret->sock;
}
/* Set up a select mechanism. This could be an AsyncSelect on a
@ -1397,7 +1397,7 @@ Socket *sk_newlistener(const char *srcaddr, int port, Plug *plug,
if (errstr) {
p_closesocket(s);
ret->error = errstr;
return &ret->sockvt;
return &ret->sock;
}
add234(sktree, ret);
@ -1412,7 +1412,7 @@ Socket *sk_newlistener(const char *srcaddr, int port, Plug *plug,
local_host_only, ADDRTYPE_IPV6);
if (other) {
NetSocket *ns = FROMFIELD(other, NetSocket, sockvt);
NetSocket *ns = FROMFIELD(other, NetSocket, sock);
if (!ns->error) {
ns->parent = ret;
ret->child = ns;
@ -1423,16 +1423,16 @@ Socket *sk_newlistener(const char *srcaddr, int port, Plug *plug,
}
#endif
return &ret->sockvt;
return &ret->sock;
}
static void sk_net_close(Socket *sock)
{
extern char *do_select(SOCKET skt, int startup);
NetSocket *s = FROMFIELD(sock, NetSocket, sockvt);
NetSocket *s = FROMFIELD(sock, NetSocket, sock);
if (s->child)
sk_net_close(&s->child->sockvt);
sk_net_close(&s->child->sock);
del234(sktree, s);
do_select(s->s, 0);
@ -1540,7 +1540,7 @@ void try_send(NetSocket *s)
static int sk_net_write(Socket *sock, const void *buf, int len)
{
NetSocket *s = FROMFIELD(sock, NetSocket, sockvt);
NetSocket *s = FROMFIELD(sock, NetSocket, sock);
assert(s->outgoingeof == EOF_NO);
@ -1560,7 +1560,7 @@ static int sk_net_write(Socket *sock, const void *buf, int len)
static int sk_net_write_oob(Socket *sock, const void *buf, int len)
{
NetSocket *s = FROMFIELD(sock, NetSocket, sockvt);
NetSocket *s = FROMFIELD(sock, NetSocket, sock);
assert(s->outgoingeof == EOF_NO);
@ -1583,7 +1583,7 @@ static int sk_net_write_oob(Socket *sock, const void *buf, int len)
static void sk_net_write_eof(Socket *sock)
{
NetSocket *s = FROMFIELD(sock, NetSocket, sockvt);
NetSocket *s = FROMFIELD(sock, NetSocket, sock);
assert(s->outgoingeof == EOF_NO);
@ -1786,13 +1786,13 @@ const char *sk_addr_error(SockAddr *addr)
}
static const char *sk_net_socket_error(Socket *sock)
{
NetSocket *s = FROMFIELD(sock, NetSocket, sockvt);
NetSocket *s = FROMFIELD(sock, NetSocket, sock);
return s->error;
}
static char *sk_net_peer_info(Socket *sock)
{
NetSocket *s = FROMFIELD(sock, NetSocket, sockvt);
NetSocket *s = FROMFIELD(sock, NetSocket, sock);
#ifdef NO_IPV6
struct sockaddr_in addr;
#else
@ -1824,7 +1824,7 @@ static char *sk_net_peer_info(Socket *sock)
static void sk_net_set_frozen(Socket *sock, int is_frozen)
{
NetSocket *s = FROMFIELD(sock, NetSocket, sockvt);
NetSocket *s = FROMFIELD(sock, NetSocket, sock);
if (s->frozen == is_frozen)
return;
s->frozen = is_frozen;

View File

@ -34,12 +34,12 @@ typedef struct NamedPipeServerSocket {
Plug *plug;
char *error;
const SocketVtable *sockvt;
Socket sock;
} NamedPipeServerSocket;
static Plug *sk_namedpipeserver_plug(Socket *s, Plug *p)
{
NamedPipeServerSocket *ps = FROMFIELD(s, NamedPipeServerSocket, sockvt);
NamedPipeServerSocket *ps = FROMFIELD(s, NamedPipeServerSocket, sock);
Plug *ret = ps->plug;
if (p)
ps->plug = p;
@ -48,7 +48,7 @@ static Plug *sk_namedpipeserver_plug(Socket *s, Plug *p)
static void sk_namedpipeserver_close(Socket *s)
{
NamedPipeServerSocket *ps = FROMFIELD(s, NamedPipeServerSocket, sockvt);
NamedPipeServerSocket *ps = FROMFIELD(s, NamedPipeServerSocket, sock);
if (ps->callback_handle)
handle_free(ps->callback_handle);
@ -65,7 +65,7 @@ static void sk_namedpipeserver_close(Socket *s)
static const char *sk_namedpipeserver_socket_error(Socket *s)
{
NamedPipeServerSocket *ps = FROMFIELD(s, NamedPipeServerSocket, sockvt);
NamedPipeServerSocket *ps = FROMFIELD(s, NamedPipeServerSocket, sock);
return ps->error;
}
@ -219,7 +219,7 @@ static const SocketVtable NamedPipeServerSocket_sockvt = {
Socket *new_named_pipe_listener(const char *pipename, Plug *plug)
{
NamedPipeServerSocket *ret = snew(NamedPipeServerSocket);
ret->sockvt = &NamedPipeServerSocket_sockvt;
ret->sock.vt = &NamedPipeServerSocket_sockvt;
ret->plug = plug;
ret->error = NULL;
ret->psd = NULL;
@ -249,7 +249,7 @@ Socket *new_named_pipe_listener(const char *pipename, Plug *plug)
named_pipe_accept_loop(ret, FALSE);
cleanup:
return &ret->sockvt;
return &ret->sock;
}
#endif /* !defined NO_SECURITY */