Re: [PATCH 1/3] Check output of write() to stdout
abort? are you insane? no no no no... On Sun, Jun 1, 2014 at 8:28 PM, Brent Cook bust...@gmail.com wrote: 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
Re: [PATCH 1/3] Check output of write() to stdout
On Mon, Jun 02, 2014 at 09:51, Brent Cook wrote: Is something like this more to taste? Or maybe just a simple (void)write() as in libc/time/zic.c ? I think maybe we want to save this one for later. If it's not immediately obvious what the correct fix is, move along to something where the correct fix is obvious.
Re: [PATCH 1/3] Check output of write() to stdout
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