ایک لوپ SOCKS جواب کے آٹھ بائٹ چاہتا ہے۔ اسے تین مل چکے ہیں۔ اگلی پڑھائی b'' واپس کرتی ہے، لوپ اسے شامل کرتا ہے، لمبائی جانچتا ہے اور ہمیشہ دوبارہ کوشش کرتا ہے۔

یہ EOF کی دیکھ بھال کی خرابی ہے، طویل ٹائم آؤٹ والا سست پراکسی نہیں۔ عام اسٹریم ساکٹ وصولی میں، خالی بائٹ اسٹرنگ کا مطلب ہے کہ ساتھی نے کنکشن منقطع کر دیا۔ باقی پانچ بائٹ اس کنکشن پر نہیں آئیں گے۔

درست پڑھنے کے مددگار کو تین الگ نتائج درکار ہیں: غیر خالی ٹکڑے جمع کرنا، مطلوبہ لمبائی سے پہلے EOF پر ناکام ہونا، اور ٹائم آؤٹ یا دیگر ساکٹ خرابی آگے بھیجنا۔ یہ صورتیں ایک عام دوبارہ کوشش کے لوپ میں ضم نہیں ہونی چاہئیں۔

کارروائی سے پہلے ساکٹ کا مطلوبہ ٹائم آؤٹ مقرر کریں، اور پراکسی پروٹوکول کے بتائے گئے فیلڈ کی لمبائیاں پڑھیں۔ ایک وصولی جواب کا صرف ایک حصہ واپس کر سکتی ہے۔ اس کے برعکس، بڑا مستقل بفر مانگنے سے ہر SOCKS پتہ اس لمبائی کا نہیں ہو جاتا۔

کسی انحصار کو اس کے ماخذ میں پرانا MSG_WAITALL سنپٹ چسپاں کر کے اور یہ مان کر کہ یہ EOF، سگنل اور پلیٹ فارم رویہ ڈھانپتا ہے، درست نہ کریں۔ دیکھ بھال والے نفاذ کی معاون درستی کو ترجیح دیں، یا جب پارسر آپ کا کوڈ ہو تو مددگار کے معاہدے کو جان بوجھ کر نافذ کریں۔

کتنے بائٹ متوقع اور موصول ہوئے، یہ رکھیں، اسناد کے پے لوڈ لاگ کیے بغیر۔ ”آٹھ جوابی بائٹ میں سے تین کے بعد EOF“ ٹوٹی ہوئی ادلا بدلی کو ”پراکسی پھر رک گئی“ سے کہیں بہتر سمجھاتا ہے۔

متعلقہ مضامین