dns.c é uma reentrada, recursivo, impedindo a não-biblioteca de resolução de DNS que reside em um arquivo sincle .c. Também funciona muito bem como um resolvedor stub.
API núcleo construído em torno do pacote DNS real; como genérico quanto o próprio DNS. Isso faz com que consultar e manipular outros do que A, AAAA, e PTR muito mais fácil registros.
Iterators recordes reinicializáveis com a classificação especificada pelo usuário. Iteração sobre MX ou registros SRV em ordem semântica (ou seja, de preferência e prioridade) é tão simples como:
dns_rr_foreach (& rr, pacote, .type = DNS_T_SRV, .Sort = & dns_rr_i_order) {
& Nbsp; ...
}
Ou de uma forma restartable:
switch (meu-> estado) {
caso 0:
& Nbsp; dns_rr_i_init (& meu-> rr_i);
& Nbsp; meu-> rr_i.type = DNS_T_SRV;
& Nbsp; meu-> rr_i.sort = & dns_rr_i_order;
& Nbsp; meu-> estado ++;
case 1:
& Nbsp; while (dns_rr_grep (& rr, 1, & meu-> rr_i, meu-> pacote, e erro)) {
& Nbsp; & nbsp; & nbsp; ...
& Nbsp; & nbsp; & nbsp; / * Retorno em ciclo de eventos * /
& Nbsp; }
}
Suporta consultas "inteligentes". Quando ativado no resolvedor núcleo, as consultas para NS, MX, e SRV sempre tentará resolver o nome do host canônico RDATA em um registro. Hosts que não são in-bailiwick e / ou para o qual o servidor autoritário não fornece cola são automagicamente resolvido e retornou no pacote de resposta. Compatível tanto para stub e instantiations resolvedor recursiva. Resolução "Smart" também está embutido no Endereço (ie getaddrinfo) () API.
Randomizados portas de origem e QIDS.
Non-blocking, interface de re-entrantes, getaddrinfo baseada em iterator (): dns_ai_open (), dns_ai_nextent (), dns_ai_close (). Semanticamente apenas como getaddrinfo (), mas também leva um tipo de registro. Iterar (struct addrinfo) objetos mesmo ao consultar um MX, NS, SRV (et al) host. Há menos latência fazendo consultas "inteligentes" Desta forma, uma vez que qualquer recursão necessário pode ser adiada (e com toda a probabilidade não será necessário, uma vez que o primeiro anfitrião é provável suficiente).
O que é novo nesta versão:.
- Fix bug onde dns_srv_print () não conseguiu imprimir um caráter de fuga NUL
O que é novo na versão 20100813:
- Adicionar socket.c em contrib /. Estou usando e desenvolvendo isso por um ano mais ou menos dentro de outros projetos. Conceitualmente é um invólucro simples em torno da API sockets BSD que manipula pesquisas de DNS e negociação SSL de forma transparente e de forma assíncrona.
- Depois de criar um soquete com so_open (), o chamador define os modos apropriados, por exemplo, so_connect () e so_starttls (). O chamador pode então esperar por eles para completar (eles vão voltar EAGAIN se necessário), ou de forma mais conveniente ignorar o resultado e ir diretamente para tentar lê e escreve. Erros dos estados anteriores, incluindo EAGAIN, será devolvido em qualquer leitura ou escrita tentativas até que esses estados estão completos.
- Use so_pollfd () e so_events (), assim como as contrapartidas dns.c. Eles retornam, respectivamente, o descritor e eventos bandeiras apropriadas, dependendo de qual estado interno está em execução. O pedido só precisa se preocupar com a emissão de leitura / escrita operações lógicas.
O que é novo na versão 20100709:
- Corrigir MinGW construir adicionando dns_strsep interna () e DNS_ETIMEDOUT.
O que é novo na versão 20100708:
- Verifique a validade do comprimento retornado por dns_d_expand () antes passando-o como o comprimento de origem para dns_d_cleave () dentro de dns_hints_query () outra coisa que pode fazer uma leitura inválido. Graças ao Anonymous.
- Tag rel-20100708 (d493a0f7d8f1d67ef312a7ca3e142660895b32d8).
- NOTA: Esqueceu-se de colisão DNS_V_REL para a liberação 20100708, e porque a interface novas estatísticas estava no porta-malas também deveria ter colidido DNS_V_API. Agora é tarde demais.
O que é novo na versão 20100515:
- loop sobre nameservers resolv.conf: options.attempts vezes.
- Impor limites SPF consulta de nome canônico ao executar mecanismos de MX e PTR.
- Adicionar dns_p_study () para aprender e faixas de seção da loja.
- Mantenha o controle de seção varia em dns_p_push ().
- dns_p_merge Refactor () para melhorar o desempenho em grandes pacotes.
- Adicionar dns_p_make () para malloc'ing e inicializar um novo pacote.
- Impor limites da consulta SPF prazo. Mudou o layout do spf_limits struct em antecipação de impor limites sobre consultas de acolhimento MX e PTR.
- bug Fix no gerador de instrução VM para os índices de salto de mais de 255.
O que é novo na versão 20100416:.
- Adicionado suporte SSHFP
- Tag rel-20100416 (5bd9963e693510e485a1f081f6c98a95d84debfe).
- 90% de taxa de passagem sobre o conjunto de testes OpenSPF. Precisa para simular o tempo limite para passar os testes TempError. Alguns dos testes de gramática são discutíveis.
- Adicionado OpenSPF YAML processador suíte de testes. Requer libyaml.
O que é novo na versão 0.5:
- Fix bug em que não fallback de & quot; ligamento & quot ; método para & quot; arquivo & quot; método se o sinalizador recurse foi desativado.
- gerador de Pesquisa pode ter mudado o qname. Assim, em dns_ai_nextent () canonizar o qname da resposta, não a qname inicialmente apresentado para o resolvedor.
Comentários não encontrado