From 028714d02ab8e181b93ea2096fcfc12fd1133ea7 Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Sat, 6 Nov 2021 14:01:18 +0000 Subject: [PATCH] Fix Plink's handling of interactor_announce() blank lines. I'd forgotten that the text-only branch of seat_antispoof_msg() constructs a string from its input in the expectation that it's a one-line message. So it was a mistake to put a \n at the start of the string in interactor_announce() to get a blank line first. Now interactor_announce() makes an extra call to seat_antispoof_msg to show its blank line, and seat_antispoof_msg itself handles the blank-line case specially. --- proxy/interactor.c | 2 +- utils/antispoof.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/proxy/interactor.c b/proxy/interactor.c index d2227ae3..958e5a98 100644 --- a/proxy/interactor.c +++ b/proxy/interactor.c @@ -97,7 +97,7 @@ InteractionReadySeat interactor_announce(Interactor *itr) if (need_announcement) { const char *prefix = ""; if (itr_top->last_to_talk != NULL) - prefix = "\r\n"; + seat_antispoof_msg(iseat, ""); /* leave a separating blank line */ char *desc = interactor_description(itr); char *adjective = (level == 0 ? dupstr("primary") : diff --git a/utils/antispoof.c b/utils/antispoof.c index 3a633189..60769af4 100644 --- a/utils/antispoof.c +++ b/utils/antispoof.c @@ -12,7 +12,7 @@ void seat_antispoof_msg(InteractionReadySeat iseat, const char *msg) * unmodified as an unspoofable header. */ put_datapl(sb, ptrlen_from_asciz(msg)); - } else { + } else if (*msg) { /* * Otherwise, add enough padding around it that the server * wouldn't be able to mimic it within our line-length