Skip to content

HTTPD404E names the ignored CONFIG= parm, so every fatal config error ends with "processing (null)" #166

Description

@mgrossmann

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:

  1. Drop the operand: HTTPD404E Errors occured processing the configuration.
  2. Name the DD: ... processing DD:HTTPPRM.
  3. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions