names=servername_cb=
visibility=public
kind=defined

--- servername_cb=(pr)
TLS の Server Name Indication(SNI) 拡張で
クライアント側からホスト名が伝えられてきた場合に
呼びだされるコールバックを設定します。

このコールバックはハンドシェイク時に
クライアント側がサーバのホスト名を伝えてきた場合に
サーバ側で呼びだされます。このコールバック内でサーバ側に提示する証明書を
調整したりします。

[[c:Proc]] や [[c:Method]] をコールバックオブジェクトとして
渡します。コールバックに渡される引数は以下のように
  proc{|sslsocket, hostname| ... }
2つで、1つ目は認証および暗号化通信に使われる [[c:OpenSSL::SSL::SSLSocket]]
オブジェクトで、2つ目がクライアント側から伝えられてきたホスト名です。

コールバックの返り値には認証と暗号化の設定を含んだ 
[[c:OpenSSL::SSL::SSLContext]] オブジェクト、もしくは
nil を返さなければなりません。
これで得られたコンテキストオブジェクトが sslsocket に設定され、
コンテキストが持っている証明書などの各情報を用いてハンドシェイクを継続します。
コールバックが nil を返した場合には sslsocket が用いるコンテキストは
変更されません。

@param pr コールバックオブジェクト
@see [[m:OpenSSL::SSL::SSLContext#servername_cb]]

