>>>>> On Thu, 17 Aug 2000 13:29:27 -0700 (PDT)
>>>>> Archie Cobbs <[EMAIL PROTECTED]> 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
[EMAIL PROTECTED] [EMAIL PROTECTED] [EMAIL PROTECTED]
http://www.imasy.org/~ume/
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message