Note: This is a beta release of Red Hat Bugzilla 5.0. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Also email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback here.

Bug 304

Summary: ftp's mget doesn't work if runique is enabled
Product: [Retired] Red Hat Linux Reporter: Red Hat Bugzilla <bugzilla>
Component: ftpAssignee: Cristian Gafton <gafton>
Status: CLOSED CURRENTRELEASE QA Contact:
Severity: low Docs Contact:
Priority: low    
Version: 5.2   
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 1998-12-15 23:17:04 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description Red Hat Bugzilla 1998-12-04 21:13:18 UTC
The ftp client has a bug. `mget'' doesn't get any files if
``runique'' is enabled. The problem is inconsistent naming
of temporary files which contain the list of remote files to
get.

Example. Try this .netrc file on a directory that contains
files:

  default login anonymous password user@host
  macdef init
  prompt
  runique
  cd /pub/files
  mget *
  quit

Standard output will be something like this:

  ...
  230 Guest login ok, access restrictions apply.
  prompt
  Interactive mode off.
  runique
  Receive unique on.
  cd /pub/files
  250 CWD command successful.
  mget *
  quit
  221 Goodbye.

Note that ``mget *'' doesn't retrieve any files at all.

More low-level description of the bug. A tmp file name is
created in source file cmds.c, function remglob(), variable
`temp''. In function recvrequest() a unique file name is
created in variable `local'' from the argument char pointer
in `temp''. In other words, gunique() in file ftp.c is
called and appends a .1 (,.2, and so on) to a path. The
output from FTP protocol command NLST is stored in file
/tmp/ftpa*.1. But remglob() tries to load the file contents
from the shorter name (/tmp/ftpa) that has not postfix. So
the mget() function doesn't reach its download loop and
exits without getting any file.

Whoever is more familiar with the code should have no
problems fixing this.

Comment 1 Red Hat Bugzilla 1998-12-15 23:17:59 UTC
This is fixed in the devel tree; it will appear in the next rawhide
release.