This diff is very dissapointing.
> Check for errors on write. Since SIGPIPE is ignored, play nicely with > pipelines by aborting on EPIPE. > --- > src/apps/s_server.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/src/apps/s_server.c b/src/apps/s_server.c > index 77384ec..836d46b 100644 > --- a/src/apps/s_server.c > +++ b/src/apps/s_server.c > @@ -1760,8 +1760,11 @@ sv_body(char *hostname, int s, unsigned char *context) > i = SSL_read(con, (char *) buf, bufsize); > switch (SSL_get_error(con, i)) { > case SSL_ERROR_NONE: > - write(fileno(stdout), buf, > - (unsigned int) i); > + if (write(fileno(stdout), buf, i) == > -1) { > + if (errno == EPIPE) { > + abort(); > + } > + } > if (SSL_pending(con)) > goto again; > break; > -- > 1.9.3 >