Waart op déi eidel Linn no CONNECT
Liest déi komplett HTTP/1 CONNECT Äntwert, ier Dir de Socket un TLS iwwergitt, och wann d'Statuslinn als éischt kënnt.
De Client gesäit 200 Connection Established, fänkt TLS un a mellt direkt Kåsch, wou eng TLS-Record sollte sinn. Sicht no enger onfäerdeger HTTP-Äntwert, ier Dir d'Cipher-Astellunge vum Zil beschëllegt.
Bei engem HTTP/1 CONNECT-Austausch ass d'Statuslinn nëmmen den Ufank vun der Äntwert. Header-Felder kënnen duerno kommen. Déi eidel Linn, déi den Header-Abschnitt ofschléisst, markéiert den Iwwergang an den Tunnel no enger erfollegräicher CONNECT-Äntwert.
HTTP/1.1 200 Connection Established\r\n
Proxy-Agent: example\r\n
\r\n
Déi Bytes kënnen an engem Lies kommen, a méieren Lieser, oder an engem Lies, dat och déi nächst Bytes enthält. TCP behält d'Schreifgrenze vum Server net.
Maacht d'Iwwergab en explizitten Zoustaad vum Parser
- Sammelt a parst d'Statuslinn. Benotzt de numeresche Status anstatt eng exakt englesch Grond-Uerdnung.
- Fuert weider, bis den kompletten Terminator vum Header-Abschnitt ukomm ass. Eng erfollegräich Statuslinn léisst déi reschtlech Felder net verschwannen.
- Bei enger erfollegräicher CONNECT-Äntwert ass de Byte direkt no deem Terminator den Ufank vun den Tunneldaten. Bei aneren Äntwerten befollegt déi entspriechend HTTP-Äntwert- an Authentifikatiounsbehandlung.
- Gitt d'Verbindung an all onbenotzte Byte iwwer déi gepufferte I/O-Schnittstell weider, déi dat nächst Protokoll ënnerstëtzt.
De leschte Schrëtt ass wichteg och mat enger gudder Sich no engem Trennzeechen. En gepufferte Lieser kann méi vum Socket verbraucht hunn, wéi de Parser gefrot huet. TLS um blosse Socket starten an dee Lieser opzeginn kann Bytes am private Puffer vum Lieser stranden.
Benotzt eng Frist fir den Opbau an eng Limite fir d'Headergréisst. EOF virum Terminator ass eng onkomplett Proxy-Äntwert, keng Invitatioun fir ëmmer ze waarden oder TLS trotzdeem ze probéieren.
Denkt verschidde Grenzen duerch
Stellt Iech eng Lies vir, déi no Proxy-Agent: ophält. De Parser brauch nach méi HTTP-Header-Bytes. Stellt Iech eng aner vir, déi an der Mëtt vun der leschter CRLF-Sequenz ophält. Dat ass nach keen kompletten Header-Abschnitt. Elo stellt Iech en kompletten erfollegräichen Header-Abschnitt vir, deen duerch Tunnel-Bytes am selwechte Puffer gefollegt gëtt: déi zousätzlech Bytes mussen d'Iwwergab iwwerliewe.
407 ass en anert Resultat. Et brauch Authentifikatiounsbehandlung; et erlaabt keen TLS ClientHello an en Tunnel, deen ni opgemaach gouf.
Preferéiert en ûnnerhalenen Connector, ausser d'Handshake-Implementatioun ass d'Aufgab. Dës Grenz ass spezifesch fir den hei gewisenen HTTP/1-Austausch. En HTTP/2-Proxy dréit CONNECT op engem Stream mat enger anerer Framing.