Commit Diff


commit - 33c4c3a5ba6331d7140be52dc3a4612abc07694d
commit + 80444938654389aa7970aaa43c4590d63da6844d
blob - cac53ee49791e7800bf3f8cb78880a02f47d81a0
blob + 9bd17a3b1da2ae9f1891650063a9abe289c49717
--- server.c
+++ server.c
@@ -467,7 +467,23 @@ handle_handshake(int fd, short ev, void *d)
 		/* unreachable */
 		abort();
 	}
+
+	c->bev = bufferevent_new(fd, client_read, client_write,
+	    client_error, c);
+	if (c->bev == NULL)
+		fatal("%s: failed to allocate client buffer: %s",
+		    __func__, strerror(errno));
 
+	event_set(&c->bev->ev_read, c->fd, EV_READ,
+	    client_tls_readcb, c->bev);
+	event_set(&c->bev->ev_write, c->fd, EV_WRITE,
+	    client_tls_writecb, c->bev);
+
+#if HAVE_LIBEVENT2
+	evbuffer_unfreeze(c->bev->input, 0);
+	evbuffer_unfreeze(c->bev->output, 1);
+#endif
+
 	if ((servname = tls_conn_servername(c->ctx)) == NULL) {
 		log_debug(c, "handshake: missing SNI");
 		goto err;
@@ -495,25 +511,7 @@ found:
 
 	if (h != NULL) {
 		c->host = h;
-
-		c->bev = bufferevent_new(fd, client_read, client_write,
-		    client_error, c);
-		if (c->bev == NULL)
-			fatal("%s: failed to allocate client buffer: %s",
-			    __func__, strerror(errno));
-
-		event_set(&c->bev->ev_read, c->fd, EV_READ,
-		    client_tls_readcb, c->bev);
-		event_set(&c->bev->ev_write, c->fd, EV_WRITE,
-		    client_tls_writecb, c->bev);
-
-#if HAVE_LIBEVENT2
-		evbuffer_unfreeze(c->bev->input, 0);
-		evbuffer_unfreeze(c->bev->output, 1);
-#endif
-
 		bufferevent_enable(c->bev, EV_READ);
-
 		return;
 	}