diff options
Diffstat (limited to 'ipsvd/tcpudp.c')
-rw-r--r-- | ipsvd/tcpudp.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/ipsvd/tcpudp.c b/ipsvd/tcpudp.c index cb57e598a..8b4ae88f4 100644 --- a/ipsvd/tcpudp.c +++ b/ipsvd/tcpudp.c | |||
@@ -339,16 +339,17 @@ int tcpudpsvd_main(int argc, char **argv) | |||
339 | * 1) we have to do it before fork() | 339 | * 1) we have to do it before fork() |
340 | * 2) order is important - is it right now? */ | 340 | * 2) order is important - is it right now? */ |
341 | 341 | ||
342 | /* Make plain write/send work for this socket by supplying default | 342 | /* Open new non-connected UDP socket for further clients... */ |
343 | sock = xsocket(lsa->u.sa.sa_family, SOCK_DGRAM, 0); | ||
344 | setsockopt_reuseaddr(sock); | ||
345 | /* Make plain write/send work for old socket by supplying default | ||
343 | * destination address. This also restricts incoming packets | 346 | * destination address. This also restricts incoming packets |
344 | * to ones coming from this remote IP. */ | 347 | * to ones coming from this remote IP. */ |
345 | xconnect(0, &remote.u.sa, sa_len); | 348 | xconnect(0, &remote.u.sa, sa_len); |
346 | /* hole? at this point we have no wildcard udp socket... | 349 | /* hole? at this point we have no wildcard udp socket... |
347 | * can this cause clients to get "port unreachable" icmp? | 350 | * can this cause clients to get "port unreachable" icmp? |
348 | * Yup, time window is very small, but it exists (is it?) */ | 351 | * Yup, time window is very small, but it exists (is it?) */ |
349 | /* Open new non-connected UDP socket for further clients */ | 352 | /* ..."open new socket", continued */ |
350 | sock = xsocket(lsa->u.sa.sa_family, tcp ? SOCK_STREAM : SOCK_DGRAM, 0); | ||
351 | setsockopt_reuseaddr(sock); | ||
352 | xbind(sock, &lsa->u.sa, sa_len); | 353 | xbind(sock, &lsa->u.sa, sa_len); |
353 | socket_want_pktinfo(sock); | 354 | socket_want_pktinfo(sock); |
354 | 355 | ||
@@ -377,7 +378,6 @@ int tcpudpsvd_main(int argc, char **argv) | |||
377 | goto again; | 378 | goto again; |
378 | } | 379 | } |
379 | 380 | ||
380 | |||
381 | if (pid != 0) { | 381 | if (pid != 0) { |
382 | /* parent */ | 382 | /* parent */ |
383 | cnum++; | 383 | cnum++; |
@@ -467,7 +467,7 @@ int tcpudpsvd_main(int argc, char **argv) | |||
467 | 467 | ||
468 | argv += 2; | 468 | argv += 2; |
469 | #ifdef SSLSVD | 469 | #ifdef SSLSVD |
470 | strcpy(id, utoa(pid); | 470 | strcpy(id, utoa(pid)); |
471 | ssl_io(0, argv); | 471 | ssl_io(0, argv); |
472 | #else | 472 | #else |
473 | BB_EXECVP(argv[0], argv); | 473 | BB_EXECVP(argv[0], argv); |