1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-03-31 02:32:49 -05:00

Pass the calling Socket to plug_log.

This enables plug_log to run query methods on the socket in order to
find out useful information to log. I don't expect it's sensible to do
anything else with it.
This commit is contained in:
Simon Tatham 2024-06-26 08:29:39 +01:00
parent 23b15dbc77
commit c1d9da67a2
27 changed files with 94 additions and 80 deletions

View File

@ -91,7 +91,7 @@ struct PlugVtable {
* all Plugs must implement this method, even if only to ignore * all Plugs must implement this method, even if only to ignore
* the logged events. * the logged events.
*/ */
void (*log)(Plug *p, PlugLogType type, SockAddr *addr, int port, void (*log)(Plug *p, Socket *s, PlugLogType type, SockAddr *addr, int port,
const char *error_msg, int error_code); const char *error_msg, int error_code);
/* /*
@ -245,8 +245,9 @@ static inline void sk_write_eof(Socket *s)
{ s->vt->write_eof(s); } { s->vt->write_eof(s); }
static inline void plug_log( static inline void plug_log(
Plug *p, int type, SockAddr *addr, int port, const char *msg, int code) Plug *p, Socket *s, int type, SockAddr *addr, int port,
{ p->vt->log(p, type, addr, port, msg, code); } const char *msg, int code)
{ p->vt->log(p, s, type, addr, port, msg, code); }
static inline void plug_closing(Plug *p, PlugCloseType type, const char *msg) static inline void plug_closing(Plug *p, PlugCloseType type, const char *msg)
{ p->vt->closing(p, type, msg); } { p->vt->closing(p, type, msg); }
static inline void plug_closing_normal(Plug *p) static inline void plug_closing_normal(Plug *p)
@ -379,7 +380,7 @@ extern Plug *const nullplug;
* In particular, nullplug_log is useful to Plugs that don't need to * In particular, nullplug_log is useful to Plugs that don't need to
* worry about logging. * worry about logging.
*/ */
void nullplug_log(Plug *plug, PlugLogType type, SockAddr *addr, void nullplug_log(Plug *plug, Socket *s, PlugLogType type, SockAddr *addr,
int port, const char *err_msg, int err_code); int port, const char *err_msg, int err_code);
void nullplug_closing(Plug *plug, PlugCloseType type, const char *error_msg); void nullplug_closing(Plug *plug, PlugCloseType type, const char *error_msg);
void nullplug_receive(Plug *plug, int urgent, const char *data, size_t len); void nullplug_receive(Plug *plug, int urgent, const char *data, size_t len);
@ -391,7 +392,7 @@ void nullplug_sent(Plug *plug, size_t bufsize);
* they use types defined here. * they use types defined here.
*/ */
void backend_socket_log(Seat *seat, LogContext *logctx, void backend_socket_log(Seat *seat, LogContext *logctx, Socket *sock,
PlugLogType type, SockAddr *addr, int port, PlugLogType type, SockAddr *addr, int port,
const char *error_msg, int error_code, Conf *conf, const char *error_msg, int error_code, Conf *conf,
bool session_started); bool session_started);
@ -403,8 +404,8 @@ typedef struct ProxyStderrBuf {
} ProxyStderrBuf; } ProxyStderrBuf;
void psb_init(ProxyStderrBuf *psb); void psb_init(ProxyStderrBuf *psb);
void psb_set_prefix(ProxyStderrBuf *psb, const char *prefix); void psb_set_prefix(ProxyStderrBuf *psb, const char *prefix);
void log_proxy_stderr( void log_proxy_stderr(Plug *plug, Socket *sock, ProxyStderrBuf *psb,
Plug *plug, ProxyStderrBuf *psb, const void *vdata, size_t len); const void *vdata, size_t len);
/* ---------------------------------------------------------------------- /* ----------------------------------------------------------------------
* The DeferredSocketOpener trait. This is a thing that some Socket * The DeferredSocketOpener trait. This is a thing that some Socket

View File

@ -36,12 +36,13 @@ static void c_write(Raw *raw, const void *buf, size_t len)
sk_set_frozen(raw->s, backlog > RAW_MAX_BACKLOG); sk_set_frozen(raw->s, backlog > RAW_MAX_BACKLOG);
} }
static void raw_log(Plug *plug, PlugLogType type, SockAddr *addr, int port, static void raw_log(Plug *plug, Socket *s, PlugLogType type, SockAddr *addr,
const char *error_msg, int error_code) int port, const char *error_msg, int error_code)
{ {
Raw *raw = container_of(plug, Raw, plug); Raw *raw = container_of(plug, Raw, plug);
backend_socket_log(raw->seat, raw->logctx, type, addr, port, error_msg, backend_socket_log(raw->seat, raw->logctx, s, type, addr, port,
error_code, raw->conf, raw->socket_connected); error_msg, error_code, raw->conf,
raw->socket_connected);
if (type == PLUGLOG_CONNECT_SUCCESS) { if (type == PLUGLOG_CONNECT_SUCCESS) {
raw->socket_connected = true; raw->socket_connected = true;
if (raw->ldisc) if (raw->ldisc)

View File

@ -45,11 +45,11 @@ static void c_write(Rlogin *rlogin, const void *buf, size_t len)
sk_set_frozen(rlogin->s, backlog > RLOGIN_MAX_BACKLOG); sk_set_frozen(rlogin->s, backlog > RLOGIN_MAX_BACKLOG);
} }
static void rlogin_log(Plug *plug, PlugLogType type, SockAddr *addr, int port, static void rlogin_log(Plug *plug, Socket *s, PlugLogType type, SockAddr *addr,
const char *error_msg, int error_code) int port, const char *error_msg, int error_code)
{ {
Rlogin *rlogin = container_of(plug, Rlogin, plug); Rlogin *rlogin = container_of(plug, Rlogin, plug);
backend_socket_log(rlogin->seat, rlogin->logctx, type, addr, port, backend_socket_log(rlogin->seat, rlogin->logctx, s, type, addr, port,
error_msg, error_code, error_msg, error_code,
rlogin->conf, rlogin->socket_connected); rlogin->conf, rlogin->socket_connected);
if (type == PLUGLOG_CONNECT_SUCCESS) { if (type == PLUGLOG_CONNECT_SUCCESS) {

View File

@ -559,11 +559,11 @@ static void do_supdup_read(Supdup *supdup, const char *buf, size_t len)
strbuf_free(outbuf); strbuf_free(outbuf);
} }
static void supdup_log(Plug *plug, PlugLogType type, SockAddr *addr, int port, static void supdup_log(Plug *plug, Socket *s, PlugLogType type, SockAddr *addr,
const char *error_msg, int error_code) int port, const char *error_msg, int error_code)
{ {
Supdup *supdup = container_of(plug, Supdup, plug); Supdup *supdup = container_of(plug, Supdup, plug);
backend_socket_log(supdup->seat, supdup->logctx, type, addr, port, backend_socket_log(supdup->seat, supdup->logctx, s, type, addr, port,
error_msg, error_code, error_msg, error_code,
supdup->conf, supdup->socket_connected); supdup->conf, supdup->socket_connected);
if (type == PLUGLOG_CONNECT_SUCCESS) { if (type == PLUGLOG_CONNECT_SUCCESS) {

View File

@ -604,11 +604,11 @@ static void do_telnet_read(Telnet *telnet, const char *buf, size_t len)
strbuf_free(outbuf); strbuf_free(outbuf);
} }
static void telnet_log(Plug *plug, PlugLogType type, SockAddr *addr, int port, static void telnet_log(Plug *plug, Socket *s, PlugLogType type, SockAddr *addr,
const char *error_msg, int error_code) int port, const char *error_msg, int error_code)
{ {
Telnet *telnet = container_of(plug, Telnet, plug); Telnet *telnet = container_of(plug, Telnet, plug);
backend_socket_log(telnet->seat, telnet->logctx, type, addr, port, backend_socket_log(telnet->seat, telnet->logctx, s, type, addr, port,
error_msg, error_code, telnet->conf, error_msg, error_code, telnet->conf,
telnet->socket_connected); telnet->socket_connected);
if (type == PLUGLOG_CONNECT_SUCCESS) { if (type == PLUGLOG_CONNECT_SUCCESS) {

View File

@ -209,7 +209,8 @@ static void local_proxy_opener_coroutine(void *vctx)
put_datapl(logmsg, PTRLEN_LITERAL("Starting local proxy command: ")); put_datapl(logmsg, PTRLEN_LITERAL("Starting local proxy command: "));
put_c_string_literal(logmsg, ptrlen_from_asciz(censored_cmd)); put_c_string_literal(logmsg, ptrlen_from_asciz(censored_cmd));
plug_log(lp->plug, PLUGLOG_PROXY_MSG, NULL, 0, logmsg->s, 0); plug_log(lp->plug, lp->socket, PLUGLOG_PROXY_MSG, NULL, 0,
logmsg->s, 0);
strbuf_free(logmsg); strbuf_free(logmsg);
sfree(censored_cmd); sfree(censored_cmd);
} }

View File

@ -41,7 +41,7 @@ static void proxy_activate(ProxySocket *ps)
proxy_negotiator_cleanup(ps); proxy_negotiator_cleanup(ps);
plug_log(ps->plug, PLUGLOG_CONNECT_SUCCESS, NULL, 0, NULL, 0); plug_log(ps->plug, &ps->sock, PLUGLOG_CONNECT_SUCCESS, NULL, 0, NULL, 0);
/* we want to ignore new receive events until we have sent /* we want to ignore new receive events until we have sent
* all of our buffered receive data. * all of our buffered receive data.
@ -189,12 +189,13 @@ static const char *sk_proxy_socket_error (Socket *s)
/* basic proxy plug functions */ /* basic proxy plug functions */
static void plug_proxy_log(Plug *plug, PlugLogType type, SockAddr *addr, static void plug_proxy_log(Plug *plug, Socket *s, PlugLogType type,
int port, const char *error_msg, int error_code) SockAddr *addr, int port,
const char *error_msg, int error_code)
{ {
ProxySocket *ps = container_of(plug, ProxySocket, plugimpl); ProxySocket *ps = container_of(plug, ProxySocket, plugimpl);
plug_log(ps->plug, type, addr, port, error_msg, error_code); plug_log(ps->plug, &ps->sock, type, addr, port, error_msg, error_code);
} }
static void plug_proxy_closing(Plug *p, PlugCloseType type, static void plug_proxy_closing(Plug *p, PlugCloseType type,
@ -597,7 +598,7 @@ Socket *new_connection(SockAddr *addr, const char *hostname,
conf_get_str(conf, CONF_proxy_host), conf_get_str(conf, CONF_proxy_host),
conf_get_int(conf, CONF_proxy_port), conf_get_int(conf, CONF_proxy_port),
hostname, port); hostname, port);
plug_log(plug, PLUGLOG_PROXY_MSG, NULL, 0, logmsg, 0); plug_log(plug, &ps->sock, PLUGLOG_PROXY_MSG, NULL, 0, logmsg, 0);
sfree(logmsg); sfree(logmsg);
} }
@ -605,7 +606,7 @@ Socket *new_connection(SockAddr *addr, const char *hostname,
char *logmsg = dns_log_msg(conf_get_str(conf, CONF_proxy_host), char *logmsg = dns_log_msg(conf_get_str(conf, CONF_proxy_host),
conf_get_int(conf, CONF_addressfamily), conf_get_int(conf, CONF_addressfamily),
"proxy"); "proxy");
plug_log(plug, PLUGLOG_PROXY_MSG, NULL, 0, logmsg, 0); plug_log(plug, &ps->sock, PLUGLOG_PROXY_MSG, NULL, 0, logmsg, 0);
sfree(logmsg); sfree(logmsg);
} }
@ -626,7 +627,7 @@ Socket *new_connection(SockAddr *addr, const char *hostname,
logmsg = dupprintf("Connecting to %s proxy at %s port %d", logmsg = dupprintf("Connecting to %s proxy at %s port %d",
vt->type, addrbuf, vt->type, addrbuf,
conf_get_int(conf, CONF_proxy_port)); conf_get_int(conf, CONF_proxy_port));
plug_log(plug, PLUGLOG_PROXY_MSG, NULL, 0, logmsg, 0); plug_log(plug, &ps->sock, PLUGLOG_PROXY_MSG, NULL, 0, logmsg, 0);
sfree(logmsg); sfree(logmsg);
} }

