From 70747af52417d57b52c4ad7a6b41f9d571f4c682 Mon Sep 17 00:00:00 2001 From: Jilles Tjoelker Date: Thu, 31 Jul 2008 22:47:53 +0200 Subject: [PATCH] Fix rejectcache and unknown_count. Unfortunately they are checked after SSL setup. --- src/listener.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/listener.c b/src/listener.c index 8841558..b5e7869 100644 --- a/src/listener.c +++ b/src/listener.c @@ -435,9 +435,10 @@ close_listeners() * any client list yet. */ static void -add_connection(struct Listener *listener, rb_fde_t *F, struct sockaddr *sai, void *ssl_ctl, int exempt) +add_connection(struct Listener *listener, rb_fde_t *F, struct sockaddr *sai, void *ssl_ctl) { struct Client *new_client; + struct ConfItem *aconf; s_assert(NULL != listener); /* @@ -467,7 +468,9 @@ add_connection(struct Listener *listener, rb_fde_t *F, struct sockaddr *sai, voi ++listener->ref_count; - if(!exempt) + /* XXX these should be done in accept_precallback */ + aconf = find_dline(sai, sai->sa_family); + if(aconf == NULL || aconf->status & CONF_EXEMPTDLINE) { if(check_reject(new_client)) return; @@ -549,7 +552,7 @@ accept_ssld(rb_fde_t *F, struct sockaddr *addr, struct sockaddr *laddr, struct L rb_fde_t *xF[2]; rb_socketpair(AF_UNIX, SOCK_STREAM, 0, &xF[0], &xF[1], "Incoming ssld Connection"); ctl = start_ssld_accept(F, xF[1], rb_get_fd(xF[0])); /* this will close F for us */ - add_connection(listener, xF[0], addr, ctl, 1); + add_connection(listener, xF[0], addr, ctl); } static void @@ -571,5 +574,5 @@ accept_callback(rb_fde_t *F, int status, struct sockaddr *addr, rb_socklen_t add if(listener->ssl) accept_ssld(F, addr, (struct sockaddr *)&lip, listener); else - add_connection(listener, F, addr, NULL, 1); + add_connection(listener, F, addr, NULL); }