(toppers-users 2086) Re: クロックティックの変更 (was Re: TINETが出力するログについて。)

Komine r_komine @ avalngsk.co.jp
2005年 9月 2日 (金) 17:26:34 JST


協栄エレクトロニクスの小峰です。

すみません、現在検証中のため回答が遅れておりました。

もなか様、阿部様、高田様ありがとうございます。
おかげさまで、WWWサーバにてページが表示できなくなる件(クロックティック変
更やTINETのメッセージへの質問の元)は、解決いたしました。

原因はtcp_rcv_dat()による受信時の処理にて、戻り値として0が返った際(正常
切断時の戻り値)の処理で、再度tcp_rcv_dat()を発行し続けていたため、通信
端点の切断処理ができておりませんでした。お騒がせして申し訳ございません。

tcpの送受信を行うシステム(CPU:SH2、TOPPERS 1.4、TINET 1.2)の評価中、
通信中のLANケーブル抜けテストを行ったところ、tcp_cls_cep()から8分程制御が
戻らない現象が発生いたしました。
受動オープン側でtcp_cls_cep()を実行した際に、最大セグメント生存時間(1分
間)
の間、制御を返さない事は確認しておりましたが、約8分間も制御が戻らないこ
とは初めてでした。
tcp_cls_cep()や他のAPIの使用方法に誤りがあるのでしょうか。ご教授願います。

発生手順は以下の通りです。
1.TCPの通信中にLANケーブルを抜く。
2.tcp_rcv_dat():タイムアウト10秒がE_TMOUTになる。
3.tcp_rcv_dat()がエラーを返したため切断処理、tcp_sht_cep()を実行。
4.tcp_sht_cep()に続けて、tcp_cls_cep()を実行するが、制御が戻るまで8分程
  時間が掛かる。
5.約8分後tcp_cls_cep()がE_OBJを返す。
6.次回のTCP接続のため tcp_acp_cep()を実行して接続待ち。

なお、tcp_cls_cep()のタイムアウト時間に2〜7分の時間を設定して見ましたが、
tcp_cls_cep()がE_TMOUTを返した後、次回の接続待ちのための tcp_acp_cep()
が-41(E_OBJ)を返してしまいます。

以上、よろしくお願いいたします。

小峰