Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 18 Aug 2000 05:51:33 +0900 (JST)
From:      Hajimu UMEMOTO <ume@mahoroba.org>
To:        archie@whistle.com
Cc:        freebsd-current@freebsd.org
Subject:   Re: 5.0 snapshot install problem
Message-ID:  <20000818.055133.48522708.ume@mahoroba.org>
In-Reply-To: <200008172029.NAA96024@bubba.whistle.com>
References:  <20000818.023721.115915969.ume@mahoroba.org> <200008172029.NAA96024@bubba.whistle.com>

next in thread | previous in thread | raw e-mail | index | archive | help
>>>>> On Thu, 17 Aug 2000 13:29:27 -0700 (PDT)
>>>>> Archie Cobbs <archie@whistle.com> said:

archie> Hajimu UMEMOTO writes:
> > It seems -CURRENT's libftpio.c always set passive flag according to
> > environment variable FTP_PASSIVE_MODE.  Then, PASV/PORT selection
> > obeys only FTP_PASSIVE_MODE and direction of sysinstall is ignored.
> > Does this patch fix your problem?
> 
> archie> Don't know, because I'd have to create new install floppies first..
> 
> archie> But I don't think this patch would fix things.. I don't see any
> archie> logical flaw there. ftpPassive() just checks that the toggle is
> archie> set to the right value -- it doesn't necessarily do anything.
> 
> After checking, FTP_PASSIVE_MODE is tested by check_passive() every
> fetGET() call.  check_passive() calls ftpPassive().  So,
> ftp->is_passive is resetted.

archie> OK, now I think I see part of the problem.. check out ftpPassive():

	...snip...

archie> This is completely wrong.  The comment "passive mode is a toggle"
archie> is incorrect.  It's correct when you're talking about ftp(1)'s
archie> "pass" command, but NOT true in the FTP protocol.  Therefore
archie> ftpPassive() should not be issuing any PASV command at all; the
archie> sending of the PASV or PORT command (which applies per-transfer)
archie> is handled by ftp_file_op() anyway (so the one sent by ftpPassive()
archie> ends up having no effect anyway).

archie> What must be happening is that sysinstall is actually setting
archie> up an active mode connection, and the PASV is simply the extraneous
archie> one emitted by ftpPassive().

Yes, I agree with it.  However, it doesn't solve your problem.

archie> But why is sysinstall going to active mode? I *know* FTP passive
archie> was selected..

This is just because ftpPassive() is called from ftpGet().

	ftpGet()
		check_passive()
			ftpPassive()

Further more, if FTP_PASSIVE_MODE is not set, check_passive() calls
ftpPassive(fp, 0).
First, sysinstall calls ftpPassive() to intend to use PASV.  Then,
ftp->is_passive is reset to 1.
Next, ftpGet() calls ftpPassive() according to the setting of
FTP_PASSIVE_MODE.  In installer, FTP_PASSIVE_MODE is not set. Then,
ftp->is_passive is reset to 0 by ftpPassive() toggle.
So, ftp_file_op() issues PORT.

--
Hajimu UMEMOTO @ Internet Mutual Aid Society Yokohama, Japan
ume@mahoroba.org  ume@bisd.hitachi.co.jp  ume@FreeBSD.org
http://www.imasy.org/~ume/


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20000818.055133.48522708.ume>