From: Vicky Shrestha Date: Wed, 17 Jan 2018 05:10:15 +0000 (-0800) Subject: Always create a endpoint in network_listen_fd X-Git-Tag: v2.3.0~14^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f2c1ca64b6d605c5c37ca7cea9a46fd933ab2de9;p=thirdparty%2Fknot-resolver.git Always create a endpoint in network_listen_fd There is no need to check for unique addr+port for FDs passed by a supervisor process like systemd. --- diff --git a/daemon/network.c b/daemon/network.c index b3564567f..4a047ab66 100644 --- a/daemon/network.c +++ b/daemon/network.c @@ -265,23 +265,17 @@ int network_listen_fd(struct network *net, int fd, bool use_tls) } else { return kr_error(EAFNOSUPPORT); } - /* Fetch or create endpoint for this fd */ - size_t index = 0; - endpoint_array_t *ep_array = network_get(net, addr_str, port, &index); - if (!ep_array) { - struct endpoint *ep = malloc(sizeof(*ep)); - memset(ep, 0, sizeof(*ep)); - ep->flags = NET_DOWN; - ep->port = port; - ret = insert_endpoint(net, addr_str, ep); - if (ret != 0) { - return ret; - } - ep_array = network_get(net, addr_str, port, &index); + + /* always create endpoint for supervisor supplied fd + * even if addr+port is not unique */ + struct endpoint *ep = malloc(sizeof(*ep)); + memset(ep, 0, sizeof(*ep)); + ep->flags = NET_DOWN; + ep->port = port; + ret = insert_endpoint(net, addr_str, ep); + if (ret != 0) { + return ret; } - /* Open fd in found/created endpoint. */ - struct endpoint *ep = ep_array->at[index]; - assert(ep != NULL); /* Create a libuv struct for this socket. */ return open_endpoint_fd(net, ep, fd, sock_type, use_tls); }