Parsers

Glyph11 provides two HTTP/1.1 header parsers with different security/performance tradeoffs.

Parser Comparison

FeatureHardenedParserFlexibleParser
NamespaceGlyph11.Parser.HardenedGlyph11.Parser.FlexibleParser
ValidationRFC 9110/9112 compliantMinimal
Resource limitsConfigurable via ParserLimitsNone
Method validationToken characters onlyNone
Header name validationToken characters onlyNone
Header value validationField-value characters onlyNone
Bare LF rejectionYesNo
Obs-fold rejectionYesNo
HTTP versionFormat validated (HTTP/X.Y)Not validated
Malformed linesThrows HttpParseExceptionSilently skipped
Multi-segmentAuto-linearizes to ROM pathAuto-linearizes to ROM path
SIMD-acceleratedYes (SearchValues<byte>)N/A

Choosing a Parser

Use HardenedParser (recommended) when:

  • Parsing untrusted input from the network
  • Building internet-facing HTTP servers
  • Security compliance is required

Use FlexibleParser when:

  • Input is pre-validated or from a trusted source
  • Maximum throughput is the priority
  • Operating behind a hardened reverse proxy

Performance

The HardenedParser adds ~1.4-1.6x overhead over FlexibleParser for full RFC compliance. Validation uses SIMD-accelerated SearchValues<byte> and IndexOfAnyExcept to minimize the cost.

PayloadHardenedParser (ROM)FlexibleParser (ROM)Overhead
~80B93.5 ns68.8 ns1.36x
1KB213.0 ns142.3 ns1.50x
4KB675.8 ns415.2 ns1.63x
Both parsers validate HTTP syntax. For semantic checks (request smuggling, path traversal), use RequestSemantics after parsing.