diff options
author | June McEnroe <programble@gmail.com> | 2017-08-08 19:00:54 -0400 |
---|---|---|
committer | June McEnroe <programble@gmail.com> | 2017-08-08 19:00:54 -0400 |
commit | c8a183c13d951b74315a0d38367c900e59379e3f (patch) | |
tree | b4e4cf173ef8901bb5b1c94c80749c5a53c0cb20 | |
parent | Rewrite help (diff) | |
download | torus-c8a183c13d951b74315a0d38367c900e59379e3f.tar.gz torus-c8a183c13d951b74315a0d38367c900e59379e3f.zip |
Turn off SIGPIPE at the socket level
I imagine it's better to not generate SIGPIPE at all rather than generate and ignore.
-rwxr-xr-x | server.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/server.c b/server.c index fc3b3d0..8ad47ba 100755 --- a/server.c +++ b/server.c @@ -260,8 +260,6 @@ static bool clientPut(const struct Client *client, uint8_t color, char cell) { int main() { int error; - signal(SIGPIPE, SIG_IGN); - tilesMap(); int server = socket(PF_LOCAL, SOCK_STREAM, 0); @@ -304,6 +302,10 @@ int main() { if (fd < 0) err(EX_IOERR, "accept"); fcntl(fd, F_SETFL, O_NONBLOCK); + int on = 1; + error = setsockopt(fd, SOL_SOCKET, SO_NOSIGPIPE, &on, sizeof(on)); + if (error) err(EX_IOERR, "setsockopt"); + struct Client *client = clientAdd(fd); struct kevent event = { |