dns.cはリエントラント、sincle .cファイルに存在し、再帰的かつ非ブロッキングDNSリゾルバライブラリです。また、スタブリゾルバとして素晴らしい作品。
実際のDNSパケットを中心に構築コアAPI。 DNS自体としてジェネリックとして。これははるかに簡単にA、AAAA、およびPTR以外のレコードを照会し、操作することができます。
ユーザー指定のソートと再起動可能なレコードイテレータ。 MXまたはセマンティック順序でSRVレコード(すなわち好みや優先順位)を反復処理することと同じくらい簡単です。
dns_rr_foreach(&RR、パケット、.TYPE = DNS_T_SRV、.sort =&dns_rr_i_order){
  ...
}
または再起動可能な方法で:
スイッチ(my->状態){
ケース0:
  dns_rr_i_init(&my-> rr_i);
  my-> rr_i.type = DNS_T_SRV。
  my-> rr_i.sort =&dns_rr_i_order。
  my->状態++;
ケース1:
 しばらく(dns_rr_grep(&RR、1、&my-> rr_i、my->パケット、およびエラー)){
    ...
    / *イベントループに復帰* /
  }
}
「スマート」のクエリをサポートします。コアリゾルバに有効にすると、NS、MX、およびSRVレコードのクエリは常にAレコードにRDATA正規のホスト名を解決しようとします。得意分野内及び/または権威サーバは接着剤を提供しないためのものではありませんホストは、自動的に解決され、解答パケットに返されます。スタブと再帰リゾルバのインスタンス化の両方でサポート。 "スマート"解像度は、アドレス情報(つまりはgetaddrinfo())APIに組み込まれています。
送信元ポートとQIDsランダム化。
ノンブロッキング、再入、反復子ベースのgetaddrinfo()インタフェース:dns_ai_open()、dns_ai_nextent()、dns_ai_close()。意味的にだけは、getaddrinfo()、のようなだけでなく、レコード型を取ります。 (構造体のaddrinfo)MX、NS、SRV(ら)のホストを照会するときにもオブジェクトを反復処理。必要な再帰を延期することができます(最初のホストはおそらく十分であるため、すべての可能性では、必要はありません)ので、この方法を「スマート」クエリを実行するより少ない待ち時間は、あります。
の何をこのリリースで新しいのです。
- dns_srv_print()は末尾のNUL文字を印刷するのに失敗した不具合を修正しました。
のバージョン20100813のの新機能は次のとおりです。
- のcontrib /にsocket.cを追加します。私は他のプロジェクト内年かそこらのためにこれを使用して開発してきました。概念的には、透過的かつ非同期的にDNS検索とSSLネゴシエーションを処理BSDソケットAPIの周りの簡単なラッパーです。
- )、呼び出し側は例えば、適切なモードを設定so_connect()とso_starttls()。呼び出し側はその後、それらが完了するのを(必要であれば、彼らはEAGAINを返します)待つか、より簡便に結果を無視して、読み取りと書き込みを試みるに直接移動することができます。 EAGAINを含む以前の状態からのエラーは、すべての読み取り時に返品それらの状態が完了するまでの試行を書きます。
- ちょうどdns.cの対応のように使用しso_pollfd()とso_events()。これらは、それぞれ、内部状態が実行されるかによって、適切な記述子およびイベントフラグを返す。アプリケーションが論理的読み取り/書き込み操作を発行することを心配する必要がします。
so_open(ソケットを作成した後
のバージョン20100709のの新機能は次のとおりです。
- MinGWのは、(内部dns_strsepを追加することで構築修正)とDNS_ETIMEDOUT。
のバージョン20100708のの新機能は次のとおりです。
- dns_d_expand(で返される長さの妥当性を確認してください)の前に私たちは無効な読み取りをするかもしれない、他)(dns_d_cleaveするために、ソースの長さとしてそれをdns_hints_queryの内側()を渡す。匿名のおかげます。
- タグのREL-20100708(d493a0f7d8f1d67ef312a7ca3e142660895b32d8)します。
- 注記:20100708リリースのDNS_V_RELバンプを忘れて、新しい統計インターフェイスがトランクにあったので、またDNS_V_APIをぶつけている必要があります。手遅れになりました。
- ループのネームサーバーのresolv.confの上:options.attempts回
- SPF正規名クエリ制限を実施します。
- セクションの範囲を学習し、保存するために)(dns_p_studyを追加します。
- )(dns_p_push内のセクションの範囲を追跡します。
- リファクタリングdns_p_merge()します。
- malloc'ingと新しいパケットを初期化するためのdns_p_make()を追加します。
- SPF長期クエリ制限を実施。 MXとPTRホストクエリに制限を強制するのを見越して、構造体spf_limitsのレイアウトを変更しました。
- 不具合を修正しました。
のバージョン20100515にの新機能である。
MXとPTRのメカニズムを実行しているときに
大きなパケットのパフォーマンスを向上させるために
255を超えるのジャンプインデックスのVM命令生成の
のバージョン20100416のの新機能である:ます。
- を追加しましSSHFPサポートします。
- タグのREL-20100416(5bd9963e693510e485a1f081f6c98a95d84debfe)します。
- 90%の通過率。は、TempError試験に合格するためにタイムアウトをシミュレートする必要があります。文法テストのいくつかは議論の余地があるします。
- を追加しましOpenSPF YAMLテストスイートプロセッサ。 libyamlのが必要ます。
OpenSPFのテストスイートに
のバージョン0.5のの新機能:我々はQUOT&からフォールバックしませんでした。
- 不具合を修正しました。バインド&QUOT 。 QUOTファイル&、QUOTから&する方法。再帰フラグが無効になっていた場合、メソッドます。
- 検索·ジェネレータは、QNameはを変更している場合があります。だから、dns_ai_nextentに()の答えではなく、もともとリゾルバに提出されたQNameからのqnameを正規化します。
コメントが見つかりません