Mantendu bufferreko datuak HTTP CONNECT erantzun baten ondoren
Saihestu HTTP CONNECT esku-emate blokeatua erantzunaren goiburuaren muga aurkituta eta haren ondoren iristen diren byteak gordez.
Proxy wrapper txiki batek HTTPSrekin funtziona dezake eta gero blokeatu, zerbitzariak lehenik hitz egiten duen protokolo batekin berriro erabiltzean. Susmagarria den lerroa askotan harrera-bufferra \r\n\r\n-rekin amaitzera iristen dena da.
TCPek korronte bat ematen dio bezeroari. Harrera-dei batek HTTP egoera-lerroaren erdia, CONNECT erantzun oso bat, edo erantzun hori tunnel datuekin segituan jarraitua itzul dezake. Ez dago bermerik irakurketa bat goiburuen amaieran gelditzen denik.
Bilatu muga bufferraren barruan
HTTP/1.1 CONNECT truke baterako, metatu byteak goiburuen amaiera-bidea bufferran edozein tokitan agertu arte. Zatitu lehen agerpenaren tokian. Egiaztatu egoera-lerroa eta goiburuak lehen zatitik; gorde muga ondorengo guztia erabat bereizita. Ezarri goiburuen tamainerako muga eta itxarote-denbora bat, eta har ezazu socket irakurketa hutsa konexio itxia bezala, begiztan sartzeko beste gonbidapen bat izan beharrean.
2xx erantzun arrakastatsu final batek konexioa tunnel modura aldatzen du goiburu horien ondoren berehala. Hari dagozkion azken byteak jada tunnel byteak dira. Ez itzazu baztertu, ez itxaron CONNECT erantzunaren gorputzik, eta ez interpreta ezazu Content-Length eremu batek protokolo berriaren zati bat kontsumitzeko baimena ematen duenik. Erantzun informatiboak, baleude, azken erantzun hori baino lehen kudeatu behar dira.
Wrapperrak bere hondarrak aurrera pasa behar ditu
Azpiko socket-a bakarrik itzultzeak galtzen ditu esku-ematearen analizatzaileak hortik ateratako byteak. Hurrengo irakurgailuak bufferdundutako korronte bat behar du, gordetako buztana lehenik ematen duena eta gero socket irakurketekin jarraitzen duena. Zerbitzariak lehen hitz egiten duen protokolo baterako, hasierako agurra galtzeak bi aldeak mugagabe itxaroten utz ditzake.
Alderantziz, huts egindako CONNECT erantzun baten byteak ez dira tunnel agur bat. 407 bat oraindik proxy trukeari dagokio eta autentifikazioa kudeatu behar du; beste egoera ez-arrakastatsu batek errore-bide egokia behar du.
Hau bereziki garrantzitsua da FTP edo SSH bezero bat HTTP proxy baten bidez egokitzean. Proxyak eskatutako helburu-portua baimendu behar du halaber, eta FTPk datu-konexio gehigarriak behar izan ditzake. Goiburuen analisi zuzenak korrontearen transferentzia konpontzen du; ezin du CONNECT baimenik eman ezta FTPren bigarren kanala eman ere.