summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rw-r--r--bounce.c1
-rw-r--r--compat.h11
-rw-r--r--dispatch.c4
4 files changed, 14 insertions, 4 deletions
diff --git a/Makefile b/Makefile
index 465a2e9..265781e 100644
--- a/Makefile
+++ b/Makefile
@@ -33,6 +33,8 @@ pounce: ${OBJS}
 
 ${OBJS}: bounce.h compat.h
 
+dispatch.o: compat.h
+
 tags: *.c *.h
 	ctags -w *.c *.h
 
diff --git a/bounce.c b/bounce.c
index 93afbb4..1f29f8c 100644
--- a/bounce.c
+++ b/bounce.c
@@ -372,6 +372,7 @@ int main(int argc, char *argv[]) {
 
 	signal(SIGINT, signalHandler);
 	signal(SIGTERM, signalHandler);
+	signal(SIGPIPE, SIG_IGN);
 	signal(SIGINFO, signalHandler);
 	signal(SIGUSR1, signalHandler);
 
diff --git a/compat.h b/compat.h
index a874d35..961ece9 100644
--- a/compat.h
+++ b/compat.h
@@ -17,14 +17,17 @@
 #include <stdint.h>
 #include <stdlib.h>
 
-#ifdef NO_EXPLICIT_BZERO
+// libcrypto defines these functions if libc doesn't.
 void explicit_bzero(void *b, size_t len);
-#endif
-
-#ifdef NO_ARC4RANDOM
+size_t strlcpy(char *restrict dst, const char *restrict src, size_t dstsize);
+size_t strlcat(char *restrict dst, const char *restrict src, size_t dstsize);
 uint32_t arc4random(void);
 void arc4random_buf(void *buf, size_t nbytes);
 uint32_t arc4random_uniform(uint32_t upper_bound);
+
+// The default value of SO_RCVLOWAT is 1 anyway...
+#ifndef SO_NOSIGPIPE
+#define SO_NOSIGPIPE SO_RCVLOWAT
 #endif
 
 #ifndef SIGINFO
diff --git a/dispatch.c b/dispatch.c
index e52efc7..e80f297 100644
--- a/dispatch.c
+++ b/dispatch.c
@@ -19,6 +19,7 @@
 #include <netdb.h>
 #include <netinet/in.h>
 #include <poll.h>
+#include <signal.h>
 #include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -32,6 +33,8 @@
 #include <sys/capsicum.h>
 #endif
 
+#include "compat.h"
+
 static struct {
 	struct pollfd *ptr;
 	size_t len, cap;
@@ -231,6 +234,7 @@ int main(int argc, char *argv[]) {
 		if (error) err(EX_IOERR, "listen");
 	}
 
+	signal(SIGPIPE, SIG_IGN);
 	for (;;) {
 		int nfds = poll(
 			event.ptr, event.len, (event.len > binds ? timeout : -1)
e failsJohn Keeping 2013-05-22ui-log: add <span/> around commit decorationsJohn Keeping 2013-05-22Makefile: fix parallel "make test"John Keeping 2013-05-18cache.c: fix cache_lsJohn Keeping 2013-05-13t0109: "function" is a bash-ismJohn Keeping 2013-05-13New mailing list.Jason A. Donenfeld 2013-04-30ui-snapshot: do not access $HOMEJason A. Donenfeld 2013-04-27t0001: validate Git -rcN version numbers correctlyJohn Keeping 2013-04-27git: update to 1.8.2.2John Keeping 2013-04-17scan-tree: fix regression in section-from-path=-1John Keeping 2013-04-15t0001: ignore ".dirty" suffix on Git versionJohn Keeping 2013-04-15tests: set TEST_OUTPUT_DIRECTORY to the CGit test directoryJohn Keeping 2013-04-15t0109: test more URLsJohn Keeping 2013-04-10cgitrc.5.txt: Specify when scan-path must be defined before.Jason A. Donenfeld 2013-04-10ui-snapshot.c: Prepend "V" when guessing ref namesLukas Fleischer 2013-04-10t0107: Skip ZIP tests if unzip(1) isn't availableLukas Fleischer 2013-04-10tests/: Do not use `sed -i`Lukas Fleischer 2013-04-10Add branch-sort and repo.branch-sort options.Jason A. Donenfeld 2013-04-10t0109: chain operations with &&John Keeping 2013-04-10cgit.c: Do not restore unset environment variablesLukas Fleischer 2013-04-09t0107: Use `tar -z` for gzip'ed archivesLukas Fleischer