]> jfr.im git - irc/rqf/shadowircd.git/blobdiff - src/listener.c
listener.c fixes - part 1
[irc/rqf/shadowircd.git] / src / listener.c
index 8f577cc5d270269516d8b6d9ab15ba0e08b3e6a0..8ac2c8b9d316c10518247bea2899d5f81fc939d5 100644 (file)
@@ -360,12 +360,12 @@ add_listener(int port, const char *vhost_ip, int family)
        switch(family)
        {
                case AF_INET:
-                       SET_SS_LEN(vaddr, sizeof(struct sockaddr_in));
+                       SET_SS_LEN(&vaddr, sizeof(struct sockaddr_in));
                        ((struct sockaddr_in *)&vaddr)->sin_port = htons(port);
                        break;
 #ifdef IPV6
                case AF_INET6:
-                       SET_SS_LEN(vaddr, sizeof(struct sockaddr_in6));
+                       SET_SS_LEN(&vaddr, sizeof(struct sockaddr_in6));
                        ((struct sockaddr_in6 *)&vaddr)->sin6_port = htons(port);
                        break;
 #endif
@@ -441,8 +441,8 @@ close_listeners()
  * The client is sent to the auth module for verification, and not put in
  * any client list yet.
  */
-static void
-add_connection(listener_t *listener, int fd, struct sockaddr *sai, int exempt)
+static void\r
+add_connection(struct Listener *listener, rb_fde_t *F, struct sockaddr *sai, int exempt)
 {
        struct Client *new_client;
        s_assert(NULL != listener);
@@ -465,7 +465,7 @@ add_connection(listener_t *listener, int fd, struct sockaddr *sai, int exempt)
 
        strlcpy(new_client->host, new_client->sockhost, sizeof(new_client->host));
 
-       new_client->localClient->F = rb_add_fd(fd);
+       new_client->localClient->F = F;
 
        new_client->localClient->listener = listener;
        ++listener->ref_count;
@@ -487,6 +487,7 @@ accept_precallback(rb_fde_t *F, struct sockaddr *addr, rb_socklen_t addrlen, voi
        struct Listener *listener = (struct Listener *)data;\r
        char buf[BUFSIZE];\r
        struct ConfItem *aconf;\r
+       static time_t last_oper_notice = 0;\r
 \r
        if((maxconnections - 10) < rb_get_fd(F)) /* XXX this is kinda bogus */\r
        {\r
@@ -508,7 +509,7 @@ accept_precallback(rb_fde_t *F, struct sockaddr *addr, rb_socklen_t addrlen, voi
                return 0;\r
        }\r
 \r
-       aconf = find_dline(addr);\r
+       aconf = find_dline(addr, addr.ss_family);\r
        if(aconf != NULL && (aconf->status & CONF_EXEMPTDLINE))\r
                return 1;\r
        \r
@@ -554,5 +555,5 @@ accept_callback(rb_fde_t *F, int status, struct sockaddr *addr, rb_socklen_t add
                rb_close(F);\r
        }\r
        \r
-       add_connection(listener, F, addr, (struct sockaddr *)&lip, NULL);\r
+       add_connection(listener, F, addr, (struct sockaddr *)&lip, 1);\r
 }