src/httpd.c:95:
rc = http_config(httpd, config);
if (rc) {
wtof("HTTPD404E Errors occured processing %s", config ? config : "(null)");
config comes from the PARM= string, but http_config() has ignored it since
the Parmlib migration:
(void)member; /* CONFIG= parm ignored -- we always read DD:HTTPPRM */
So the one message an operator gets naming what failed to process names
nothing. Observed while testing #164 — every fatal config error ends with:
HTTPD420E Route authorization policy incomplete -- HTTPD will not start
HTTPD404E Errors occured processing (null)
It is not misleading in isolation (the messages above it name the offending
route or the bind failure), but it is dead text where the useful fact belongs.
The real identity of the configuration is the HTTPPRM DD, and the STC PROC
makes it a startup choice:
//HTTPD PROC M=HTTPPRM0,
// D='SYS2.PARMLIB'
//HTTPPRM DD DSN=&D(&M),DISP=SHR,FREE=CLOSE
S HTTPD,M=HTTPPRM1 is a documented way to start, so "which member did this
server just fail on" is a question an operator can really have — and the answer
is knowable: the DD's DSN and member can be read from the JFCB (RDJFCB) or
fldata() on the open FILE.
Options, in ascending order of effort:
- Drop the operand:
HTTPD404E Errors occured processing the configuration.
- Name the DD:
... processing DD:HTTPPRM.
- Name the actual member:
... processing SYS2.PARMLIB(HTTPPRM0) — the useful
one, and it would also make the successful startup path worth a matching
HTTPDnnnI naming the member that was read.
Also worth deciding whether the CONFIG= PARM should be removed outright or
made to select the member, since today it is accepted and silently ignored.
src/httpd.c:95:configcomes from the PARM= string, buthttp_config()has ignored it sincethe Parmlib migration:
So the one message an operator gets naming what failed to process names
nothing. Observed while testing #164 — every fatal config error ends with:
It is not misleading in isolation (the messages above it name the offending
route or the bind failure), but it is dead text where the useful fact belongs.
The real identity of the configuration is the
HTTPPRMDD, and the STC PROCmakes it a startup choice:
S HTTPD,M=HTTPPRM1is a documented way to start, so "which member did thisserver just fail on" is a question an operator can really have — and the answer
is knowable: the DD's DSN and member can be read from the JFCB (RDJFCB) or
fldata()on the openFILE.Options, in ascending order of effort:
HTTPD404E Errors occured processing the configuration.... processing DD:HTTPPRM.... processing SYS2.PARMLIB(HTTPPRM0)— the usefulone, and it would also make the successful startup path worth a matching
HTTPDnnnInaming the member that was read.Also worth deciding whether the
CONFIG=PARM should be removed outright ormade to select the member, since today it is accepted and silently ignored.