Immaniġġja l-EOF f'ċirku ta' qari SOCKS f'Python
Immaniġġja l-EOF b'mod espliċitu f'ċirku ta' qari eżatt SOCKS minflok ma tqis konnessjoni magħluqa bħala waqfa li qatt ma tiġi.
Ċirku jrid tmien bytes ta' tweġiba SOCKS. Huwa rċieva tlieta. Il-qari li jmiss jirritorna b'', u ċ-ċirku jżidu, jiċċekkja t-tul u jerġa' jipprova għal dejjem.
Dan huwa bug fil-maniġġar tal-EOF, mhux proxy bil-mod li jeħtieġ waqfa itwal. F'riċeviment normali permezz ta' socket ta' fluss, string ta' bytes vojt ifisser li l-parti l-oħra skonnettjat. Il-ħames bytes li jifdal mhux se jaslu fuq dik il-konnessjoni.
Helper ta' qari eżatt jeħtieġ tliet riżultati distinti: jakkumula biċċiet mhux vojta, ifalli fuq l-EOF qabel it-tul meħtieġ, u jxerred waqfa jew żball ieħor tas-socket. Dawk il-każijiet m'għandhomx jiġbru fi ċirku wieħed ġeneriku ta' tentattivi mill-ġdid.
Issettja l-waqfa maħsuba tas-socket qabel l-operazzjoni, u aqra t-tulijiet tal-kampijiet speċifikati mill-protokoll tal-proxy. Riċeviment wieħed jista' jirritorna biss parti minn tweġiba. Bil-kuntrarju, it-talba għal buffer fiss kbir ma tagħmilx kull indirizz SOCKS ta' dak it-tul.
Tiswijx dipendenza billi tippejstja snippet MSG_WAITALL antik fis-sors tagħha u tassumi li jkopri l-EOF, is-sinjali u l-imġiba tal-pjattaforma. Ippreferi l-fiss supported tal-implimentazzjoni miżmuma, jew implimenta l-kuntratt tal-helper b'mod deliberat meta l-parser huwa l-kodiċi tiegħek.
Żomm kemm bytes kienu mistennija u rċevuti, mingħajr ma tilloggja payloads ta' kredenzjali. “EOF wara tlieta minn tmien bytes ta' tweġiba” jispjega l-iskambju miksur ħafna aħjar minn “il-proxy dendel mill-ġdid”.