Ticket #27222

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

Date d'ouverture: 2012-01-23 16:13 Dernière mise à jour: 2012-09-18 16:16

Rapporteur:
Propriétaire:
Type:
État:
Atteints
Jalon:
(Aucun)
Priorité:
5 - moyen
Sévérité:
5 - moyen
Résolution:
Aucun
Fichier:
1

Détails

振り分け先サーバ異常時に、クライアントが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と同じクライアントから接続

Ticket History (3/4 Histories)

2012-01-23 16:13 Updated by: hibari
  • New Ticket "振り分け先サーバ異常時にFINパケットが返却される" created
2012-01-23 16:35 Updated by: hibari
Commentaire

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 Updated by: hibari
  • État Update from Ouvert to Atteints
  • Ticket Close date is changed to 2012-09-18 16:16
Commentaire

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

Attachment File List

  • return_reset_packet.patch(4KB)
    • 振り分け先サーバ異常時にFINパケットが返却される問題の修正パッチ

Modifier

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Connexion