]> asedeno.scripts.mit.edu Git - PuTTY.git/commitdiff
uxproxy: fix write error handling on outgoing pipe.
authorSimon Tatham <anakin@pobox.com>
Wed, 22 Feb 2017 21:51:03 +0000 (21:51 +0000)
committerSimon Tatham <anakin@pobox.com>
Wed, 22 Feb 2017 21:51:03 +0000 (21:51 +0000)
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

index f92c459be284ee341a35fda4c3e61b14690b75ec..3df4cebe4cf5f8b74124d143255949c17fc8455e 100644 (file)
@@ -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 {