commit - 59d845219a6112f64530c82f61f611e5a1d81008
commit + ac796d32181ae09d4225fa5bf3598d4d54d2b8cf
blob - 6a96350bfeff8bd73bf19fd118807fe07895bed8
blob + 8ec42aa40d8d39e7adba771bda2f402b047b1e88
--- kamid/listener.c
+++ kamid/listener.c
{
struct kd_pki_conf *pki;
struct kd_listen_conf *listen;
+ struct client *c;
+
+ /* drop any pre-auth inflight connections */
+ SPLAY_FOREACH(c, clients_tree_id, &clients) {
+ /*
+ * c->event is set only during the handshake and the teardown
+ * of the connection; c->bev is set only after auth. Checking
+ * for both ensures we drop only incoming connection in the
+ * pre-auth state.
+ */
+ if (event_pending(&c->event, EV_READ|EV_WRITE, NULL) &&
+ c->bev == NULL) {
+ log_warn("closing in-flight connection due to reload");
+ close_conn(c);
+ }
+ }
/* swap the now config with the current one */
clear_config(listener_conf);