aboutsummaryrefslogtreecommitdiff
path: root/tools/plink/logging.c
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2010-11-19 13:13:51 +0000
committermarha <marha@users.sourceforge.net>2010-11-19 13:13:51 +0000
commitbd5413c3a7e500fa8c8ccd68a33d2fcc4c172e28 (patch)
treeb77dfbc85a3ad280e488b7840ac42221785e0831 /tools/plink/logging.c
parent87e3509a1a9724e6115385686d9121f6c4a0f473 (diff)
parent773752eab55047c33bad0d88006bb69f5c601502 (diff)
downloadvcxsrv-bd5413c3a7e500fa8c8ccd68a33d2fcc4c172e28.tar.gz
vcxsrv-bd5413c3a7e500fa8c8ccd68a33d2fcc4c172e28.tar.bz2
vcxsrv-bd5413c3a7e500fa8c8ccd68a33d2fcc4c172e28.zip
svn merge ^/branches/released .
Diffstat (limited to 'tools/plink/logging.c')
-rw-r--r--tools/plink/logging.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/tools/plink/logging.c b/tools/plink/logging.c
index 6b8eaa7c5..4c7aa918c 100644
--- a/tools/plink/logging.c
+++ b/tools/plink/logging.c
@@ -43,7 +43,13 @@ static void logwrite(struct LogContext *ctx, void *data, int len)
bufchain_add(&ctx->queue, data, len);
} else if (ctx->state == L_OPEN) {
assert(ctx->lgfp);
- fwrite(data, 1, len, ctx->lgfp);
+ if (fwrite(data, 1, len, ctx->lgfp) < len) {
+ logfclose(ctx);
+ ctx->state = L_ERROR;
+ /* Log state is L_ERROR so this won't cause a loop */
+ logevent(ctx->frontend,
+ "Disabled writing session log due to error while writing");
+ }
} /* else L_ERROR, so ignore the write */
}
@@ -101,8 +107,9 @@ static void logfopen_callback(void *handle, int mode)
}
event = dupprintf("%s session log (%s mode) to file: %s",
- (mode == 0 ? "Disabled writing" :
- mode == 1 ? "Appending" : "Writing new"),
+ ctx->state == L_ERROR ?
+ (mode == 0 ? "Disabled writing" : "Error writing") :
+ (mode == 1 ? "Appending" : "Writing new"),
(ctx->cfg.logtype == LGTYP_ASCII ? "ASCII" :
ctx->cfg.logtype == LGTYP_DEBUG ? "raw" :
ctx->cfg.logtype == LGTYP_PACKETS ? "SSH packets" :