TsgcSTUNServer › イベント › OnSTUNRequestSuccess
サーバーが成功した Binding Response を送信する前に発生し、ハンドラーが返信を検査または拒否できます。
property OnSTUNRequestSuccess: TsgcSTUNRequestSuccessEvent;
// TsgcSTUNRequestSuccessEvent = procedure(Sender: TObject; const aSocket: TsgcSocketConnection; const aRequest, aResponse: TsgcSTUN_Message; var Accept: Boolean) of object
—
サーバーがバインディングリクエストを正常に処理し、クライアントの公開(マップされた)アドレスを含む応答を構築した後、データグラムが送信される前に発火します。aRequest は元の STUN メッセージ(トランザクション ID、属性、ソースエンドポイント)を公開し、aResponse は送信されようとしているバインディング応答を公開します。どちらもログや監査のために検査できます。Accept := False を設定すると、例えばカスタムレート制限やクライアントのブラックリスト登録を実装するために、応答を黙って破棄します。ハンドラーは NotifyEvents でリダイレクトされない限り、リスナースレッドで実行されます。
procedure TForm1.OnSTUNRequestSuccess(Sender: TObject;
const aSocket: TsgcSocketConnection; const aRequest, aResponse: TsgcSTUN_Message;
var Accept: Boolean);
begin
Memo1.Lines.Add('Binding OK from ' + aSocket.PeerIP + ':' + IntToStr(aSocket.PeerPort));
Accept := True;
end;