From 348e99087c5b8cfa00e43e662f6e73f293d898f0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marek=20Vavru=C5=A1a?= <marek.vavrusa@nic.cz>
Date: Tue, 13 May 2014 14:13:35 +0200
Subject: [PATCH] net: new function to determine connected socket

---
 src/knot/server/net.c |  7 +++++++
 src/knot/server/net.h | 10 ++++++++++
 2 files changed, 17 insertions(+)

diff --git a/src/knot/server/net.c b/src/knot/server/net.c
index e0a010dea..5e2c8d633 100644
--- a/src/knot/server/net.c
+++ b/src/knot/server/net.c
@@ -143,3 +143,10 @@ int net_connected_socket(int type, const struct sockaddr_storage *dst_addr,
 
 	return socket;
 }
+
+int net_is_connected(int fd)
+{
+	struct sockaddr_in6 ss;
+	socklen_t len = sizeof(ss);
+	return getpeername(fd, &ss, &len) == 0;
+}
diff --git a/src/knot/server/net.h b/src/knot/server/net.h
index 892b03129..858ce6ec8 100644
--- a/src/knot/server/net.h
+++ b/src/knot/server/net.h
@@ -65,6 +65,16 @@ int net_bound_socket(int type, const struct sockaddr_storage *ss);
 int net_connected_socket(int type, const struct sockaddr_storage *dst_addr,
                          const struct sockaddr_storage *src_addr, unsigned flags);
 
+/*!
+ * \brief Return true if the socket is connected.
+ *
+ * @note This could be used to identify connected TCP from UDP sockets.
+ *
+ * \param fd Socket.
+ *
+ * \return true if connected
+ */
+int net_is_connected(int fd);
 
 #endif // _KNOTD_NET_H_
 
-- 
GitLab