Commit Diff


commit - 876a417023a6a38cc61f61bf3083305455a7f8ec
commit + 901905e0cf0f5f141461df7ea199711ea951c919
blob - 0c8a4aeabc282f6e91e216e2f7ad83750b034c00
blob + 6474e4f2082de54f71140c48597daa96cc9c4006
--- regress/regress
+++ regress/regress
@@ -53,5 +53,6 @@ run_test test_macro_expansion
 run_test test_174_bugfix
 run_test test_proxy_relay_to
 run_test test_proxy_with_certs
+run_test test_unknown_host
 
 tests_done
blob - 398c4580eaf5ad854d0fbabe9d93bfbbcc621c06
blob + 9fae42d965287091b16aee1f801f578eccfce96e
--- regress/tests.sh
+++ regress/tests.sh
@@ -361,4 +361,12 @@ test_proxy_with_certs() {
 
 	fetch /
 	check_reply "60 client certificate required" || return 1
+}
+
+test_unknown_host() {
+	setup_simple_test '' ''
+
+	ggflags="-N -H foobar"
+	fetch /
+	check_reply '59 Wrong/malformed host or missing SNI'
 }
blob - cd994fb6855b76a4a0375237ce0de4a135cebd19
blob + 2f5912c34afd1ea9454b51741b18b5e9389a4ffe
--- server.c
+++ server.c
@@ -1003,6 +1003,14 @@ client_read(struct bufferevent *bev, void *d)
 	size_t		 len;
 
 	bufferevent_disable(bev, EVBUFFER_READ);
+
+	/*
+	 * libevent2 can still somehow call this function, even
+	 * though I never enable EV_READ in the bufferevent.  If
+	 * that's the case, bail out.
+	 */
+	if (c->type != REQUEST_UNDECIDED)
+		return;
 
 	/* max url len + \r\n */
 	if (EVBUFFER_LENGTH(src) > 1024 + 2) {