Voltooi het parsen van CONNECT-headers voordat de clientstream wordt doorgegeven
Een proxyserver die pas na de verzoekregel doorgeeft, kan zijn eigen Host-header naar de TLS-poort van de bestemming sturen.
Na de CONNECT-verzoekregel behoren deze bytes nog steeds bij de proxy:
CONNECT service.example:443 HTTP/1.1\r\n
Host: service.example:443\r\n
User-Agent: example-client\r\n
\r\nAls je Host of User-Agent naar poort 443 doorgeeft, krijgt de bestemming leesbare tekstheaders waar zij TLS verwacht. Die fout kan optreden voordat de keuze van een cipher überhaupt telt.
- Lees en parse tot de header-terminator met de lege regel, binnen een insteltijd en een limiet op headergrootte.
- Pas de proxy-authenticatie en het bestemmingsbeleid toe.
- Breng de goedgekeurde doelverbinding tot stand.
- Stuur het geslaagde CONNECT-antwoord en ga in tunnelmodus.
Bewaar gebufferde bytes na de grens voor de juiste volgende toestand. Gooi ze niet weg en behandel de verzoekheaders van de proxy niet als het latere verzoek van de website.
De client heeft een overeenkomstige plicht aan de antwoordkant: voltooi het lezen van het geslaagde CONNECT-antwoord voordat het getunnelde protocol begint. Beide uiteinden moeten het eens zijn over de grens waar de stream van rol verandert.