Repository navigation
v1.2.0
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.
TFTP120deletes onlyTFTP110. On a system whereTFTP100still owns the load module, the 1.2.0 install copies nothing and still endsRC 00. - On an upgrade from 1.1.0 the
APPLYendsCOND CODE 0004onHMA2461 SYSMOD TFTP110 NOT FOUND ON SMPSCDS LIBRARY. That is expected, and the install job'sACCEPTis gated to run through it. A fresh install endsRC 00. - Verify by the banner and the member list, not by the condition codes. After the restart
FTPD005Imust readLIBC370 2.10.3 (A790DC4); 1.1.0 showedLIBC370 V1.0.6.FTPD.LINKLIBmust holdFTPD. - 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 storageinstead of550 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:
- Installation guide, the same file as the package's
README.md - Removing FTPD
- RAKF setup