Skip to content

v1.2.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 09:32
· 216 commits to main since this release

FTPD 1.2.0 moves FTPD to LIBC/370 (libc370) 2.10.3 and CC/370 (cc370) 1.6.1, and fixes an upload that reported success for a member that was never stored. The port to libc370 2.10.3 required that fix. With the earlier C library, a member upload that ran out of space in a PDS ended in an ABEND SD37: FTPD answered 552, and the old member survived. With 2.10.3 the same condition comes back as an error code at close, and without the fix the port alone would have answered 250 Transfer completed successfully for every such upload. For a system running 1.1.0 this is a drop-in: the same data sets, the same procedure, the same APF entry and the same FTPDPRM0. Stop the server, run the install job, start it again. Built against libc370 2.10.3 and libufs from UFSD 1.4.0. The FMID is TFTP120 and it deletes TFTP110.

Read this first

  • Coming from 1.1.0: /P FTPD, run the install job, /S FTPD. Skip the allocation job, because the data sets already exist.
  • Coming from 1.0.x: install 1.1.0 first (v1.1.0, section 2b of the guide), then 1.2.0. TFTP120 deletes only TFTP110. On a system where TFTP100 still owns the load module, the 1.2.0 install copies nothing and still ends RC 00.
  • On an upgrade from 1.1.0 the APPLY ends COND CODE 0004 on HMA2461 SYSMOD TFTP110 NOT FOUND ON SMPSCDS LIBRARY. That is expected, and the install job's ACCEPT is gated to run through it. A fresh install ends RC 00.
  • Verify by the banner and the member list, not by the condition codes. After the restart FTPD005I must read LIBC370 2.10.3 (A790DC4); 1.1.0 showed LIBC370 V1.0.6. FTPD.LINKLIB must hold FTPD.
  • A member upload into a full PDS now answers 552, and the member is not stored. If you replaced an existing member, its old content is still there.
  • LIST/NLST of a PDS under a storage shortage answers 451 Insufficient storage instead of 550 No data sets found. This path was not reproduced on MVS: a storage shortage in the middle of a directory read cannot be triggered on purpose.

Fixed

before now
a member upload into a full PDS (#170) with the C library change and without this fix: 250 Transfer completed successfully, member not stored 552, member not in the directory
replacing a member that no longer fits (#170) the same 250 552; the old member keeps its content
LIST/NLST of a PDS when storage runs out (#158) 550 No data sets found, as if the PDS were empty 451 Insufficient storage to list <dsn>
three log messages (#155) each dash logged as three junk characters a plain hyphen

Measured on MVS with a small PDS (FB 80, BLKSIZE 19040, two tracks, five directory blocks), filled with 47-record members until one fails:

build C library result
the previous development build LIBC/370 2.6.3 4/4: ABEND SD37 in close, answered 552, old member kept
the port without the fix LIBC/370 2.10.3 59 uploads after the 21st answered 250, none of them stored
1.2.0 LIBC/370 2.10.3 4/4, twice: 552, failed member not in the directory, old member kept with all 47 records

The test is section 8 of test/test_ftpd.sh.

1.1.0 1.2.0
FMID TFTP110 TFTP120, deletes TFTP110
Libraries FTPD.LINKLIB, … unchanged
C library LIBC/370 1.0.6 LIBC/370 2.10.3, CC/370 1.6.1
libufs (UFSD) 1.3.0 1.4.0

UFSD stays optional at runtime. UFSD 1.4.0 changed only its C library; its server and the libufs interface are the same as in 1.3.0.

Install

Download ftpd-1.2.0-dist.zip (or .tar.gz); the guide and every file you need are inside:

README.md the installation guide
ftpd-1.2.0-load.xmit the FTPD load module
ftpd-1.2.0-samplib.xmit the STC procedure and the configuration pattern
ftpd-1.2.0-alloc.jcl allocate the data sets: first install only
ftpd-1.2.0-inst.jcl receive, apply, accept

Upload the two XMITs in binary. Then submit the install job, after the allocation job on a first install. The only thing to edit is the two data set names you uploaded to.

The documentation in the repository:

Changes

  • Port to LIBC/370 2.x (#157), now 2.10.3 with CC/370 1.6.1 (#169)
  • STOR reports a failed close as a failed transfer (#170)
  • LIST/NLST tell a storage shortage from an empty PDS (#158)
  • Log messages without characters EBCDIC cannot encode (#155)
  • Build: mbt 3 (#167)