--- /dev/null
+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;
+
++/* 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);
++
++ if (enable_sigpipe)
++ signal(SIGPIPE, signal_handler);
++
+ if (have_pty)
+ signal(SIGWINCH, window_change_handler);
+
+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
+ .Nm ssh
+-.Op Fl afgknqstvxACNTX1246
++.Op Fl afgknqstvxABCNTX1246
+ .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
++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;
+
++/* Enable sigpipe */
++int enable_sigpipe = 0;
++
+ /* # of replies received for global requests */
+ static int client_global_request_id = 0;
+
+@@ -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 @@
+
+ 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) {
+ switch (opt) {
+ case '1':
+ options.protocol = SSH_PROTO_1;
+@@ -314,6 +318,9 @@
+ case 'A':
+ options.forward_agent = 1;
+ break;
++ case 'B':
++ enable_sigpipe = 1;
++ break;
+ #ifdef AFS
+ case 'k':
+ options.kerberos_tgt_passing = 0;