Itxaron CONNECT ondorengo lerro hutsa
Irakurri HTTP/1 CONNECT erantzun osoa socket-a TLS-ri eman baino lehen, egoera-lerroa lehenengo iristen bada ere.
Bezeroak 200 Connection Established ikusten du, TLS abiarazten du eta TLS erregistro bat egon behar lukeen lekuan zentzugabekeriaz ohartarazten du. Bilatu amaitu gabeko HTTP erantzun bat helmugako zifratze-ezarpenak erruduntzat jo aurretik.
HTTP/1 CONNECT trukean, egoera-lerroa erantzunaren hasiera soilik da. Ondoren goiburu-eremuak etor daitezke. Goiburu-atala amaitzen duen lerro hutsak tunelera igarotzea markatzen du CONNECT erantzun arrakastatsuaren ondoren.
HTTP/1.1 200 Connection Established\r\n
Proxy-Agent: example\r\n
\r\n
Byte horiek irakurketa bakarrean, hainbat irakurketan edo ondorengo byteak ere badituen irakurketa batean irits daitezke. TCPk ez ditu zerbitzariaren idazketa-mugak gordetzen.
Bihurtu entregatzea parser egoera esplizitu
- Bildu eta aztertu egoera-lerroa. Erabili zenbakizko egoera, ez ingelesezko arrazoi-esaldi zehatza.
- Jarraitu goiburu-atalaren amaierako marka osoa iritsi arte. Egoera-lerro arrakastatsuak ez ditu gainerako eremuak desagerrarazten.
- CONNECT erantzun arrakastatsuan, hartu amaierako markaren ondorengo bytea tunel-datuen hasieratzat. Beste erantzunetan, jarraitu HTTP erantzunaren eta autentifikazioaren tratamendu egokia.
- Eraman konexioa eta kontsumitu gabeko byteak hurrengo protokoloak onartzen duen I/O interfaze bufferatuaren bidez.
Azken urratsa garrantzitsua da mugatzaileraren bilaketa ona izan arren. Irakurgailu bufferatuak parser-ak eskatu baino socket gehiago kontsumitu dezake. TLS socket biluzian abiaraztea irakurgailu hori baztertuz byteak irakurgailuaren buffer pribatuan harrapatuta utz ditzake.
Erabili ezarpen-epea eta goiburu-tamainaren muga. Amaierako marka baino lehen EOF proxy erantzun osatugabea da, ez betiko itxaroteko edo hala ere TLS probatzeko gonbidapena.
Pentsatu hainbat muga
Imajinatu Proxy-Agent: ondoren amaitzen den irakurketa bat. Parser-ak HTTP goiburu-byte gehiago behar ditu oraindik. Imajinatu azken CRLF sekuentziaren erdian amaitzen den beste bat. Hori oraindik ez da goiburu-atal osoa. Orain imajinatu goiburu-atal arrakastatsu oso bat, buffer berean tunel-byteak jarraituz: byte gehigarri horiek entregatzea gainditu behar dute.
407 beste emaitza bat da. Autentifikazio-tratamendua behar du; inoiz ireki ez zen tunel batera TLS ClientHello bidaltzeko baimenik ematen ez du.
Lehenetsi mantendutako konektore bat, eskuko keinua inplementatzea zeregina ez bada. Muga hau hemen erakutsitako HTTP/1 trukearena da. HTTP/2 proxy-ak CONNECT erreten batean darama, marko desberdinekin.