SorryFlagをONにすると稀にSEGVする
"l7vsadm -E -t IP:PORT -m sessionless -f 1"が実行された際に通信中のセッションが存在する場合にSEGVが発生する。
■本事象の原因
"l7vsadm -E -t IP:PORT -m sessionless -f 1"が実行された際に通信中のセッションが存在する場合に、
通信中のセッションで"up_thread_sorry_enable_event"が実行される。
この"up_thread_sorry_enable_event"内で呼び出される"protocol_module->handle_sorry_enable"の返り値
"REALSERVER_DISCONNECT"がtcp_session内の関数と正しく結び付けられていなかった。
#単純なtypoが原因。
■添付の修正patchについて
up_thread_module_event_map[protocol_module_base::REALSERVER_DISCONNECT] = UP_FUNC_REALSERVER_ALL_DISCONNECT;
で、"REALSERVER_DISCONNECT"に結び付けられている"UP_FUNC_REALSERVER_ALL_DISCONNECT"は存在しない関数。
正しくは以下のとおり。
up_thread_module_event_map[protocol_module_base::REALSERVER_DISCONNECT] = UP_FUNC_REALSERVER_DISCONNECT;
v3.0.4-1に盛り込まれたため、完了します。
#l7vsadm -E -t IP:PORT -m sessionless -f 1
を実行するとSEGVすることがある。
モジュールの種類に関係なく発生する模様。v3.0.3で発生。