View File

@ -142,8 +142,8 @@ static const SocketVtable SshProxy_sock_vt = {
static void sshproxy_eventlog(LogPolicy *lp, const char *event) static void sshproxy_eventlog(LogPolicy *lp, const char *event)
{ {
SshProxy *sp = container_of(lp, SshProxy, logpolicy); SshProxy *sp = container_of(lp, SshProxy, logpolicy);
log_proxy_stderr(sp->plug, &sp->psb, event, strlen(event)); log_proxy_stderr(sp->plug, &sp->sock, &sp->psb, event, strlen(event));
log_proxy_stderr(sp->plug, &sp->psb, "\n", 1); log_proxy_stderr(sp->plug, &sp->sock, &sp->psb, "\n", 1);
} }
static int sshproxy_askappend(LogPolicy *lp, Filename *filename, static int sshproxy_askappend(LogPolicy *lp, Filename *filename,
@ -248,7 +248,8 @@ static void sshproxy_notify_session_started(Seat *seat)
interactor_return_seat(sp->clientitr); interactor_return_seat(sp->clientitr);
sp->conn_established = true; sp->conn_established = true;
plug_log(sp->plug, PLUGLOG_CONNECT_SUCCESS, sp->addr, sp->port, NULL, 0); plug_log(sp->plug, &sp->sock, PLUGLOG_CONNECT_SUCCESS, sp->addr, sp->port,
NULL, 0);
} }
static size_t sshproxy_output(Seat *seat, SeatOutputType type, static size_t sshproxy_output(Seat *seat, SeatOutputType type,
@ -261,7 +262,7 @@ static size_t sshproxy_output(Seat *seat, SeatOutputType type,
try_send_ssh_to_socket(sp); try_send_ssh_to_socket(sp);
break; break;
case SEAT_OUTPUT_STDERR: case SEAT_OUTPUT_STDERR:
log_proxy_stderr(sp->plug, &sp->psb, data, len); log_proxy_stderr(sp->plug, &sp->sock, &sp->psb, data, len);
break; break;
} }
return bufchain_size(&sp->ssh_to_socket); return bufchain_size(&sp->ssh_to_socket);
@ -322,8 +323,8 @@ static void sshproxy_send_close(SshProxy *sp)
interactor_return_seat(sp->clientitr); interactor_return_seat(sp->clientitr);
if (!sp->conn_established) if (!sp->conn_established)
plug_log(sp->plug, PLUGLOG_CONNECT_FAILED, sp->addr, sp->port, plug_log(sp->plug, &sp->sock, PLUGLOG_CONNECT_FAILED, sp->addr,
sp->errmsg, 0); sp->port, sp->errmsg, 0);
if (sp->errmsg) if (sp->errmsg)
plug_closing_error(sp->plug, sp->errmsg); plug_closing_error(sp->plug, sp->errmsg);

View File

@ -339,7 +339,8 @@ static void proxy_telnet_process_queue(ProxyNegotiator *pn)
put_datapl(logmsg, PTRLEN_LITERAL("Sending Telnet proxy command: ")); put_datapl(logmsg, PTRLEN_LITERAL("Sending Telnet proxy command: "));
put_c_string_literal(logmsg, ptrlen_from_asciz(censored_cmd)); put_c_string_literal(logmsg, ptrlen_from_asciz(censored_cmd));
plug_log(pn->ps->plug, PLUGLOG_PROXY_MSG, NULL, 0, logmsg->s, 0); plug_log(pn->ps->plug, &pn->ps->sock, PLUGLOG_PROXY_MSG, NULL, 0,
logmsg->s, 0);
strbuf_free(logmsg); strbuf_free(logmsg);
sfree(censored_cmd); sfree(censored_cmd);
} }

