Oníbàárà parí fífúnni, aṣojú rí EOF, ìdáhùn sì pòórá. Pípèsé àwọn sọ́kẹ́tì méjèèjì ti aṣojú lẹ́sẹ̀kẹsẹ̀ lè fa irú ìtẹ̀lé yẹn gan-an. Nínú relay TCP, òpin tó wà létòlétò ní ọ̀nà kan kò túmọ̀ sí pé ọ̀nà kejì ti parí.

Ronú nípa oníbàárà tó fi ìbéèrè ránṣẹ́, tó ti ẹ̀gbẹ́ fífúnni rẹ̀, tó sì ń dúró de ìdáhùn:

client -- request, then FIN --> proxy --> service
client <-------- reply ------- proxy <-- service

Aṣojú náà ní ìsopọ̀ TCP méjì àti ṣíṣàn báìtì méjì tí ń rìn lọ́nà tí kò gbára lé ara wọn. Ó gbọ́dọ̀ gbé àmì òpin ìwọlé lọ síwájú, lẹ́yìn tí ó ti gbé àwọn báìtì tó ṣáájú rẹ̀ lọ.

Kó ìlà kúrò kí o tó fi EOF ránṣẹ́

Nínú gbígbà tí ìwọ̀n rẹ̀ kì í ṣe òdo lórí ṣíṣàn TCP, pípada òdo ń tọ́ka sí òpin tó wà létòlétò ti ṣíṣàn tó ń wọlé yẹn. Sàmì sí ọ̀nà kíkà yẹn pé ó ti parí. Dá dídúró de ìwọlé síi dúró, ṣùgbọ́n pa àwọn báìtì tó ti wà nínú ìlà fún sọ́kẹ́tì òdìkejì mọ́.

Nígbà tí ìlà láti oníbàárà sí iṣẹ́ bá kùrò, pe shutdown(service_socket, SHUT_WR) lórí sọ́kẹ́tì POSIX. Ìyẹn ń parí gbígbé síwájú sí i lọ sí ọ̀nà iṣẹ́ nígbà tí ọ̀nà láti iṣẹ́ sí oníbàárà ṣì wà. Nígbà tí iṣẹ́ bá parí ìdáhùn rẹ̀, lo iṣẹ́ dígí lẹ́yìn kíkó ìlà ìdáhùn kúrò.

Pípèsé àwọn apàṣẹ-ìtọ́jú jẹ́ ti ibi tí àwọn ọ̀nà méjèèjì àti àwọn búfà tí wọ́n ń dúró ti parí, tàbí níbi tí àṣìṣe tàbí fífagilé bá nílò òpin. Pa àkókò ìdánwò tó ní ààlà mọ́ fún ẹlẹgbẹ́ tí kò parí ìlàjì rẹ̀ tó kù.

Ìmúrasílẹ̀ jẹ́ ìpè láti kà

Sọ́kẹ́tì tí ó ṣeé kà lè ní dátà tàbí ipò EOF. Pe recv kí o sì túmọ̀ àbájáde rẹ̀. Àwọn nọ́mbà rere jẹ́ báìtì tí a ó fi ránṣẹ́; òdo ni òpin ọ̀nà. Lórí sọ́kẹ́tì tí kò dínà, EAGAIN tàbí EWOULDBLOCK túmọ̀ sí pé kò sí ìwọlé síi ní báyìí, nígbà tí EINTR lè nílò àtúnwá. Kò sí èyí tí ó jẹ́ ìṣẹ̀lẹ̀ kan náà bí EOF.

Má ṣe wá àsíà FIN nínú búfà báìtì tí a dá padà. TCP ń fi ṣíṣàn báìtì tó wà létòlétò ránṣẹ́ sí API yìí; àwọn ààlà pákẹ́tì àti ẹ̀ka FIN kì í ṣe ẹrù ìṣe deede.

Èyí ni àyípoyípo ìgbésí ayé ìṣàwọ̀rọ̀ báìtì àìbójú. Aṣojú HTTP tí ń ṣàyẹ̀wò àwọn ìfiránṣẹ́ ṣì gbọ́dọ̀ bọ̀wọ̀ fún ìkọ́ṣe HTTP, aṣojú tí ń parí TLS pẹ̀lú ní ìlànà pípèsé TLS. Pa àwọn ìpinnu ìlànà yẹn mọ́ lórí relay TCP oní ọ̀nà.

Àwọn àpilẹ̀kọ tó jọra