NetworkStream.DataAvailable == false heescht, datt keng Bytes direkt prett sinn ze lessen. Et heescht net, datt eng HTTP-Antwort fäerdeg ass. Eng Schleif, déi do stoppt, kann en normale SOCKS-Download während enger Lück tëschend Päck ofschneiden.

Nodeems SOCKS d'TCP-Verbindung opgebaut huet, gëtt nach ëmmer d'HTTP-Framing d'Fäerdeg-Regel:

  • E Content-Length-Body ennt no de deklaréierten Inhalt-Bytes.
  • Eng chunked-Antwort brauch hire Schluss-Chunk an déi zoutreffend Trailers.
  • Eng verbindungsbegrenzt Antwort ennt mat der Verbindung.
  • Verschidden Statussen an Äntwerten op HEAD hu kee Body.

Liest de Status an d'Header, fir déi zoutreffend Regel ze bestëmmen. Nëmmen op d'Zoumaache waarden ass keng allgemeng Léisung, well eng komplett HTTP-Antwort d'Verbindung kann oppe loossen. D'Kapazitéit vun engem Puffer ass och onofhängeg vun der Längt vun der Antwort.

Benotzt d'Framing-Implementatioun vum HTTP-Client, wa se den ausgewielten Proxy-Transport ënnerstëtzt. Op enger kompatibler moderner .NET-Runtime kanns du un dem HttpClient seng native SOCKS-Ënnerstëtzung denken. Eng reng Implementatioun muss de Parsing-Zoustand iwwer deelweis Header a Body-Liesungen halen an e fäerdegen Erfolleg vun Ofbroch, Timeout an onerwaartem EOF ënnerscheeden. Bei enger net-eidler Lies-Ufro heescht null geliest Bytes, datt de Stroum eriwwer ass; dat ass anescht wéi datt just elo keng Bytes an der Rei sinn.

De Proxy kann Timing-Lücken bemierkbar maachen, awer en ännert eng eidel Empfangsrei net an e Message-Ende-Marker.

Ähnlech Artikelen