]> git.ipfire.org Git - thirdparty/knot-dns.git/commitdiff
no dynamic configuration: remove reference counting
authorDavid Vašek <david.vasek@nic.cz>
Thu, 22 Aug 2019 14:38:44 +0000 (16:38 +0200)
committerDaniel Salzman <daniel.salzman@nic.cz>
Wed, 11 Sep 2019 18:09:49 +0000 (20:09 +0200)
src/knot/server/server.c
src/knot/server/server.h
src/knot/server/tcp-handler.c
src/knot/server/udp-handler.c

index e1e9d9ffac0d6b51783fc0b8e9b998f1ccf2f0e1..3ba66c18873156da7f215d47df071cf3db360281 100644 (file)
@@ -338,8 +338,6 @@ static int configure_sockets(conf_t *conf, server_t *s)
        /* Prepare helper lists. */
        int bound = 0;
        ifacelist_t *newlist = malloc(sizeof(ifacelist_t));
-       ref_init(&newlist->ref, &remove_ifacelist);
-       ref_retain(&newlist->ref);
        init_list(&newlist->u);
        init_list(&newlist->l);
 
@@ -377,7 +375,6 @@ static int configure_sockets(conf_t *conf, server_t *s)
        for (unsigned proto = IO_UDP; proto <= IO_TCP; ++proto) {
                dt_unit_t *tu = s->handlers[proto].handler.unit;
                for (unsigned i = 0; i < tu->size; ++i) {
-                       ref_retain((ref_t *)newlist);
                        s->handlers[proto].handler.thread_state[i] |= ServerReload;
                        s->handlers[proto].handler.thread_id[i] = thread_count++;
                }
@@ -921,7 +918,7 @@ void server_update_zones(conf_t *conf, server_t *server)
        }
 }
 
-ref_t *server_set_ifaces(server_t *server, fdset_t *fds, int index, int thread_id)
+ifacelist_t *server_set_ifaces(server_t *server, fdset_t *fds, int index, int thread_id)
 {
        if (server == NULL || server->ifaces == NULL || fds == NULL) {
                return NULL;
@@ -950,5 +947,5 @@ ref_t *server_set_ifaces(server_t *server, fdset_t *fds, int index, int thread_i
        }
        rcu_read_unlock();
 
-       return &server->ifaces->ref;
+       return server->ifaces;
 }
index 14ad0345d2ac710cc8b214d62b102df5ff8ee7b2..b63c4eb16848cce643f12656e9e808fbf1f06fae 100644 (file)
@@ -21,7 +21,6 @@
 #include "knot/conf/conf.h"
 #include "knot/common/evsched.h"
 #include "knot/common/fdset.h"
-#include "knot/common/ref.h"
 #include "knot/journal/knot_lmdb.h"
 #include "knot/server/dthreads.h"
 #include "knot/worker/pool.h"
@@ -67,7 +66,6 @@ enum {
 };
 
 typedef struct ifacelist {
-       ref_t ref;
        list_t l;
        list_t u;
 } ifacelist_t;
@@ -180,4 +178,4 @@ void server_update_zones(conf_t *conf, server_t *server);
  *
  * \return new interface list
  */
-ref_t *server_set_ifaces(server_t *server, fdset_t *fds, int index, int thread_id);
+ifacelist_t *server_set_ifaces(server_t *server, fdset_t *fds, int index, int thread_id);
index ac3111f043b4186936cc88277c6e0212faf13525..d4d27ee74e809dc9c6130c0318fe4ad811d7c3f6 100644 (file)
@@ -265,7 +265,6 @@ int tcp_master(dthread_t *thread)
        unsigned *iostate = &handler->thread_state[dt_get_id(thread)];
 
        int ret = KNOT_EOK;
-       ref_t *ref = NULL;
 
        /* Create big enough memory cushion. */
        knot_mm_t mm;
@@ -298,7 +297,6 @@ int tcp_master(dthread_t *thread)
        update_tcp_conf(&tcp);
 
 /* XXX This should likely be removed. */
-/* XXX Investigate the purpose of ref. */
        /* Check handler state. */
        if (*iostate & ServerReload) {
                *iostate &= ~ServerReload;
@@ -306,7 +304,8 @@ int tcp_master(dthread_t *thread)
        }
 /* XXX */
 
-       ref = server_set_ifaces(handler->server, &tcp.set, IO_TCP, tcp.thread_id);
+/* XXX The return value isn't checked. */
+       server_set_ifaces(handler->server, &tcp.set, IO_TCP, tcp.thread_id);
        if (tcp.set.n == 0) {
                goto finish; /* Terminate on zero interfaces. */
        }
@@ -335,7 +334,6 @@ finish:
        free(tcp.iov[1].iov_base);
        mp_delete(mm.ctx);
        fdset_clear(&tcp.set);
-       ref_release(ref);
 
        return ret;
 }
index 1d3b38f6d2c9939b652342fbf4f3e56315b0f0fd..df0f79ce74b9752b03e1db10a89801156afa7861 100644 (file)
@@ -368,14 +368,6 @@ static int iface_udp_fd(const iface_t *iface, int thread_id)
 #endif
 }
 
-/*! \brief Release the interface list reference and free watched descriptor set. */
-static void forget_ifaces(ifacelist_t *ifaces, struct pollfd **fds_ptr)
-{
-       ref_release((ref_t *)ifaces);
-       free(*fds_ptr);
-       *fds_ptr = NULL;
-}
-
 /*!
  * \brief Make a set of watched descriptors based on the interface list.
  *
@@ -428,7 +420,7 @@ int udp_master(dthread_t *thread)
        iohandler_t *handler = (iohandler_t *)thread->data;
        unsigned *iostate = &handler->thread_state[thr_id];
        void *rq = _udp_init();
-       ifacelist_t *ref = NULL;
+       ifacelist_t *ifaces = NULL;
 
        /* Create big enough memory cushion. */
        knot_mm_t mm;
@@ -446,7 +438,6 @@ int udp_master(dthread_t *thread)
        nfds_t nfds = 0;
 
 /* XXX This should likely be removed. */
-/* XXX Investigate the purpose of ref. */
        /* Check handler state. */
        if (*iostate & ServerReload) {
                *iostate &= ~ServerReload;
@@ -455,8 +446,8 @@ int udp_master(dthread_t *thread)
 
        udp.thread_id = handler->thread_id[thr_id];
        rcu_read_lock();
-       ref = handler->server->ifaces;
-       nfds = track_ifaces(ref, udp.thread_id, &fds);
+       ifaces = handler->server->ifaces;
+       nfds = track_ifaces(ifaces, udp.thread_id, &fds);
        rcu_read_unlock();
        if (nfds == 0) {
                goto finish;
@@ -493,7 +484,8 @@ int udp_master(dthread_t *thread)
 
 finish:
        _udp_deinit(rq);
-       forget_ifaces(ref, &fds);
+       free(fds);
        mp_delete(mm.ctx);
+
        return KNOT_EOK;
 }