Meðhöndla EOF í Python SOCKS lestrarlykkju
Meðhöndlaðu EOF skýrt í SOCKS nákvæmri lestrarlykkju í stað þess að líta á lokaða tengingu sem tímannörk sem koma aldrei.
Lykja vill átta bæti úr SOCKS svari. Hún hefur fengið þrjú. Næsta lestur skilar b'', og lykjan bætir því við, athugar lengdina og reynir aftur að eilífu.
Þetta er villa í EOF-meðferð, ekki hægur proxy sem þarf lengri tímannörk. Við venjulega móttöku um straums-socket þýðir tómur bætastrengur að jafninginn hefur aftengst. Þau fimm bæti sem eftir eru koma ekki á þeirri tengingu.
Nákvæm lestrarhjálp þarf þrjár aðskildar niðurstöður: safna ótómum hlutum, mistakast á EOF fyrir tilskylda lengd og koma tímannörkum eða annarri socket-villu áfram. Þessi tilvik ættu ekki að falla saman í eina almenna endurtekningarlykkju.
Stilltu fyrirhuguð tímannörk socketsins fyrir aðgerðina og lestu þær reitlengdir sem proxy-samskiptareglan tilgreinir. Ein móttaka getur aðeins skilað hluta svars. Hins vegar gerir beiðni um stóran fastan biðminni ekki hvert SOCKS vistfang að þeirri lengd.
Ekki laga fylgni með því að líma gamalt MSG_WAITALL brot í frumkóða hennar og gera ráð fyrir að það nái yfir EOF, merki og hegðun kerfisins. Veldu frekar studda leiðréttingu í viðhaldinni útfærslu, eða útfærðu samning hjálparinnar viljandi þegar þáttarinn er þinn kóði.
Geymdu hversu mörg bæti voru væntanleg og móttekin, án þess að skrá auðkennisgögn. „EOF eftir þrjú af átta svarbætum“ útskýrir brotna skiptin miklu betur en „proxy festi aftur“.