X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/6e8f9cab2a96d296bcc6717356782f3438cab80f..9916cc1e8d26f1caef36fc1ee525819e6ca62f42:/logging.c diff --git a/logging.c b/logging.c index c448bd7e..db02892a 100644 --- a/logging.c +++ b/logging.c @@ -85,7 +85,7 @@ static void logfopen_callback(void *handle, int mode) ctx->state = L_ERROR; /* disable logging */ } else { fmode = (mode == 1 ? "ab" : "wb"); - ctx->lgfp = f_open(ctx->currlogfilename, fmode); + ctx->lgfp = f_open(ctx->currlogfilename, fmode, TRUE); if (ctx->lgfp) ctx->state = L_OPEN; else @@ -149,7 +149,7 @@ void logfopen(void *handle) /* substitute special codes in file name */ xlatlognam(&ctx->currlogfilename, ctx->cfg.logfilename,ctx->cfg.host, &tm); - ctx->lgfp = f_open(ctx->currlogfilename, "r"); /* file already present? */ + ctx->lgfp = f_open(ctx->currlogfilename, "r", FALSE); /* file already present? */ if (ctx->lgfp) { fclose(ctx->lgfp); if (ctx->cfg.logxfovr != LGXF_ASK) { @@ -204,6 +204,9 @@ void log_eventlog(void *handle, const char *event) fprintf(stderr, "%s\n", event); fflush(stderr); } + /* If we don't have a context yet (eg winnet.c init) then skip entirely */ + if (!ctx) + return; if (ctx->cfg.logtype != LGTYP_PACKETS && ctx->cfg.logtype != LGTYP_SSHRAW) return; @@ -217,8 +220,9 @@ void log_eventlog(void *handle, const char *event) * Set of blanking areas must be in increasing order. */ void log_packet(void *handle, int direction, int type, - char *texttype, void *data, int len, - int n_blanks, const struct logblank_t *blanks) + char *texttype, const void *data, int len, + int n_blanks, const struct logblank_t *blanks, + const unsigned long *seq) { struct LogContext *ctx = (struct LogContext *)handle; char dumpdata[80], smalldata[5]; @@ -230,13 +234,20 @@ void log_packet(void *handle, int direction, int type, return; /* Packet header. */ - if (texttype) - logprintf(ctx, "%s packet type %d / 0x%02x (%s)\r\n", - direction == PKT_INCOMING ? "Incoming" : "Outgoing", - type, type, texttype); - else + if (texttype) { + if (seq) { + logprintf(ctx, "%s packet #0x%lx, type %d / 0x%02x (%s)\r\n", + direction == PKT_INCOMING ? "Incoming" : "Outgoing", + *seq, type, type, texttype); + } else { + logprintf(ctx, "%s packet type %d / 0x%02x (%s)\r\n", + direction == PKT_INCOMING ? "Incoming" : "Outgoing", + type, type, texttype); + } + } else { logprintf(ctx, "%s raw data\r\n", direction == PKT_INCOMING ? "Incoming" : "Outgoing"); + } /* * Output a hex/ASCII dump of the packet body, blanking/omitting