diff --git a/networking/tcpudp.c b/networking/tcpudp.c
index 2feb63a..a90e3f8 100644
--- a/networking/tcpudp.c
+++ b/networking/tcpudp.c
@@ -127,6 +127,7 @@
 	unsigned cur_per_host;
 	unsigned cnum;
 	unsigned cmax;
+	struct hcc *cc;
 	char **env_cur;
 	char *env_var[1]; /* actually bigger */
 } FIX_ALIASING;
@@ -229,7 +230,7 @@
 
 	while ((pid = wait_any_nohang(&wstat)) > 0) {
 		if (max_per_host)
-			ipsvd_perhost_remove(pid);
+			ipsvd_perhost_remove(G.cc, pid);
 		if (cnum)
 			cnum--;
 		if (verbose)
@@ -347,7 +348,7 @@
 	signal(SIGPIPE, SIG_IGN);
 
 	if (max_per_host)
-		ipsvd_perhost_init(cmax);
+		G.cc = ipsvd_perhost_init(cmax);
 
 	local_port = bb_lookup_port(argv[1], tcp ? "tcp" : "udp", 0);
 	lsa = xhost2sockaddr(argv[0], local_port);
@@ -422,7 +423,7 @@
 		/* Drop connection immediately if cur_per_host > max_per_host
 		 * (minimizing load under SYN flood) */
 		remote_addr = xmalloc_sockaddr2dotted_noport(&remote.u.sa);
-		cur_per_host = ipsvd_perhost_add(remote_addr, max_per_host, &hccp);
+		cur_per_host = ipsvd_perhost_add(G.cc, remote_addr, max_per_host, &hccp);
 		if (cur_per_host > max_per_host) {
 			/* ipsvd_perhost_add detected that max is exceeded
 			 * (and did not store ip in connection table) */
diff --git a/networking/tcpudp_perhost.c b/networking/tcpudp_perhost.c
index 1054108..2643f8d 100644
--- a/networking/tcpudp_perhost.c
+++ b/networking/tcpudp_perhost.c
@@ -10,25 +10,21 @@
 #include "libbb.h"
 #include "tcpudp_perhost.h"
 
-static struct hcc *cc;
-static unsigned cclen;
-
-/* to be optimized */
-
-void ipsvd_perhost_init(unsigned c)
+struct hcc* FAST_FUNC ipsvd_perhost_init(unsigned c)
 {
 //	free(cc);
-	cc = xzalloc(c * sizeof(*cc));
-	cclen = c;
+	struct hcc *cc = xzalloc((c + 1) * sizeof(*cc));
+	cc[c].pid = -1; /* "end" marker */
+	return cc;
 }
 
-unsigned ipsvd_perhost_add(char *ip, unsigned maxconn, struct hcc **hccpp)
+unsigned FAST_FUNC ipsvd_perhost_add(struct hcc *cc, char *ip, unsigned maxconn, struct hcc **hccpp)
 {
 	unsigned i;
 	unsigned conn = 1;
 	int freepos = -1;
 
-	for (i = 0; i < cclen; ++i) {
+	for (i = 0; cc[i].pid >= 0; ++i) {
 		if (!cc[i].ip) {
 			freepos = i;
 			continue;
@@ -46,10 +42,10 @@
 	return conn;
 }
 
-void ipsvd_perhost_remove(int pid)
+void FAST_FUNC ipsvd_perhost_remove(struct hcc *cc, int pid)
 {
 	unsigned i;
-	for (i = 0; i < cclen; ++i) {
+	for (i = 0; cc[i].pid >= 0; ++i) {
 		if (cc[i].pid == pid) {
 			free(cc[i].ip);
 			cc[i].ip = NULL;
@@ -59,7 +55,7 @@
 	}
 }
 
-//void ipsvd_perhost_free(void)
+//void ipsvd_perhost_free(struct hcc *cc)
 //{
 //	free(cc);
 //}
diff --git a/networking/tcpudp_perhost.h b/networking/tcpudp_perhost.h
index 3e57576..3b14d9a 100644
--- a/networking/tcpudp_perhost.h
+++ b/networking/tcpudp_perhost.h
@@ -14,7 +14,7 @@
 	int pid;
 };
 
-void ipsvd_perhost_init(unsigned);
+struct hcc* FAST_FUNC ipsvd_perhost_init(unsigned);
 
 /* Returns number of already opened connects to this ips, including this one.
  * ip should be a malloc'ed ptr.
@@ -22,12 +22,12 @@
  * and pointer to table entry if stored in *hccpp
  * (useful for storing pid later).
  * Else ip is NOT inserted (you must take care of it - free() etc) */
-unsigned ipsvd_perhost_add(char *ip, unsigned maxconn, struct hcc **hccpp);
+unsigned FAST_FUNC ipsvd_perhost_add(struct hcc *cc, char *ip, unsigned maxconn, struct hcc **hccpp);
 
 /* Finds and frees element with pid */
-void ipsvd_perhost_remove(int pid);
+void FAST_FUNC ipsvd_perhost_remove(struct hcc *cc, int pid);
 
 //unsigned ipsvd_perhost_setpid(int pid);
-//void ipsvd_perhost_free(void);
+//void ipsvd_perhost_free(struct hcc *cc);
 
 POP_SAVED_FUNCTION_VISIBILITY
