dns.c es una reentrada, recursivo y el bloqueo no-librería de resolución DNS que reside en un archivo .c sincle. También funciona como un gran talón de resolución.
API Core construido alrededor paquete DNS real; tan genérico como sí DNS. Esto hace que la consulta y la manipulación de los registros distintos de A, AAAA, y PTR mucho más fácil.
Iteradores récord reiniciables con clasificación especificado por el usuario. Iteración en MX o registros SRV en orden semántico (es decir, de preferencia y prioridad) es tan simple como:
dns_rr_foreach (y rr, paquete, .type = DNS_T_SRV, .sort = & dns_rr_i_order) {
& Nbsp; ...
}
O de una manera reiniciable:
switch (mi-> Estado) {
caso 0:
& Nbsp; dns_rr_i_init (y mi-> rr_i);
& Nbsp; mi-> rr_i.type = DNS_T_SRV;
& Nbsp; mi-> rr_i.sort = & dns_rr_i_order;
& Nbsp; mi-> Estado ++;
case 1:
& Nbsp; while (dns_rr_grep (y rr, 1, y mi-> rr_i, mi-> paquete, y error)) {
& Nbsp; & nbsp; & nbsp; ...
& Nbsp; & nbsp; & nbsp; / * De retorno en bucle de eventos * /
& Nbsp; }
}
Soporta consultas "inteligentes". Cuando se activa en la resolución de núcleo, las consultas de NS, MX y registros SRV siempre intentarán resolver el nombre de host canónico RDATA en un registro A. Hosts que no son y / o para los que en-bailía el servidor autorizado no proporciona el pegamento se resuelven y se devuelven en el paquete de respuesta automágicamente. Apoyado por tanto talón y ejemplificaciones del resolver recursivas. Resolución "Smart" también está incorporado en la información de direcciones (es decir getaddrinfo) () API.
Aleatorizado puertos de origen y QIDS.
Sin bloqueo, reentrante, getaddrinfo basada en iterator () Interfaz: dns_ai_open (), dns_ai_nextent (), dns_ai_close (). Semánticamente igual getaddrinfo (), pero también tiene un tipo de registro. Iterar sobre (struct addrinfo) los objetos, incluso cuando se consulta un MX, NS, SRV (y otros) de acogida. Hay menos latencia hacer consultas "inteligentes" de esta manera, ya que cualquier recursividad necesario se puede posponer (y con toda probabilidad no será necesario, ya que la primera acogida es probable que sea suficiente).
¿Qué es nuevo en esta versión:.
- Fix bug donde dns_srv_print () no se puede imprimir un carácter de salida NUL
¿Cuál es nuevo en la versión 20100813:
- Añadir socket.c en contrib /. He estado usando y desarrollando esto por un año más o menos dentro de otros proyectos. Conceptualmente es un simple envoltorio alrededor del sockets BSD API que se encarga de las búsquedas de DNS y negociación SSL con transparencia y de forma asíncrona.
- Después de crear un socket con so_open (), la persona que llama establece los modos apropiados, por ejemplo, so_connect () y so_starttls (). La persona que llama puede entonces esperar a que se completen (que volverán EAGAIN si es necesario), o más bien ignorar el resultado y pasar directamente a intentar lee y escribe. Los errores de los estados anteriores, incluyendo EAGAIN, serán devueltos en cualquier lectura o escritura intentos hasta que esos estados son completas.
- Uso so_pollfd () y so_events () al igual que las contrapartes dns.c. Devuelven, respectivamente, las banderas del descriptor de eventos y adecuadas en función de que el estado interno está ejecutando. La aplicación sólo tiene que preocuparse por la emisión de las operaciones de lectura / escritura lógicas.
¿Cuál es nuevo en la versión 20100709:
- Fix MinGW construir añadiendo dns_strsep interna () y DNS_ETIMEDOUT.
¿Qué hay de nuevo en la versión 20100708:
- Comprobar la validez de la longitud devuelta por dns_d_expand () antes de pasandolo como la longitud de la fuente de dns_d_cleave () dentro de dns_hints_query () otra cosa que podríamos hacer una lectura válida. Gracias a Anonymous.
- Tag rel-20100708 (d493a0f7d8f1d67ef312a7ca3e142660895b32d8).
- NOTA: Se olvidó de chocar DNS_V_REL para la liberación 20100708, y debido a la nueva interfaz de estadísticas estaba en el maletero también debería haber golpeado DNS_V_API. Ahora es demasiado tarde.
¿Cuál es nuevo en la versión 20100515:
- Loop sobre servidores de nombres resolv.conf: options.attempts veces.
- Haga cumplir SPF nombre canónico límites de consulta cuando se ejecuta mecanismos MX y PTR.
- Añadir dns_p_study () para aprender y rangos sección tienda.
- Mantenga un registro de sección varía en dns_p_push ().
- dns_p_merge Refactor () para mejorar el rendimiento en los paquetes grandes.
- Añadir dns_p_make () para malloc'ing e inicializar un nuevo paquete.
- Haga cumplir límites de consulta SPF plazo. Se ha cambiado el diseño de spf_limits struct en previsión de la aplicación de límites en las consultas de host MX y PTR.
- Corrección de errores en el generador de instrucción VM para los índices de salto de más de 255.
¿Qué hay de nuevo en la versión 20100416:.
- Añadido soporte SSHFP
- Tag rel-20100416 (5bd9963e693510e485a1f081f6c98a95d84debfe).
- 90% la tasa de pasaje en el conjunto de pruebas OpenSPF. Necesidad de simular los tiempos de espera para pasar las pruebas TempError. Algunas de las pruebas de gramática son discutibles.
- Agregado OpenSPF YAML procesador serie de pruebas. Requiere libyaml.
¿Qué hay de nuevo en la versión 0.5:
- Corrección de errores donde no tuvimos repliegue de & quot; bind & quot ; método a & quot; archivo & quot; método si la bandera recurse fue desactivado.
- Buscar generador puede haber cambiado la qname. Así, en dns_ai_nextent () canonizar el qname de la respuesta, no la qname presentado originalmente a la resolución.
Comentarios que no se encuentran