-diff -Naur openssh-3.5p1/clientloop.c openssh-3.5p1-p/clientloop.c
---- openssh-3.5p1/clientloop.c Wed Sep 4 08:32:13 2002
-+++ openssh-3.5p1-p/clientloop.c Tue Nov 5 15:46:26 2002
-@@ -96,6 +96,9 @@
- */
- extern char *host;
+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;
+
/*
- * Flag to indicate that we have received a window change signal which has
- * not yet been processed. This will cause a message indicating the new
-@@ -892,6 +895,10 @@
- signal(SIGINT, signal_handler);
- signal(SIGQUIT, signal_handler);
- signal(SIGTERM, signal_handler);
-+
+ * 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
+@@ -1301,6 +1304,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)
+ signal(SIGPIPE, signal_handler);
-+
+ ssh_signal(SIGWINCH, window_change_handler);
+
if (have_pty)
- signal(SIGWINCH, window_change_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.
-diff -Naur openssh-3.5p1/ssh.1 openssh-3.5p1-p/ssh.1
---- openssh-3.5p1/ssh.1 Mon Sep 30 04:00:56 2002
-+++ openssh-3.5p1-p/ssh.1 Tue Nov 5 15:51:54 2002
-@@ -48,7 +48,7 @@
- .Op Ar command
- .Pp
++ -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 afgknqstvxACNTX1246
-+.Op Fl afgknqstvxABCNTX1246
+-.Op Fl 46AaCfGgKkMNnqsTtVvXxYy
++.Op Fl 46AaCfGgKkMNnqsTtVvXxYyZ
+ .Op Fl B Ar bind_interface
.Op Fl b Ar bind_address
.Op Fl c Ar cipher_spec
- .Op Fl e Ar escape_char
-@@ -412,6 +412,9 @@
- .It Fl b Ar bind_address
- Specify the interface to transmit from on machines with multiple
- interfaces or aliased addresses.
-+.It Fl B
+@@ -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.
- .It Fl c Ar blowfish|3des|des
- Selects the cipher to use for encrypting the session.
- .Ar 3des
-diff -Naur openssh-3.5p1/ssh.c openssh-3.5p1-p/ssh.c
---- openssh-3.5p1/ssh.c Thu Sep 19 04:05:04 2002
-+++ openssh-3.5p1-p/ssh.c Tue Nov 5 15:44:57 2002
-@@ -143,6 +143,9 @@
- /* Should we execute a command or invoke a subsystem? */
- int subsystem_flag = 0;
++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 client_global_request_id = 0;
+ static int forward_confirms_pending = -1;
-@@ -161,6 +164,7 @@
- fprintf(stderr, " -F config Config file (default: ~/%s).\n",
- _PATH_SSH_USER_CONFFILE);
- fprintf(stderr, " -A Enable authentication agent forwarding.\n");
-+ fprintf(stderr, " -B Enable SIGPIPE processing.\n");
- fprintf(stderr, " -a Disable authentication agent forwarding (default).\n");
- #ifdef AFS
- fprintf(stderr, " -k Disable Kerberos ticket and AFS token forwarding.\n");
-@@ -275,7 +279,7 @@
+@@ -203,7 +206,7 @@ static void
+ usage(void)
+ {
+ fprintf(stderr,
+-"usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface]\n"
++"usage: ssh [-46AaCfGgKkMNnqsTtVvXxYyZ] [-B bind_interface]\n"
+ " [-b bind_address] [-c cipher_spec] [-D [bind_address:]port]\n"
+ " [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11]\n"
+ " [-i identity_file] [-J [user@]host[:port]] [-L address]\n"
+@@ -722,7 +725,7 @@ main(int ac, char **av)
- again:
- while ((opt = getopt(ac, av,
-- "1246ab:c:e:fgi:kl:m:no:p:qstvxACD:F:I:L:NPR:TVX")) != -1) {
-+ "1246ab:c:e:fgi:kl:m:no:p:qstvxABCD:F:I:L:NPR:TVX")) != -1) {
+ again:
+ while ((opt = getopt(ac, av, "1246ab:c:e:fgi:kl:m:no:p:qstvx"
+- "AB:CD:E:F:GI:J:KL:MNO:PQ:R:S:TVw:W:XYy")) != -1) {
++ "AB:CD:E:F:GI:J:KL:MNO:PQ:R:S:TVw:W:XYyZ")) != -1) {
switch (opt) {
case '1':
- options.protocol = SSH_PROTO_1;
-@@ -314,6 +318,9 @@
- case 'A':
- options.forward_agent = 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 'B':
++ case 'Z':
+ enable_sigpipe = 1;
+ break;
- #ifdef AFS
- case 'k':
- options.kerberos_tgt_passing = 0;
+ default:
+ usage();
+ }