Cente IPv6

tcp_con_cep()によるTCP発信時に接続相手からRSTを受信すると、まれにtcp_con_cep()から返らないことがある現象について


発行日: 2020/07/15
題名: tcp_con_cep()によるTCP発信時に接続相手からRSTを受信すると、まれにtcp_con_cep()から返らないことがある現象について
適用製品:
・Cente TCP/IPv4 Ver.1.12 – Ver.1.35
・Cente TCP/IPv4 SNMPv2 Ver.1.11 – Ver.2.22
・Cente TCP/IPv4 SNMPv3 Ver.2.00 – Ver.2.22
・Cente IPv6 Ver.1.11 – Ver.1.45
・Cente IPv6 SNMPv2 Ver.1.11 – Ver.2.22
・Cente IPv6 SNMPv3 Ver.2.00 – Ver.2.22

【該当するユーザ環境】
以下の条件のいずれかに該当するユーザ
・ユーザアプリケーションからtcp_con_cep()、tcp_con_cep_ip46()にてTCP発信する
・FTPc、HTTPcなど、CenteパッケージのアプリケーションにてTCP発信する
なお、ctconnect()でTCP発信しているユーザアプリケーションは非該当です。

【障害内容】
通信相手がTCP着信準備ができていない場合、TCP接続のためのSYN送信に対して、RST(着信拒否)が返ります。通常はそれによってtcp_con_cep()からE_CLSが返ります。しかし、通信品質が悪い環境などでRSTの受信とSYNの再送がほぼ同時に発生すると、まれにtcp_con_cep()から返らないことがありました。

【発生理由】
ある限定された条件下において、TCP送信タスクがセマフォを確保したまま処理を終了させていました。それによって、tcp_con_cep()がエラー終了するときのセマフォが確保待ちで停止していました。

【回避方法】
ソースコードの修正が必要です。
TCP送信タスクにおいて、不足していたセマフォ解放処理を追加します。
詳細については、営業担当またはsupport_XXXatmarkXXX_cente.jpまでお問い合わせください(_XXXatmarkXXX_は@にしてください)。