Mailing-List: contact cygwin-help@cygwin.com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner@cygwin.com Mail-Followup-To: cygwin@cygwin.com Delivered-To: mailing list cygwin@cygwin.com Date: Wed, 22 May 2002 17:42:09 +0200 From: Marcel Telka To: cygwin@cygwin.com Subject: Patch for setup-2.218.2.9 (problem with FTP) Message-ID: <20020522174209.B5582@tortuga.etc.sk> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="h31gzZEtNLTqOjlF" Content-Disposition: inline User-Agent: Mutt/1.2.5.1i --h31gzZEtNLTqOjlF Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hi. I've found little problem in the cygwin setup program (version 2.218.2.9): There is no possibility to download files from some FTP servers (like djb's publicfile ftpd http://cr.yp.to/publicfile/ftpd.html) because the setup scans for '(' in a PASV FTP reply (code 227). djb's ftpd uses this format for PASV reply: 227 =h1,h2,h3,h4,p1,p2 RFC 1123 (in section 4.1.2.6) says: The format of the 227 reply to a PASV command is not well standardized. In particular, an FTP client cannot assume that the parentheses shown on page 40 of RFC-959 will be present (and in fact, Figure 3 on page 43 omits them). Therefore, a User-FTP program that interprets the PASV reply must scan the reply for the first digit of the host and port numbers. I've considered this as bug in the setup and created patch for nio-ftp.cc file (see attachment). Please apply this patch to the sources. Thanks. Note: I'm not subscribed to cygwin@cygwin.com list. Regards. -- +-------------------------------------------+ | Marcel Telka e-mail: marcel@telka.sk | | homepage: http://telka.sk/ | | jabber: marcel@jabber.sk | +-------------------------------------------+ --h31gzZEtNLTqOjlF Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="cygwin-setup-ftp.patch" --- nio-ftp.cc.orig 2002-02-18 14:53:06.000000000 +0100 +++ nio-ftp.cc 2002-05-22 17:14:06.000000000 +0200 @@ -125,13 +125,13 @@ NetIO_FTP::NetIO_FTP (char const *Purl, return; char * - paren = strchr (last_line, '('); - if (!paren) + digit = strpbrk (last_line + 3, "0123456789"); + if (!digit) return; int i1, i2, i3, i4, p1, p2; - sscanf (paren + 1, "%d,%d,%d,%d,%d,%d", &i1, &i2, &i3, &i4, &p1, &p2); + sscanf (digit, "%d,%d,%d,%d,%d,%d", &i1, &i2, &i3, &i4, &p1, &p2); char tmp[20]; sprintf (tmp, "%d.%d.%d.%d", i1, i2, i3, i4); --h31gzZEtNLTqOjlF Content-Type: text/plain; charset=us-ascii -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Bug reporting: http://cygwin.com/bugs.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/ --h31gzZEtNLTqOjlF--