Majhen ovoj proxyja lahko deluje za HTTPS in se nato obesi, ko se znova uporabi za protokol, katerega strežnik spregovori prvi. Sumljiva vrstica je pogosto tista, ki čaka, da se sprejemni medpomnilnik konča z \r\n\r\n.

TCP odjemalcu da tok. En klic sprejema lahko vrne polovico vrstice stanja HTTP, celoten odgovor CONNECT ali ta odgovor takoj za temi podatki tunela. Ni nobenega zagotovila, da se branje ustavi na koncu glav.

Poiščite mejo znotraj medpomnilnika

Pri izmenjavi HTTP/1.1 CONNECT zbirajte bajte, dokler se zaključek glav ne pojavi kjer koli v medpomnilniku. Razdelite na njegovem prvem pojavu. Razčlenite vrstico stanja in glave iz prvega dela; vse za mejo shranite ločeno. Med čakanjem uporabite omejitev velikosti glav in časovno omejitev, prazno branje vtičnice pa obravnavajte kot zaprto povezavo, ne kot novo povabilo v zanko.

Zadnji uspešni odgovor 2xx takoj po teh glavah preklopi povezavo v način tunela. Bajti, ki mu sledijo, so že bajti tunela. Ne zavrzite jih, ne čakajte na telo odgovora CONNECT in ne razlagajte polja Content-Length kot dovoljenja za porabo dela novega protokola. Informativne odgovore, če obstajajo, je treba obdelati pred tem končnim odgovorom.

Ovoj mora predati svoje ostanke

Če vrnete samo osnovno vtičnico, se izgubijo bajti, ki jih je razčlenjevalnik rokovanja že potegnil iz nje. Naslednji bralec potrebuje medpomnjeni tok, ki najprej vrne shranjeni rep in nato nadaljuje z branjem vtičnice. Pri protokolu, kjer strežnik spregovori prvi, lahko izguba tega začetnega pozdrava pusti obe strani v neskončnem čakanju.

Nasprotno pa bajti neuspešnega odgovora CONNECT niso pozdrav tunela. 407 še vedno spada k izmenjavi s proxyjem in zahteva obravnavo preverjanja pristnosti; drug neuspešen status zahteva ustrezno pot napake.

To je še posebej pomembno pri prilagajanju odjemalca FTP ali SSH prek proxyja HTTP. Proxy mora dovoliti tudi zahtevana ciljna vrata, FTP pa lahko potrebuje dodatne podatkovne povezave. Pravilno razčlenjevanje glav reši predajo toka; ne more odobriti CONNECT ali zagotoviti drugega kanala FTP.

Sorodni članki