[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

(toppers-users 2099) Re: TINETのtcp_cls_cep()の挙動について



高橋様

苫小牧高専、情報工学科の阿部です。

>はじめまして。
>高橋 周平と申す者です。

こちらこそ、初めまして、今後ともよろしくお願いいたします。

>つい先日、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