From owner-freebsd-bugs Fri Apr 12 4:10:15 2002 Delivered-To: freebsd-bugs@hub.freebsd.org Received: from freefall.freebsd.org (freefall.FreeBSD.org [216.136.204.21]) by hub.freebsd.org (Postfix) with ESMTP id A8E3837B405 for ; Fri, 12 Apr 2002 04:10:03 -0700 (PDT) Received: (from gnats@localhost) by freefall.freebsd.org (8.11.6/8.11.6) id g3CBA3Q34259; Fri, 12 Apr 2002 04:10:03 -0700 (PDT) (envelope-from gnats) Date: Fri, 12 Apr 2002 04:10:03 -0700 (PDT) Message-Id: <200204121110.g3CBA3Q34259@freefall.freebsd.org> To: freebsd-bugs@FreeBSD.org Cc: From: Maxim Konovalov Subject: Re: bin/36955: Stock ftpd does not reuse ports in passive mode andfails Reply-To: Maxim Konovalov Sender: owner-freebsd-bugs@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.org The following reply was made to PR bin/36955; it has been noted by GNATS. From: Maxim Konovalov To: Eugene Grosbein Cc: bug-followup@freebsd.org Subject: Re: bin/36955: Stock ftpd does not reuse ports in passive mode andfails Date: Fri, 12 Apr 2002 15:03:54 +0400 (MSD) Eugene, The patch below solves the problem but I am not sure yet is it good idea or not.. Index: ftpd.c =================================================================== RCS file: /home/ncvs/src/libexec/ftpd/ftpd.c,v retrieving revision 1.99 diff -u -r1.99 ftpd.c --- ftpd.c 25 Feb 2002 16:39:34 -0000 1.99 +++ ftpd.c 12 Apr 2002 10:53:00 -0000 @@ -2415,7 +2415,7 @@ void passive(void) { - int len; + int len, on; char *p, *a; if (pdata >= 0) /* close old port if one set */ @@ -2426,12 +2426,15 @@ perror_reply(425, "Can't open passive connection"); return; } - + on = 1; + if (setsockopt(pdata, SOL_SOCKET, SO_REUSEADDR, + (char *)&on, sizeof(on)) < 0) + syslog(LOG_ERR, "passive data connection setsockopt: %m"); (void) seteuid((uid_t)0); #ifdef IP_PORTRANGE if (ctrl_addr.su_family == AF_INET) { - int on = restricted_data_ports ? IP_PORTRANGE_HIGH + on = restricted_data_ports ? IP_PORTRANGE_HIGH : IP_PORTRANGE_DEFAULT; if (setsockopt(pdata, IPPROTO_IP, IP_PORTRANGE, @@ -2441,7 +2444,7 @@ #endif #ifdef IPV6_PORTRANGE if (ctrl_addr.su_family == AF_INET6) { - int on = restricted_data_ports ? IPV6_PORTRANGE_HIGH + on = restricted_data_ports ? IPV6_PORTRANGE_HIGH : IPV6_PORTRANGE_DEFAULT; if (setsockopt(pdata, IPPROTO_IPV6, IPV6_PORTRANGE, %%% -- Maxim Konovalov, MAcomnet, Internet Dept., system engineer phone: +7 (095) 796-9079, mailto:maxim@macomnet.ru To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message