View File

@ -93,8 +93,9 @@ static const SshChannelVtable psocks_scvt = {
/* all the rest are NULL */ /* all the rest are NULL */
}; };
static void psocks_plug_log(Plug *p, PlugLogType type, SockAddr *addr, static void psocks_plug_log(Plug *p, Socket *s, PlugLogType type,
int port, const char *error_msg, int error_code); SockAddr *addr, int port,
const char *error_msg, int error_code);
static void psocks_plug_closing(Plug *p, PlugCloseType, const char *error_msg); static void psocks_plug_closing(Plug *p, PlugCloseType, const char *error_msg);
static void psocks_plug_receive(Plug *p, int urgent, static void psocks_plug_receive(Plug *p, int urgent,
const char *data, size_t len); const char *data, size_t len);
@ -320,8 +321,9 @@ static void psocks_sc_unthrottle(SshChannel *sc, size_t bufsize)
sk_set_frozen(conn->socket, false); sk_set_frozen(conn->socket, false);
} }
static void psocks_plug_log(Plug *plug, PlugLogType type, SockAddr *addr, static void psocks_plug_log(Plug *plug, Socket *s, PlugLogType type,
int port, const char *error_msg, int error_code) SockAddr *addr, int port,
const char *error_msg, int error_code)
{ {
psocks_connection *conn = container_of(plug, psocks_connection, plug); psocks_connection *conn = container_of(plug, psocks_connection, plug);
char addrbuf[256]; char addrbuf[256];

View File

@ -96,13 +96,15 @@ static void free_portlistener_state(struct PortListener *pl)
sfree(pl); sfree(pl);
} }
static void pfd_log(Plug *plug, PlugLogType type, SockAddr *addr, int port, static void pfd_log(Plug *plug, Socket *s, PlugLogType type,
SockAddr *addr, int port,
const char *error_msg, int error_code) const char *error_msg, int error_code)
{ {
/* we have to dump these since we have no interface to logging.c */ /* we have to dump these since we have no interface to logging.c */
} }
static void pfl_log(Plug *plug, PlugLogType type, SockAddr *addr, int port, static void pfl_log(Plug *plug, Socket *s, PlugLogType type,
SockAddr *addr, int port,
const char *error_msg, int error_code) const char *error_msg, int error_code)
{ {
/* we have to dump these since we have no interface to logging.c */ /* we have to dump these since we have no interface to logging.c */

View File

@ -138,8 +138,9 @@ static const SeatVtable server_seat_vt = {
.get_cursor_position = nullseat_get_cursor_position, .get_cursor_position = nullseat_get_cursor_position,
}; };
static void server_socket_log(Plug *plug, PlugLogType type, SockAddr *addr, static void server_socket_log(Plug *plug, Socket *s, PlugLogType type,
int port, const char *error_msg, int error_code) SockAddr *addr, int port,
const char *error_msg, int error_code)
{ {
/* server *srv = container_of(plug, server, plug); */ /* server *srv = container_of(plug, server, plug); */
/* FIXME */ /* FIXME */

View File

@ -371,8 +371,8 @@ bool sesschan_run_subsystem(Channel *chan, ptrlen subsys)
return false; return false;
} }
static void fwd_log(Plug *plug, PlugLogType type, SockAddr *addr, int port, static void fwd_log(Plug *plug, Socket *s, PlugLogType type, SockAddr *addr,
const char *error_msg, int error_code) int port, const char *error_msg, int error_code)
{ /* don't expect any weirdnesses from a listening socket */ } { /* don't expect any weirdnesses from a listening socket */ }
static void fwd_closing(Plug *plug, PlugCloseType type, const char *error_msg) static void fwd_closing(Plug *plug, PlugCloseType type, const char *error_msg)
{ /* not here, either */ } { /* not here, either */ }

View File

@ -600,8 +600,9 @@ void ssh_sw_abort_deferred(Ssh *ssh, const char *fmt, ...)
} }
} }
static void ssh_socket_log(Plug *plug, PlugLogType type, SockAddr *addr, static void ssh_socket_log(Plug *plug, Socket *s, PlugLogType type,
int port, const char *error_msg, int error_code) SockAddr *addr, int port,
const char *error_msg, int error_code)
{ {
Ssh *ssh = container_of(plug, Ssh, plug); Ssh *ssh = container_of(plug, Ssh, plug);
@ -615,7 +616,7 @@ static void ssh_socket_log(Plug *plug, PlugLogType type, SockAddr *addr,
*/ */
if (!ssh->attempting_connshare) if (!ssh->attempting_connshare)
backend_socket_log(ssh->seat, ssh->logctx, type, addr, port, backend_socket_log(ssh->seat, ssh->logctx, s, type, addr, port,
error_msg, error_code, ssh->conf, error_msg, error_code, ssh->conf,
ssh->session_started); ssh->session_started);
} }

View File

@ -318,8 +318,9 @@ static bool ssh2_userauth_signflags(struct ssh2_userauth_state *s,
return true; return true;
} }
static void authplugin_plug_log(Plug *plug, PlugLogType type, SockAddr *addr, static void authplugin_plug_log(Plug *plug, Socket *sock, PlugLogType type,
int port, const char *err_msg, int err_code) SockAddr *addr, int port,
const char *err_msg, int err_code)
{ {
struct ssh2_userauth_state *s = container_of( struct ssh2_userauth_state *s = container_of(
plug, struct ssh2_userauth_state, authplugin_plug); plug, struct ssh2_userauth_state, authplugin_plug);

View File

@ -277,8 +277,8 @@ static char *x11_verify(unsigned long peer_ip, int peer_port,
return NULL; return NULL;
} }
static void x11_log(Plug *p, PlugLogType type, SockAddr *addr, int port, static void x11_log(Plug *p, Socket *s, PlugLogType type, SockAddr *addr,
const char *error_msg, int error_code) int port, const char *error_msg, int error_code)
{ {
/* We have no interface to the logging module here, so we drop these. */ /* We have no interface to the logging module here, so we drop these. */
} }

View File

@ -7,7 +7,7 @@
#include "putty.h" #include "putty.h"
void nullplug_log(Plug *plug, PlugLogType type, SockAddr *addr, void nullplug_log(Plug *plug, Socket *s, PlugLogType type, SockAddr *addr,
int port, const char *err_msg, int err_code) int port, const char *err_msg, int err_code)
{ {
} }

View File

@ -306,7 +306,7 @@ static void fdsocket_select_result_input_error(int fd, int event)
retd = read(fd, buf, sizeof(buf)); retd = read(fd, buf, sizeof(buf));
if (retd > 0) { if (retd > 0) {
log_proxy_stderr(fds->plug, &fds->psb, buf, retd); log_proxy_stderr(fds->plug, &fds->sock, &fds->psb, buf, retd);
} else { } else {
del234(fdsocket_by_inerrfd, fds); del234(fdsocket_by_inerrfd, fds);
uxsel_del(fds->inerrfd); uxsel_del(fds->inerrfd);
@ -334,8 +334,8 @@ static const SocketVtable FdSocket_sockvt = {
static void fdsocket_connect_success_callback(void *ctx) static void fdsocket_connect_success_callback(void *ctx)
{ {
FdSocket *fds = (FdSocket *)ctx; FdSocket *fds = (FdSocket *)ctx;
plug_log(fds->plug, PLUGLOG_CONNECT_SUCCESS, fds->addr, fds->port, plug_log(fds->plug, &fds->sock, PLUGLOG_CONNECT_SUCCESS,
NULL, 0); fds->addr, fds->port, NULL, 0);
} }
void setup_fd_socket(Socket *s, int infd, int outfd, int inerrfd) void setup_fd_socket(Socket *s, int infd, int outfd, int inerrfd)

View File

@ -566,7 +566,7 @@ static int try_connect(NetSocket *sock)
{ {
SockAddr thisaddr = sk_extractaddr_tmp( SockAddr thisaddr = sk_extractaddr_tmp(
sock->addr, &sock->step); sock->addr, &sock->step);
plug_log(sock->plug, PLUGLOG_CONNECT_TRYING, plug_log(sock->plug, &sock->sock, PLUGLOG_CONNECT_TRYING,
&thisaddr, sock->port, NULL, 0); &thisaddr, sock->port, NULL, 0);
} }
@ -725,7 +725,7 @@ static int try_connect(NetSocket *sock)
sock->writable = true; sock->writable = true;
SockAddr thisaddr = sk_extractaddr_tmp(sock->addr, &sock->step); SockAddr thisaddr = sk_extractaddr_tmp(sock->addr, &sock->step);
plug_log(sock->plug, PLUGLOG_CONNECT_SUCCESS, plug_log(sock->plug, &sock->sock, PLUGLOG_CONNECT_SUCCESS,
&thisaddr, sock->port, NULL, 0); &thisaddr, sock->port, NULL, 0);
} }
@ -741,7 +741,7 @@ static int try_connect(NetSocket *sock)
if (err) { if (err) {
SockAddr thisaddr = sk_extractaddr_tmp( SockAddr thisaddr = sk_extractaddr_tmp(
sock->addr, &sock->step); sock->addr, &sock->step);
plug_log(sock->plug, PLUGLOG_CONNECT_FAILED, plug_log(sock->plug, &sock->sock, PLUGLOG_CONNECT_FAILED,
&thisaddr, sock->port, strerror(err), err); &thisaddr, sock->port, strerror(err), err);
} }
return err; return err;
@ -1425,7 +1425,7 @@ static void net_select_result(int fd, int event)
assert(s->addr); assert(s->addr);
thisaddr = sk_extractaddr_tmp(s->addr, &s->step); thisaddr = sk_extractaddr_tmp(s->addr, &s->step);
plug_log(s->plug, PLUGLOG_CONNECT_FAILED, plug_log(s->plug, &s->sock, PLUGLOG_CONNECT_FAILED,
&thisaddr, s->port, errmsg, err); &thisaddr, s->port, errmsg, err);
while (err && s->addr && sk_nextaddr(s->addr, &s->step)) { while (err && s->addr && sk_nextaddr(s->addr, &s->step)) {
@ -1442,7 +1442,7 @@ static void net_select_result(int fd, int event)
* The connection attempt succeeded. * The connection attempt succeeded.
*/ */
SockAddr thisaddr = sk_extractaddr_tmp(s->addr, &s->step); SockAddr thisaddr = sk_extractaddr_tmp(s->addr, &s->step);
plug_log(s->plug, PLUGLOG_CONNECT_SUCCESS, plug_log(s->plug, &s->sock, PLUGLOG_CONNECT_SUCCESS,
&thisaddr, s->port, NULL, 0); &thisaddr, s->port, NULL, 0);
} }
} }

