TsgcTURNServer › イベント › OnSTUNRequestError
サーバーがSTUN/TURNエラーレスポンスを送信する前に発生します。ハンドラーが応答を検査または抑制できるようにします。
property OnSTUNRequestError: TsgcSTUNRequestErrorEvent;
// TsgcSTUNRequestErrorEvent = procedure(Sender: TObject; const aSocket: TsgcSocketConnection; const aRequest: TsgcSTUN_Message; const aResponse: TsgcSTUN_Message; var Accept: Boolean) of object
—
サーバーがエラーレスポンス(例えば 400 Bad Request、401 Unauthorized、403 Forbidden、437 Allocation Mismatch、438 Stale Nonce、441 Wrong Credentials、442 Unsupported Transport Protocol、486 Allocation Quota Reached、508 Insufficient Capacity)を構築し、クライアントに送り返そうとしているときに発火します。aRequest/aResponse(特に aResponse のERROR-CODE属性)を調べて失敗の理由をログに記録します。Accept := False を設定するとデータグラムを破棄してクライアントへの返信をなくすことができます。これは同じソースから繰り返し無効なリクエストが来る場合の増幅攻撃を防ぐのに有用です。ハンドラーは NotifyEvents が別のモードを選択しない限り、リスナースレッドで実行されます。
procedure TForm1.OnSTUNRequestError(Sender: TObject;
const aSocket: TsgcSocketConnection; const aRequest: TsgcSTUN_Message;
const aResponse: TsgcSTUN_Message; var Accept: Boolean);
begin
Memo1.Lines.Add('TURN error for ' + aSocket.PeerIP);
Accept := True;
end;