[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
(toppers-users 2099) Re: TINETのtcp_cls_cep()の挙動について
- To: users at toppers jp
- From: ABE Tsukasa <abe at jo tomakomai-ct ac jp>
- Date: Wed, 07 Sep 2005 19:41:50 +0900
高橋様
苫小牧高専、情報工学科の阿部です。
>はじめまして。
>高橋 周平と申す者です。
こちらこそ、初めまして、今後ともよろしくお願いいたします。
>つい先日、Toppers/JSPとTINETの存在を知り、利用させて頂いています。
>組み込みOSに触れるのは初めてなので、簡単なプログラムを動作させるだけでも
>四苦八苦しているのですが(^^; 、Toppers/JSPは他の環境に比べて非常に堅牢で、
>ドキュメントもよく整備されていて、とてもありがたいです。
>
>
>ところで、TINETを利用していて思ったのですが、ちょうど数日前に小峰様が
>指摘されていらっしゃるとおり、tcp_cls_cep()がタイムアウトで帰ってきた
>直後にtcp_acp_cep()を呼び出すと、E_OBJが返されることがあるようです。
>
>ITRON TCP/IP API仕様のtcp_cls_cep()の解説によりますと、
>
>> タイムアウトやtcp_can_cepによってtcp_cls_cepの処理がキャンセルされた
>> 場合、指定したTCP通信端点からRSTを送信して接続を強制切断し、それぞれ
>> E_TMOUT, E_RLWAIを返値としてリターンする。RSTをすぐに送信できない場
>> 合には、送信する手配のみを行うか、それもできない場合にはRSTの送信を
>> 省略する。いずれの場合にも、tcp_cls_cepからリターンすると(ノンブロ
>> ッキング指定をした場合には、完了を通知するコールバックが呼ばれると)、
>> TCP通信端点は未使用状態になっている。
>
>とのことですので、この振る舞いは適切ではないのではと思います。
ご指摘ありがとうございます。
たしかに、振る舞いに問題がありそうです。
>ソースコードを拝見させて頂いた所、/tinet/netinet/tcp_usrreq.c:685が
>> if (error == E_RLWAI) {
>となっていますが、これはもしかして
>> if (error == E_TMOUT) {
>とするべきなのではないかと思っているのですが、如何でしょうか。
こちらも調べて見ます。
それでは、よろしくお願いいたします。
--
.\" 苫小牧工業高等専門学校 情報工学科 教授 阿部 司
.\" E-mail: abe at jo tomakomai-ct ac jp TEL/FAX: 0144-67-8937