View File

@ -243,8 +243,8 @@ static bool time_to_die = false;
* except that x11_closing has to signal back to the main loop that * except that x11_closing has to signal back to the main loop that
* it's time to terminate. * it's time to terminate.
*/ */
static void x11_log(Plug *p, PlugLogType type, SockAddr *addr, int port, static void x11_log(Plug *p, Socket *s, PlugLogType type, SockAddr *addr,
const char *error_msg, int error_code) {} int port, const char *error_msg, int error_code) {}
static void x11_receive(Plug *plug, int urgent, const char *data, size_t len) {} static void x11_receive(Plug *plug, int urgent, const char *data, size_t len) {}
static void x11_sent(Plug *plug, size_t bufsize) {} static void x11_sent(Plug *plug, size_t bufsize) {}
static void x11_closing(Plug *plug, PlugCloseType type, const char *error_msg) static void x11_closing(Plug *plug, PlugCloseType type, const char *error_msg)

View File

@ -265,8 +265,8 @@ static Plug *server_conn_plug(
&inst->logpolicy, &unix_live_sftpserver_vt); &inst->logpolicy, &unix_live_sftpserver_vt);
} }
static void server_log(Plug *plug, PlugLogType type, SockAddr *addr, int port, static void server_log(Plug *plug, Socket *s, PlugLogType type, SockAddr *addr,
const char *error_msg, int error_code) int port, const char *error_msg, int error_code)
{ {
log_to_stderr(-1, error_msg); log_to_stderr(-1, error_msg);
} }

