-diff -urNp -x '*.orig' openssh-8.4p1.org/clientloop.c openssh-8.4p1/clientloop.c
---- openssh-8.4p1.org/clientloop.c 2020-09-27 09:25:01.000000000 +0200
-+++ openssh-8.4p1/clientloop.c 2021-03-01 11:29:10.909905265 +0100
-@@ -127,6 +127,9 @@ extern int fork_after_authentication_fla
- /* Control socket */
- extern int muxserver_sock; /* XXX use mux_client_cleanup() instead */
-
-+/* if we process SIGPIPE */
-+extern int enable_sigpipe;
-+
- /*
- * Name of the host we are connecting to. This is the name given on the
- * command line, or the Hostname specified for the user-supplied name in a
-@@ -1518,6 +1518,8 @@ client_loop(struct ssh *ssh, int have_pt
- ssh_signal(SIGQUIT, signal_handler);
- if (ssh_signal(SIGTERM, SIG_IGN) != SIG_IGN)
- ssh_signal(SIGTERM, signal_handler);
-+ if (enable_sigpipe)
-+ ssh_signal(SIGPIPE, signal_handler);
- ssh_signal(SIGWINCH, window_change_handler);
- #ifdef SIGINFO
- ssh_signal(SIGINFO, siginfo_handler);
-diff -urNp -x '*.orig' openssh-8.4p1.org/ssh.0 openssh-8.4p1/ssh.0
---- openssh-8.4p1.org/ssh.0 2020-09-27 09:42:10.000000000 +0200
-+++ openssh-8.4p1/ssh.0 2021-03-01 11:29:10.909905265 +0100
-@@ -446,6 +446,8 @@ DESCRIPTION
- -y Send log information using the syslog(3) system module. By
- default this information is sent to stderr.
-
-+ -Z Enable SIGPIPE processing.
-+
- ssh may additionally obtain configuration data from a per-user
- configuration file and a system-wide configuration file. The file format
- and configuration options are described in ssh_config(5).
-diff -urNp -x '*.orig' openssh-8.4p1.org/ssh.1 openssh-8.4p1/ssh.1
---- openssh-8.4p1.org/ssh.1 2020-09-27 09:25:01.000000000 +0200
-+++ openssh-8.4p1/ssh.1 2021-03-01 11:29:10.909905265 +0100
-@@ -42,7 +42,7 @@
- .Nd OpenSSH remote login client
- .Sh SYNOPSIS
- .Nm ssh
--.Op Fl 46AaCfGgKkMNnqsTtVvXxYy
-+.Op Fl 46AaCfGgKkMNnqsTtVvXxYyZ
- .Op Fl B Ar bind_interface
- .Op Fl b Ar bind_address
- .Op Fl c Ar cipher_spec
-@@ -142,6 +142,11 @@ on the local machine as the source addre
- of the connection.
- Only useful on systems with more than one address.
- .Pp
-+.It Fl Z
-+Enables processing of SIGPIPE. Useful when using ssh output as input for
-+another process, for example in a shell script. Be careful - it may break
-+port/X11 forwarding when used.
-+.Pp
- .It Fl C
- Requests compression of all data (including stdin, stdout, stderr, and
- data for forwarded X11, TCP and
-diff -urNp -x '*.orig' openssh-8.4p1.org/ssh.c openssh-8.4p1/ssh.c
---- openssh-8.4p1.org/ssh.c 2020-09-27 09:25:01.000000000 +0200
-+++ openssh-8.4p1/ssh.c 2021-03-01 11:29:10.909905265 +0100
-@@ -190,6 +190,9 @@ struct sshbuf *command;
- /* command to be executed */
- struct sshbuf *command;
-
-+/* Enable sigpipe */
-+int enable_sigpipe = 0;
-+
- /* # of replies received for global requests */
- static int forward_confirms_pending = -1;
-
-@@ -203,7 +206,7 @@ static void
- usage(void)
- {
- fprintf(stderr,
--"usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface] [-b bind_address]\n"
-+"usage: ssh [-46AaCfGgKkMNnqsTtVvXxYyZ] [-B bind_interface] [-b bind_address]\n"
- " [-c cipher_spec] [-D [bind_address:]port] [-E log_file]\n"
- " [-e escape_char] [-F configfile] [-I pkcs11] [-i identity_file]\n"
- " [-J destination] [-L address] [-l login_name] [-m mac_spec]\n"
-@@ -699,7 +699,7 @@ main(int ac, char **av)
-
- again:
- while ((opt = getopt(ac, av, "1246ab:c:e:fgi:kl:m:no:p:qstvx"
-- "AB:CD:E:F:GI:J:KL:MNO:P:Q:R:S:TVw:W:XYy")) != -1) { /* HUZdhjruz */
-+ "AB:CD:E:F:GI:J:KL:MNO:P:Q:R:S:TVw:W:XYyZ")) != -1) { /* HUZdhjruz */
- switch (opt) {
- case '1':
- fatal("SSH protocol v.1 is no longer supported");
-@@ -1066,6 +1069,9 @@ main(int ac, char **av)
- case 'F':
- config = optarg;
- break;
-+ case 'Z':
-+ enable_sigpipe = 1;
-+ break;
- default:
- usage();
- }