diff options
Diffstat (limited to 'networking/tcpudp.c')
-rw-r--r-- | networking/tcpudp.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/networking/tcpudp.c b/networking/tcpudp.c index 2feb63a01..a90e3f80a 100644 --- a/networking/tcpudp.c +++ b/networking/tcpudp.c | |||
@@ -127,6 +127,7 @@ struct globals { | |||
127 | unsigned cur_per_host; | 127 | unsigned cur_per_host; |
128 | unsigned cnum; | 128 | unsigned cnum; |
129 | unsigned cmax; | 129 | unsigned cmax; |
130 | struct hcc *cc; | ||
130 | char **env_cur; | 131 | char **env_cur; |
131 | char *env_var[1]; /* actually bigger */ | 132 | char *env_var[1]; /* actually bigger */ |
132 | } FIX_ALIASING; | 133 | } FIX_ALIASING; |
@@ -229,7 +230,7 @@ static void sig_child_handler(int sig UNUSED_PARAM) | |||
229 | 230 | ||
230 | while ((pid = wait_any_nohang(&wstat)) > 0) { | 231 | while ((pid = wait_any_nohang(&wstat)) > 0) { |
231 | if (max_per_host) | 232 | if (max_per_host) |
232 | ipsvd_perhost_remove(pid); | 233 | ipsvd_perhost_remove(G.cc, pid); |
233 | if (cnum) | 234 | if (cnum) |
234 | cnum--; | 235 | cnum--; |
235 | if (verbose) | 236 | if (verbose) |
@@ -347,7 +348,7 @@ int tcpudpsvd_main(int argc UNUSED_PARAM, char **argv) | |||
347 | signal(SIGPIPE, SIG_IGN); | 348 | signal(SIGPIPE, SIG_IGN); |
348 | 349 | ||
349 | if (max_per_host) | 350 | if (max_per_host) |
350 | ipsvd_perhost_init(cmax); | 351 | G.cc = ipsvd_perhost_init(cmax); |
351 | 352 | ||
352 | local_port = bb_lookup_port(argv[1], tcp ? "tcp" : "udp", 0); | 353 | local_port = bb_lookup_port(argv[1], tcp ? "tcp" : "udp", 0); |
353 | lsa = xhost2sockaddr(argv[0], local_port); | 354 | lsa = xhost2sockaddr(argv[0], local_port); |
@@ -422,7 +423,7 @@ int tcpudpsvd_main(int argc UNUSED_PARAM, char **argv) | |||
422 | /* Drop connection immediately if cur_per_host > max_per_host | 423 | /* Drop connection immediately if cur_per_host > max_per_host |
423 | * (minimizing load under SYN flood) */ | 424 | * (minimizing load under SYN flood) */ |
424 | remote_addr = xmalloc_sockaddr2dotted_noport(&remote.u.sa); | 425 | remote_addr = xmalloc_sockaddr2dotted_noport(&remote.u.sa); |
425 | cur_per_host = ipsvd_perhost_add(remote_addr, max_per_host, &hccp); | 426 | cur_per_host = ipsvd_perhost_add(G.cc, remote_addr, max_per_host, &hccp); |
426 | if (cur_per_host > max_per_host) { | 427 | if (cur_per_host > max_per_host) { |
427 | /* ipsvd_perhost_add detected that max is exceeded | 428 | /* ipsvd_perhost_add detected that max is exceeded |
428 | * (and did not store ip in connection table) */ | 429 | * (and did not store ip in connection table) */ |