diff --git a/src/m_server.c b/src/m_server.c index 5689a885..61872373 100644 --- a/src/m_server.c +++ b/src/m_server.c @@ -361,10 +361,23 @@ m_server_estab(aClient *cptr) aClient *acptr; char *inpath, *host, *s, *encr; + struct userBan *ban; inpath = get_client_name(cptr, HIDEME); /* "refresh" inpath with host */ host = cptr->name; + ban = check_userbanned(cptr, UBAN_IP|UBAN_CIDR4|UBAN_WILDUSER, 0); + + if (ban) + { + int loc = (ban->flags & UBAN_LOCAL) ? 1 : 0; + + ircstp->is_ref++; + ircstp->is_ref_2++; + + return exit_banned_client(cptr, loc, loc? 'K' : 'A', ban->reason, 0); + } + if (!(aconn = cptr->serv->aconn)) { ircstp->is_ref++; diff --git a/src/s_bsd.c b/src/s_bsd.c index 68745e88..acec9827 100644 --- a/src/s_bsd.c +++ b/src/s_bsd.c @@ -1328,7 +1328,6 @@ aClient *add_connection(aListener *lptr, int fd) struct sockaddr_in6 addr6; } addr; unsigned int len = sizeof(addr); - struct userBan *ban; if (getpeername(fd, &addr.sa, &len) == -1) { @@ -1390,18 +1389,6 @@ aClient *add_connection(aListener *lptr, int fd) acptr->lstn = lptr; add_client_to_list(acptr); - ban = check_userbanned(acptr, UBAN_IP|UBAN_CIDR4|UBAN_WILDUSER, 0); - if(ban) - { - int loc = (ban->flags & UBAN_LOCAL) ? 1 : 0; - - ircstp->is_ref++; - ircstp->is_ref_1++; - exit_banned_client(acptr, loc, loc ? 'K' : 'A', ban->reason, 0); - - return NULL; - } - if(call_hooks(CHOOK_PREACCESS, acptr) == FLUSH_BUFFER) return NULL; diff --git a/src/s_user.c b/src/s_user.c index eb6dce29..f3f2f4c7 100644 --- a/src/s_user.c +++ b/src/s_user.c @@ -854,7 +854,7 @@ register_user(aClient *cptr, aClient *sptr, char *nick, char *username, : "Too many connections from your site"); } - if(!(ban = check_userbanned(sptr, UBAN_IP|UBAN_CIDR4, UBAN_WILDUSER))) + if(!(ban = check_userbanned(sptr, UBAN_IP|UBAN_CIDR4, 0))) ban = check_userbanned(sptr, UBAN_HOST, 0); if(ban)