Analyzed the code and the match was happening anyhow because the case for match last part of "Reason:" is having IF conditions to cover the last three bytes, instead of the full 4 bytes value - inside parser/case_reas.h:

    if ((LOWER_DWORD(val)&0x00ffffff) ==\
                (_on1_&0x00ffffff)){    \
            hdr->type = HDR_REASON_T;   \
            hdr->name.len = 6;          \
            return (p+3);               \
    }

I am going to merge manually, to adjust the commit message. Also, I will push some other patches to make the use of parse_hname2() safer for fixups and parsing when only the header name is in the input buffer.

Given that the header name parsing became again actual, I may revive my plans to rework it with a better approach.


Reply to this email directly or view it on GitHub.