From 86b604dd65679d983c06012b377e41c927da3cd6 Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Wed, 22 Feb 2017 21:51:03 +0000 Subject: [PATCH] uxproxy: fix write error handling on outgoing pipe. Jacob pointed out the other day that the call to logevent with NULL frontend handle can't possibly work, and the comment next to it saying that it can is an outright lie (probably thoughtlessly copied from some part of the Windows front end, where it actually would be true). Furthermore, even if that logevent call didn't dereference NULL and segfault, the followup call to fatalbox() would be inappropriate, since proxied connections need not be the primary network connection of the whole process. Rewritten as a call to plug_closing, which is the proper channel through which to report errors on an individual socket or equivalent. --- unix/uxproxy.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/unix/uxproxy.c b/unix/uxproxy.c index f92c459b..3df4cebe 100644 --- a/unix/uxproxy.c +++ b/unix/uxproxy.c @@ -149,10 +149,8 @@ static int localproxy_try_send(Local_Proxy_Socket ps) bufchain_prefix(&ps->pending_output_data, &data, &len); ret = write(ps->to_cmd, data, len); if (ret < 0 && errno != EWOULDBLOCK) { - /* We're inside the Unix frontend here, so we know - * that the frontend handle is unnecessary. */ - logevent(NULL, strerror(errno)); - fatalbox("%s", strerror(errno)); + plug_closing(ps->plug, strerror(errno), errno, 0); + return 0; } else if (ret <= 0) { break; } else { -- 2.45.1