Commit Diff


commit - c423c56e242faa1814004d3b7d6a8fff46f96bfe
commit + 925a5bc8e206d64186340b8d02dc397007e4e28a
blob - 27db09714fdfc7d63a49e3b8c24311e607788ff7
blob + db835cb992ebf71e7fa0cf03cd4d5175f864d3e4
--- galileo.c
+++ galileo.c
@@ -58,7 +58,7 @@ static struct privsep_proc procs[] = {
 
 int privsep_process;
 
-const char *conffile = CONF_FILE;
+const char *conffile = GALILEO_CONF;
 
 static __dead void
 usage(void)
@@ -291,6 +291,7 @@ parent_sig_handler(int sig, short ev, void *arg)
 		break;
 	case SIGCHLD:
 		log_warnx("one child died, quitting.");
+		/* fallthrough */
 	case SIGTERM:
 	case SIGINT:
 		parent_shutdown(ps->ps_env);
blob - d653b6377bcb5e3cbc543aac1b1a47e8969cac44
blob + c8ad88be1f19015518715adf699cd15298b9099e
--- proxy.c
+++ proxy.c
@@ -39,6 +39,7 @@
 #include <tls.h>
 #include <unistd.h>
 
+#include "config.h"
 #include "log.h"
 #include "proc.h"
 #include "tmpl.h"
@@ -46,6 +47,12 @@
 #include "galileo.h"
 
 #define MINIMUM(a, b)	((a) < (b) ? (a) : (b))
+
+#if HAVE_LIBEVENT2
+# define G_TOUT(t)	((t).tv_sec)
+#else
+# define G_TOUT(t)	(t)
+#endif
 
 /* provided by OpenBSD' base libevent but not in any header? */
 extern void	 bufferevent_read_pressure_cb(struct evbuffer *, size_t,
@@ -519,6 +526,11 @@ done:
 		    proxy_tls_readcb, clt->clt_bev);
 		event_set(&clt->clt_bev->ev_write, clt->clt_fd, EV_WRITE,
 		    proxy_tls_writecb, clt->clt_bev);
+
+#if HAVE_LIBEVENT2
+		evbuffer_unfreeze(clt->clt_bev->input, 0);
+		evbuffer_unfreeze(clt->clt_bev->output, 1);
+#endif
 	}
 
 	/* bufferevent_settimeout(); */
@@ -703,7 +715,7 @@ proxy_read(struct bufferevent *bev, void *d)
 			fcgi_end_request(clt, 0);
 			goto err;
 		}
-		/* fallback */
+		/* fallthrough */
 	default:
 		if (proxy_start_reply(clt, 501, "text/html") == -1)
 			goto err;
@@ -834,7 +846,7 @@ proxy_tls_readcb(int fd, short event, void *arg)
 		goto err;
 	}
 
-	proxy_bufferevent_add(&bufev->ev_read, bufev->timeout_read);
+	proxy_bufferevent_add(&bufev->ev_read, G_TOUT(bufev->timeout_read));
 
 	len = EVBUFFER_LENGTH(bufev->input);
 	if (bufev->wm_read.low != 0 && len < bufev->wm_read.low)
@@ -851,7 +863,7 @@ proxy_tls_readcb(int fd, short event, void *arg)
 	return;
 
 retry:
-	proxy_bufferevent_add(&bufev->ev_read, bufev->timeout_read);
+	proxy_bufferevent_add(&bufev->ev_read, G_TOUT(bufev->timeout_read));
 	return;
 
 err:
@@ -901,7 +913,8 @@ proxy_tls_writecb(int fd, short event, void *arg)
 	}
 
 	if (EVBUFFER_LENGTH(bufev->output) != 0)
-		proxy_bufferevent_add(&bufev->ev_write, bufev->timeout_write);
+		proxy_bufferevent_add(&bufev->ev_write,
+		    G_TOUT(bufev->timeout_write));
 
 	if (bufev->writecb != NULL &&
 	    EVBUFFER_LENGTH(bufev->output) <= bufev->wm_write.low)
@@ -909,7 +922,7 @@ proxy_tls_writecb(int fd, short event, void *arg)
 	return;
 
 retry:
-	proxy_bufferevent_add(&bufev->ev_write, bufev->timeout_write);
+	proxy_bufferevent_add(&bufev->ev_write, G_TOUT(bufev->timeout_write));
 	return;
 
 err: