E klengen Proxy-Wrapper kann fir HTTPS funktionéieren an dann hänken, wann en erëm fir e Protokoll benotzt gëtt, deem säi Server als éischten schwätzt. Déi verdächteg Linn ass dacks déi, déi drop waart, datt den Empfangspuffer mat \r\n\r\n opgehéiert.

TCP gëtt dem Client e Stream. Een Empfanksopruff kann eng hallef HTTP-Statuslinn, eng komplett CONNECT-Antwert oder déi Äntwert direkt duerno mat Tunneldate zréckginn. Et gëtt keng Garantie, datt e Liese beim Enn vun den Headeren ophält.

D'Grenz am Puffer fannen

Fir en HTTP/1.1 CONNECT-Austausch sammelt Bytes, bis den Header-Endemarkéier iergendwou am Puffer erschéngt. Deelt bei sengem éischten Optrieden. Parséiert d'Statuslinn an d'Headeren aus dem éischten Deel; behält alles no der Grenz getrennt. Setzt eng Limite fir d'Headergréisst an en Timeout beim Waarden, a behandelt eidelt Socketliesen als eng zougemaach Verbindung an net als eng weider Invitatioun ze loopen.

Eng lescht erfollegräich 2xx-Antwert schalt d'Verbindung direkt no dësen Headeren an den Tunnelsmodus. D'Bytes déi duerno kommen, sinn schonn Tunnelbytes. Verwerft se net, waart net op e CONNECT-Antwertkierper, a interpretéiert e Content-Length-Feld net als Erlaabnes, en Deel vum neie Protokoll ze konsuméieren. Informativ Äntwerten, wann et se gëtt, musse virun där leschter Äntwert behandelt ginn.

De Wrapper muss seng Reschter weiderginn

Just de Grondsocket zréckzeginn, verléiert all Bytes, déi den Handshake-Parser schonn do erausgezunn huet. Den nächsten Lieser brauch e gepufferte Stream, deen den gespäicherten Schwanz als éischte gëtt an dann d'Socketliesen erëm ophëlt. Fir e Server-éischt-Protokoll kann de Verloscht vun där éischter Begréissung béid Säiten onendlech waarde loossen.

Ëmgedréint sinn d'Bytes vun enger feelgeschloener CONNECT-Antwert keng Tunnelbegréissung. Eng 407 gehéiert nach ëmmer zum Proxy-Austausch a brauch eng Authentifikatiounsbehandlung; en aneren net-erfollegräiche Status brauch en entspriechende Feelerwee.

Dëst ass besonnesch wichteg beim Upassen vun engem FTP- oder SSH-Client iwwer en HTTP-Proxy. De Proxy muss och de gefrotte Bestëmmungsport erlaben, an FTP kéint zousätzlech Dateverbindungen brauchen. Korrekt Header-Parsing léist d'Stream-Iwwergab; et kann keng CONNECT-Erlaabnes ginn oder den zweete Kanal vun FTP liwweren.

Ähnlech Artikelen