>>>>> 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

Reply via email to