View File

@ -478,8 +478,8 @@ static Plug *server_conn_plug(
&inst->ap, &inst->logpolicy, &unix_live_sftpserver_vt); &inst->ap, &inst->logpolicy, &unix_live_sftpserver_vt);
} }
static void server_log(Plug *plug, PlugLogType type, SockAddr *addr, int port, static void server_log(Plug *plug, Socket *s, PlugLogType type, SockAddr *addr,
const char *error_msg, int error_code) int port, const char *error_msg, int error_code)
{ {
log_to_stderr((unsigned)-1, error_msg); log_to_stderr((unsigned)-1, error_msg);
} }

View File

@ -4,7 +4,7 @@
#include "putty.h" #include "putty.h"
#include "network.h" #include "network.h"
void backend_socket_log(Seat *seat, LogContext *logctx, void backend_socket_log(Seat *seat, LogContext *logctx, Socket *sock,
PlugLogType type, SockAddr *addr, int port, PlugLogType type, SockAddr *addr, int port,
const char *error_msg, int error_code, Conf *conf, const char *error_msg, int error_code, Conf *conf,
bool session_started) bool session_started)

View File

@ -15,7 +15,7 @@ void psb_set_prefix(ProxyStderrBuf *psb, const char *prefix)
psb->prefix = prefix; psb->prefix = prefix;
} }
void log_proxy_stderr(Plug *plug, ProxyStderrBuf *psb, void log_proxy_stderr(Plug *plug, Socket *sock, ProxyStderrBuf *psb,
const void *vdata, size_t len) const void *vdata, size_t len)
{ {
const char *data = (const char *)vdata; const char *data = (const char *)vdata;
@ -65,7 +65,7 @@ void log_proxy_stderr(Plug *plug, ProxyStderrBuf *psb,
endpos--; endpos--;
char *msg = dupprintf( char *msg = dupprintf(
"%s: %.*s", psb->prefix, (int)(endpos - pos), psb->buf + pos); "%s: %.*s", psb->prefix, (int)(endpos - pos), psb->buf + pos);
plug_log(plug, PLUGLOG_PROXY_MSG, NULL, 0, msg, 0); plug_log(plug, sock, PLUGLOG_PROXY_MSG, NULL, 0, msg, 0);
sfree(msg); sfree(msg);
pos = nlpos - psb->buf + 1; pos = nlpos - psb->buf + 1;
@ -81,7 +81,7 @@ void log_proxy_stderr(Plug *plug, ProxyStderrBuf *psb,
char *msg = dupprintf( char *msg = dupprintf(
"%s (partial line): %.*s", psb->prefix, (int)psb->size, "%s (partial line): %.*s", psb->prefix, (int)psb->size,
psb->buf); psb->buf);
plug_log(plug, PLUGLOG_PROXY_MSG, NULL, 0, msg, 0); plug_log(plug, sock, PLUGLOG_PROXY_MSG, NULL, 0, msg, 0);
sfree(msg); sfree(msg);
pos = psb->size = 0; pos = psb->size = 0;

View File

@ -107,7 +107,7 @@ static size_t handle_stderr(
HandleSocket *hs = (HandleSocket *)handle_get_privdata(h); HandleSocket *hs = (HandleSocket *)handle_get_privdata(h);
if (!err && len > 0) if (!err && len > 0)
log_proxy_stderr(hs->plug, &hs->psb, data, len); log_proxy_stderr(hs->plug, &hs->sock, &hs->psb, data, len);
return 0; return 0;
} }
@ -354,7 +354,8 @@ static const SocketVtable HandleSocket_sockvt = {
static void sk_handle_connect_success_callback(void *ctx) static void sk_handle_connect_success_callback(void *ctx)
{ {
HandleSocket *hs = (HandleSocket *)ctx; HandleSocket *hs = (HandleSocket *)ctx;
plug_log(hs->plug, PLUGLOG_CONNECT_SUCCESS, hs->addr, hs->port, NULL, 0); plug_log(hs->plug, &hs->sock, PLUGLOG_CONNECT_SUCCESS, hs->addr, hs->port,
NULL, 0);
} }
Socket *make_handle_socket(HANDLE send_H, HANDLE recv_H, HANDLE stderr_H, Socket *make_handle_socket(HANDLE send_H, HANDLE recv_H, HANDLE stderr_H,

View File

@ -176,7 +176,7 @@ static void named_pipe_accept_loop(NamedPipeServerSocket *ps,
errmsg = dupprintf("Error while listening to named pipe: %s", errmsg = dupprintf("Error while listening to named pipe: %s",
win_strerror(error)); win_strerror(error));
plug_log(ps->plug, 1, sk_namedpipe_addr(ps->pipename), 0, plug_log(ps->plug, &ps->sock, 1, sk_namedpipe_addr(ps->pipename), 0,
errmsg, error); errmsg, error);
sfree(errmsg); sfree(errmsg);
break; break;

View File

@ -904,7 +904,7 @@ static DWORD try_connect(NetSocket *sock)
{ {
SockAddr thisaddr = sk_extractaddr_tmp( SockAddr thisaddr = sk_extractaddr_tmp(
sock->addr, &sock->step); sock->addr, &sock->step);
plug_log(sock->plug, PLUGLOG_CONNECT_TRYING, plug_log(sock->plug, &sock->sock, PLUGLOG_CONNECT_TRYING,
&thisaddr, sock->port, NULL, 0); &thisaddr, sock->port, NULL, 0);
} }
@ -1065,7 +1065,7 @@ static DWORD try_connect(NetSocket *sock)
*/ */
sock->writable = true; sock->writable = true;
SockAddr thisaddr = sk_extractaddr_tmp(sock->addr, &sock->step); SockAddr thisaddr = sk_extractaddr_tmp(sock->addr, &sock->step);
plug_log(sock->plug, PLUGLOG_CONNECT_SUCCESS, plug_log(sock->plug, &sock->sock, PLUGLOG_CONNECT_SUCCESS,
&thisaddr, sock->port, NULL, 0); &thisaddr, sock->port, NULL, 0);
} }
@ -1081,7 +1081,7 @@ static DWORD try_connect(NetSocket *sock)
if (err) { if (err) {
SockAddr thisaddr = sk_extractaddr_tmp( SockAddr thisaddr = sk_extractaddr_tmp(
sock->addr, &sock->step); sock->addr, &sock->step);
plug_log(sock->plug, PLUGLOG_CONNECT_FAILED, plug_log(sock->plug, &sock->sock, PLUGLOG_CONNECT_FAILED,
&thisaddr, sock->port, sock->error, err); &thisaddr, sock->port, sock->error, err);
} }
return err; return err;
@ -1578,8 +1578,8 @@ void select_result(WPARAM wParam, LPARAM lParam)
if (s->addr) { if (s->addr) {
SockAddr thisaddr = sk_extractaddr_tmp( SockAddr thisaddr = sk_extractaddr_tmp(
s->addr, &s->step); s->addr, &s->step);
plug_log(s->plug, PLUGLOG_CONNECT_FAILED, &thisaddr, s->port, plug_log(s->plug, &s->sock, PLUGLOG_CONNECT_FAILED, &thisaddr,
winsock_error_string(err), err); s->port, winsock_error_string(err), err);
while (err && s->addr && sk_nextaddr(s->addr, &s->step)) { while (err && s->addr && sk_nextaddr(s->addr, &s->step)) {
err = try_connect(s); err = try_connect(s);
} }
@ -1604,7 +1604,7 @@ void select_result(WPARAM wParam, LPARAM lParam)
if (s->addr) { if (s->addr) {
SockAddr thisaddr = sk_extractaddr_tmp( SockAddr thisaddr = sk_extractaddr_tmp(
s->addr, &s->step); s->addr, &s->step);
plug_log(s->plug, PLUGLOG_CONNECT_SUCCESS, plug_log(s->plug, &s->sock, PLUGLOG_CONNECT_SUCCESS,
&thisaddr, s->port, NULL, 0); &thisaddr, s->port, NULL, 0);
sk_addr_free(s->addr); sk_addr_free(s->addr);