'n Lus wil agt grepe van 'n SOCKS-antwoord hê. Dit het drie ontvang. Die volgende lesing gee b'' terug, en die lus voeg dit by, kontroleer die lengte en probeer vir ewig weer.

Dit is 'n EOF-hanteringsfout, nie 'n stadige proxy wat 'n langer time-out nodig het nie. Vir 'n normale stroom-sokkie-ontvangs beteken 'n leë grepe-string dat die eweknie ontkoppel het. Die oorblywende vyf grepe sal nie op daardie verbinding aankom nie.

'n Presiese-lees-hulpfunksie het drie afsonderlike uitkomste nodig: versamel nie-lege stukke, misluk op EOF voor die vereiste lengte, en dra 'n time-out of ander sokkie-fout oor. Daardie gevalle moet nie in een generiese herprobeer-lus ineensmelt nie.

Stel die sokkie se beoogde time-out voor die bewerking, en lees die veldlengtes wat die proxy-protokol spesifiseer. 'n Enkele ontvangs kan slegs 'n deel van 'n antwoord terugstuur. Omgekeerd, om 'n groot vaste buffer te vra maak nie elke SOCKS-adres daardie lengte het nie.

Moenie 'n afhanklikheid herstel deur 'n ou MSG_WAITALL-brokkie in sy bron te plak en aan te neem dit dek EOF, seine en platformgedrag nie. Verkies die instandgehoue implementering se ondersteunde oplossing, of implementeer die hulpfunksie se kontrak doelbewus wanneer die ontleder jou kode is.

Hou rekord van hoeveel grepe verwag en ontvang is, sonder om geloofwaardigheidslading te log. “EOF na drie van agt antwoordgrepe” verduidelik die gebroke uitruiling baie beter as “proxy hang weer.”

Verwante artikels