Develop and Download Open Source Software

Ticket #27222

Open Date: 2012-01-23 16:13

Last Update: 2012-09-18 16:16

振り分け先サーバ異常時にFINパケットが返却される

Reporter:hibariOwner:hibari
Priority:5 - MediumMileStone:(None)
Type:BugsSeverity:5 - Medium
Component:[1] UltraMonkey-L7 v3.0.3Status:Closed
ResolutionNone

Details

振り分け先サーバ異常時に、クライアントがUM-L7に接続すると、RSTではなくFINパケットが返却される。
この場合、クライアントにはエラーが表示されず、空のデータが返却された場合と同じ動作をする。


振り分け先は異常な状態になっているため、クライアントにはエラーが表示されるほうが好ましい。
本事象はUltraMonkey-L7-v3.0.3で発生しており、v3.0.1では発生しない(RSTが返る)ためデグレと考えられる。

本事象の再現手順は以下のとおり。

1. ip モジュールに--no-reschedule オプションを指定し、VSを追加
2.クライアントから1で追加したVSに接続
3.2で接続した際に振り分けられたサーバを停止
4.再度、2と同じクライアントから接続

Attach File

File List
return_reset_packet.patch (4KB)
submitted by hibari at 2012-01-23 16:34 [File ID: 4666]
File Description: 振り分け先サーバ異常時にFINパケットが返却される問題の修正パッチ
Add New attachment
Add attachment filesPlease login to add new attachment

Ticket History - 3/4 Histories [Show all old Histories]

2012-01-23 16:13 Update by: hibari

  • New Ticket "振り分け先サーバ異常時にFINパケットが返却される" created

2012-01-23 16:34 Update by: hibari

  • File return_reset_packet.patch (File ID: 4666) is attached.

2012-01-23 16:35 Update by: hibari

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()を行うだけでよい。

2012-09-18 16:16 Update by: hibari

  • Ticket Close date set to 2012-09-18 16:16
  • Status Update from Open to Closed.

Comment

v3.0.4-2で修正が取り込まれた。


Add Comment/Update #27222 (振り分け先サーバ異常時にFINパケットが返却される)

You are not logged in. If you do not want to anonymous write, please login. » Login


SourceForge.JP is a Japanese version of SourceForge.net. For developments that are not related to Japan, we recommend you to use SourceForge.net.