]> jfr.im git - solanum.git/blobdiff - src/listener.c
Remove s_assert definition from ircd_defs.h and add it to its own header.
[solanum.git] / src / listener.c
index 1ac42b02debee324c4a9087b8150c751ee4920c0..e71921cd2b80d85fa2c8109561d2182c2105d7d6 100644 (file)
@@ -42,6 +42,8 @@
 #include "hostmask.h"
 #include "sslproc.h"
 #include "hash.h"
+#include "s_assert.h"
+#include "logger.h"
 
 #ifndef INADDR_NONE
 #define INADDR_NONE ((unsigned int) 0xffffffff)
@@ -168,7 +170,6 @@ static int
 inetport(struct Listener *listener)
 {
        rb_fde_t *F;
-       int ret;
        int opt = 1;
 
        /*
@@ -232,7 +233,7 @@ inetport(struct Listener *listener)
                return 0;
        }
 
-       if((ret = rb_listen(F, RATBOX_SOMAXCONN)))
+       if(rb_listen(F, RATBOX_SOMAXCONN, listener->defer_accept))
        {
                ilog_error("listen()");
                rb_close(F);
@@ -305,7 +306,7 @@ find_listener(struct rb_sockaddr_storage *addr)
  * the format "255.255.255.255"
  */
 void
-add_listener(int port, const char *vhost_ip, int family, int ssl)
+add_listener(int port, const char *vhost_ip, int family, int ssl, int defer_accept)
 {
        struct Listener *listener;
        struct rb_sockaddr_storage vaddr;
@@ -378,6 +379,7 @@ add_listener(int port, const char *vhost_ip, int family, int ssl)
 
        listener->F = NULL;
        listener->ssl = ssl;
+       listener->defer_accept = defer_accept;
 
        if(inetport(listener))
                listener->active = 1;
@@ -504,7 +506,6 @@ accept_precallback(rb_fde_t *F, struct sockaddr *addr, rb_socklen_t addrlen, voi
                        
                rb_write(F, "ERROR :All connections in use\r\n", 32);
                rb_close(F);
-               /* Re-register a new IO request for the next accept .. */
                return 0;
        }
 
@@ -520,9 +521,7 @@ accept_precallback(rb_fde_t *F, struct sockaddr *addr, rb_socklen_t addrlen, voi
                        
                if(ConfigFileEntry.dline_with_reason)
                {
-                       len = aconf->created ?
-                               rb_snprintf(buf, sizeof(buf), "ERROR :*** Banned: %s (%s)\r\n", aconf->passwd, smalldate(aconf->created)) :
-                               rb_snprintf(buf, sizeof(buf), "ERROR :*** Banned: %s\r\n", aconf->passwd);
+                       len = rb_snprintf(buf, sizeof(buf), "ERROR :*** Banned: %s\r\n", get_user_ban_reason(aconf));
                        if (len >= (int)(sizeof(buf)-1))
                        {
                                buf[sizeof(buf) - 3] = '\r';