aboutsummaryrefslogtreecommitdiff
path: root/libexec/ftpd
diff options
context:
space:
mode:
authorYaroslav Tykhiy <ytykhiy@gmail.com>2002-07-24 16:11:34 +0000
committerYaroslav Tykhiy <ytykhiy@gmail.com>2002-07-24 16:11:34 +0000
commit8af7c9a3c047254e6f2f8121ca230e09b11fea7f (patch)
treeefc4cf9ac02aae3eb7a6ad0491702b401802fd5f /libexec/ftpd
parentadf721d1cb2c49e20e79d43e8d1339d8348661df (diff)
Notes
Diffstat (limited to 'libexec/ftpd')
-rw-r--r--libexec/ftpd/ftpd.c26
1 files changed, 16 insertions, 10 deletions
diff --git a/libexec/ftpd/ftpd.c b/libexec/ftpd/ftpd.c
index c7e56e2e146d..7efa29a9ebc2 100644
--- a/libexec/ftpd/ftpd.c
+++ b/libexec/ftpd/ftpd.c
@@ -2473,7 +2473,7 @@ myoob(void)
void
passive(void)
{
- int len;
+ int len, on;
char *p, *a;
if (pdata >= 0) /* close old port if one set */
@@ -2484,13 +2484,16 @@ passive(void)
perror_reply(425, "Can't open passive connection");
return;
}
+ on = 1;
+ if (setsockopt(pdata, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) < 0)
+ syslog(LOG_WARNING, "pdata setsockopt (SO_REUSEADDR): %m");
(void) seteuid((uid_t)0);
#ifdef IP_PORTRANGE
if (ctrl_addr.su_family == AF_INET) {
- int on = restricted_data_ports ? IP_PORTRANGE_HIGH
- : IP_PORTRANGE_DEFAULT;
+ on = restricted_data_ports ? IP_PORTRANGE_HIGH
+ : IP_PORTRANGE_DEFAULT;
if (setsockopt(pdata, IPPROTO_IP, IP_PORTRANGE,
&on, sizeof(on)) < 0)
@@ -2499,8 +2502,8 @@ passive(void)
#endif
#ifdef IPV6_PORTRANGE
if (ctrl_addr.su_family == AF_INET6) {
- int on = restricted_data_ports ? IPV6_PORTRANGE_HIGH
- : IPV6_PORTRANGE_DEFAULT;
+ on = restricted_data_ports ? IPV6_PORTRANGE_HIGH
+ : IPV6_PORTRANGE_DEFAULT;
if (setsockopt(pdata, IPPROTO_IPV6, IPV6_PORTRANGE,
&on, sizeof(on)) < 0)
@@ -2553,7 +2556,7 @@ pasv_error:
void
long_passive(char *cmd, int pf)
{
- int len;
+ int len, on;
char *p, *a;
if (pdata >= 0) /* close old port if one set */
@@ -2591,6 +2594,9 @@ long_passive(char *cmd, int pf)
perror_reply(425, "Can't open passive connection");
return;
}
+ on = 1;
+ if (setsockopt(pdata, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) < 0)
+ syslog(LOG_WARNING, "pdata setsockopt (SO_REUSEADDR): %m");
(void) seteuid((uid_t)0);
@@ -2600,8 +2606,8 @@ long_passive(char *cmd, int pf)
#ifdef IP_PORTRANGE
if (ctrl_addr.su_family == AF_INET) {
- int on = restricted_data_ports ? IP_PORTRANGE_HIGH
- : IP_PORTRANGE_DEFAULT;
+ on = restricted_data_ports ? IP_PORTRANGE_HIGH
+ : IP_PORTRANGE_DEFAULT;
if (setsockopt(pdata, IPPROTO_IP, IP_PORTRANGE,
&on, sizeof(on)) < 0)
@@ -2610,8 +2616,8 @@ long_passive(char *cmd, int pf)
#endif
#ifdef IPV6_PORTRANGE
if (ctrl_addr.su_family == AF_INET6) {
- int on = restricted_data_ports ? IPV6_PORTRANGE_HIGH
- : IPV6_PORTRANGE_DEFAULT;
+ on = restricted_data_ports ? IPV6_PORTRANGE_HIGH
+ : IPV6_PORTRANGE_DEFAULT;
if (setsockopt(pdata, IPPROTO_IPV6, IPV6_PORTRANGE,
&on, sizeof(on)) < 0)