Ticket #27222Open Date: 2012-01-23 16:13 Last Update: 2012-09-18 16:16 振り分け先サーバ異常時にFINパケットが返却される
Attach FileTicket History - 3/4 Histories [Show all old Histories]2012-01-23 16:13 Update by: hibari
2012-01-23 16:34 Update by: hibari
2012-09-18 16:16 Update by: hibari
Commentv3.0.4-2で修正が取り込まれた。 Add Comment/Update #27222 (振り分け先サーバ異常時にFINパケットが返却される) |
Comment
ip モジュールに--no-reschedule オプションを指定した場合のほかに、sslidモジュールでの--no-reschedule オプションを指定時にも同様の問題が発生する。
また、SorryServerが設定されていない、もしくはSorryServerに異常が発生している場合に、クライアントからの接続がSorryServerに振り分けられた場合も同様の問題が発生する。
■本事象の原因
ソケットをクローズする際に、socket.shutdown()を行い、その後にsocket.close()を行うが、
異常時にsocket.shutdownを行ってしまうと、強制的にソケットをクローズせず、穏やかにソケットをクローズしようとするため、RSTではなくFINが返却される。
現状、正常時、異常時にかかわらず、必ずshutdownを実行するようになっている。
■添付の修正patchについて
・upthread_status がUPTHREAD_LOCKになったままで、UPTHREAD_ACTIVEに変更されていなかったた点を修正。
クライアント側ソケットのクローズ処理は各モジュールにより
1.CLIENT_DISCONNECT(shutdown)
2.FINALIZE(close)
の順番で行われるようになっているが、異常時はFINELIZEのみ実行するよう修正
・sslの通信時にlowest_layer().shutdownは冗長であるため、併せて修正。
#ssl_socket.shutdown()を行うだけでよい。