dns.c는 sincle의 .c 파일에있는 재귀 논 블로킹 (non-blocking) DNS 리졸버 라이브러리 재진입이다. 또한 stub 해결 훌륭한 작품.
실제 DNS 패킷 중심으로 핵심 API; DNS 자체 일반적인있다. 이 쿼리하고, AAAA 및 PTR 훨씬 쉽게 이외의 기록을 조작합니다.
사용자 지정 정렬과 재시작 기록 반복자. MX 또는 의미 위해 SRV 레코드 (예 : 환경 설정 및 우선 순위)의 반복으로 간단하다 :
dns_rr_foreach (RR, 패킷, .type = DNS_T_SRV, .sort = dns_rr_i_order) {
& NBSP; ...
}
또는 재시작 방법 :
스위치 (내 -> 상태) {
경우 0 :
& NBSP; dns_rr_i_init (내 -> rr_i);
& NBSP; 내 -> rr_i.type = DNS_T_SRV;
& NBSP; 내 -> rr_i.sort = dns_rr_i_order;
& NBSP; 내 -> 상태 ++;
경우 1 :
& NBSP; 동안 (dns_rr_grep (RR, 1, 내 -> rr_i, 내 -> 패킷, 오류)) {
& NBSP; & nbsp; & nbsp; 확인 ...
& NBSP; & nbsp; & nbsp; 확인 / * 이벤트 루프 *에 리턴 /
& NBSP; }
}
"스마트"쿼리를 지원합니다. 핵심 해결에 사용하도록 설정하면, NS, MX 및 SRV 레코드에 대한 쿼리는 항상 기록에 RDATA 정식 호스트 이름을 확인하려고합니다. 신뢰할 수있는 서버가 접착제를 제공하지 않습니다 NOT IN-전문 분야 및 / 또는 어떤위한 호스트는 자동적으로 해결하고 응답 패킷에 반환됩니다. 스텁 재귀 해결 인스턴스화 모두 지원됩니다. "스마트"해결 방법은 주소 정보로 (즉한다 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_open ()으로 소켓을 생성 한 후, 호출자는 적절한 모드, 예를 설정 so_connect ()와 so_starttls (). 호출자는 그들가 완료 될 때까지 다음 (필요한 경우가 EAGAIN을 반환합니다) 기다리거나보다 편리하게 결과를 무시하고 읽기와 쓰기를 시도하기 바로 이동할 수 있습니다. EAGAIN을 포함한 이전의 상태,에서 오류는 읽기에 반품 그 상태가 완료 될 때까지 쓰기 시도를한다.
단지 dns.c 대응 등 so_pollfd ()와 so_events ()를 사용합니다. 이들은 각각, 내부 상태의 실행에 따라 적절한 디스크립터 및 이벤트 플래그를 리턴한다. 애플리케이션은 논리 읽기 / 쓰기 작업을 발행 걱정할 필요가 없다.
이 버전 20100709의 새로운 기능 :
는 MinGW 내부 dns_strsep ()와 DNS_ETIMEDOUT을 추가하여 구축 수정합니다.
이 버전 20100708의 새로운 기능 :
이 dns_hints_query의 내부 () dns_d_cleave하기 위해 소스 길이로 전달하기 전에 dns_d_expand (에 의해 반환 된 길이)의 유효성을 확인 () 다른 우리는 잘못된 읽기를 할 수 있습니다. 익명 감사합니다.
태그 확인해-20100708 (d493a0f7d8f1d67ef312a7ca3e142660895b32d8).
주 : 20100708 릴리스 DNS_V_REL를 범프 분실, 새로운 통계 인터페이스는 트렁크에 있었기 때문에 또한 DNS_V_API을 마주해야합니다. 지금은 너무 늦었.
이 버전 20100515의 새로운 기능 :
네임 서버의 resolv.conf를 통해 루프 : options.attempts 시간.
MX 및 PTR 메커니즘을 실행하는 경우 SPF 정식 이름 쿼리 제한을 적용.
배울 수 dns_p_study () 및 저장 부 범위를 추가합니다.
dns_p_push 섹션 범위를 추적 ().
리팩터링 dns_p_merge ()는 큰 패킷의 성능을 향상시킬 수 있습니다.
malloc하는 새로운 패킷을 초기화 () dns_p_make를 추가합니다.
SPF 용어 쿼리 제한을 적용. MX 및 PTR 호스트 쿼리에 대한 제한을 적용 예상 구조체 spf_limits의 레이아웃을 변경.
255의 점프 지수에 대한 VM 명령 발생기에서 버그를 수정.
이 버전 20100416의 새로운 기능 :
이 추가 SSHFP 지원.
태그 확인해-20100416 (5bd9963e693510e485a1f081f6c98a95d84debfe).
OpenSPF 테스트 스위트에 90 % 통과 속도. 가 TempError 시험을 통과하기 위해 시간 제한을 시뮬레이션 할 필요가있다. 문법 시험의 일부는 논쟁의 여지가있다.
추가 OpenSPF YAML 테스트 스위트 프로세서. libyaml이 필요합니다.
이 0.5 버전의 새로운 기능 :
이 우리가 & quot에서 폴백하지 않은 버그를 수정, 바인드 & quot; 파일 & quot; 메소드를 & quot; 방법 재귀 플래그가 비활성화 된 경우.
검색 발전기의 qname를 변경되었을 수 있습니다. 그래서, dns_ai_nextent에 () 답이 아닌 원래 해결에 제출의 qname에서의 qname를 정규화.
댓글을 찾을 수 없습니다