dns.c jest wklęsłego, rekurencyjne i non-blocking Biblioteka rozpoznawania nazw DNS, który znajduje się w pliku sincle .c. Również działa świetnie jako rezolwerem zwrotnicy.
Rdzeń API zbudowany wokół rzeczywistego pakietu DNS; ogólny charakter samego DNS. To sprawia, zapytań i manipulacji rekordy inne niż A, AAAA i PTR znacznie łatwiejsze.
Ponownego uruchamiania iteratory rekord z określonym przez użytkownika sortowania. Iteracja nad domeną lub rekordów SRV w porządku semantycznego (czyli uprzywilejowane i priorytetowych) jest tak proste, jak:
dns_rr_foreach (i rr, pakiet, .typ = DNS_T_SRV, .sort = & dns_rr_i_order) {
& Nbsp; ...
}
Lub w restartowalnym sposób:
Przełącznik (my-> Stan) {
Sprawa 0:
& Nbsp; dns_rr_i_init (i zapalenia mięśnia> rr_i);
& Nbsp; my-> rr_i.type = DNS_T_SRV;
& Nbsp; my-> rr_i.sort = & dns_rr_i_order;
& Nbsp; my-> Stan ++;
Przypadek 1:
& Nbsp; while (dns_rr_grep (i rr, 1, i my-> rr_i, zapalenia mięśnia> pakietów, i błędu)) {
& Nbsp; & nbsp; & nbsp; ...
& Nbsp; & nbsp; & nbsp; / * Powrót do pętli zdarzeń * /
& Nbsp; }
}
Obsługuje "inteligentne" pytania. Gdy włączony przelicznika rdzenia, zapytania dotyczące NS domeną i rekordów SRV zawsze próbować rozwiązać nazwę kanoniczną hosta RDATA w rekord A. Gospodarze, które są nie-bailiwick i / lub dla których serwer autorytatywny nie zawiera kleju są automagicznie rozwiązany i powrócił w pakiecie odpowiedzi. Obsługiwane zarówno odgałęzienie i rekurencyjnych dawałaby przelicznika. "Inteligentne" rozdzielczość jest również wbudowany w informacji adresowej (tj getaddrinfo ()) API.
Randomizowane porty źródłowe i QIDs.
Bez blokowania, wklęsłych, getaddrinfo oparte iterator () Interfejs: dns_ai_open (), dns_ai_nextent (), dns_ai_close (). Semantycznie jak getaddrinfo (), ale również zajmuje typ rekordu. Iteracyjnego (struct addrinfo) obiektów nawet przy odpytywaniu o MX, NS, SRV (i inni) hosta. Jest mniej opóźnienie robi "inteligentne" pytania w ten sposób, ponieważ wszelkie niezbędne rekurencji może być odroczone (i najprawdopodobniej nie będzie konieczne, ponieważ pierwszy gospodarz jest prawdopodobnie wystarczająca).
Co jest nowy w tym wydaniu:.
- Naprawiono błąd, gdzie dns_srv_print () nie udało się wydrukować z tyłu NUL
Co nowego w wersji 20100813:
- Dodaj socket.c w contrib /. Używam i rozwój to za rok lub tak w ramach innych projektów. Koncepcyjnie to proste otoki wokół gniazd API BSD, która obsługuje wyszukiwania DNS i negocjacji SSL przejrzysty i asynchronicznie.
- Po utworzeniu gniazda z so_open (), wywołujący wybiera odpowiednie tryby, np so_connect () i so_starttls (). Dzwoniący może wtedy czekać na ich zakończenie (oni powrócić EAGAIN jeśli to konieczne), lub bardziej wygodnie zignorować wynik i przejść bezpośrednio do próby odczytu i zapisu. Błędy z ostatnich państw, w tym EAGAIN, zostaną zwrócone na każdej próby odczytu lub zapisu, dopóki te państwa są kompletne.
- Użyj so_pollfd () i so_events () tak jak odpowiedniki dns.c. Wracają, odpowiednio, odpowiednich deskryptorów i zdarzeń flagi w zależności od stanu wewnętrznego wykonuje. Aplikacja musi martwić się tylko o wydanie logicznych operacji odczytu / zapisu.
Co nowego w wersji 20100709:
- Fix MinGW zbudować dodając dns_strsep wewnętrznego () i DNS_ETIMEDOUT.
Co nowego w wersji 20100708:
- Sprawdź ważność długości zwracanej przez dns_d_expand () przed przepuszczenie go jako długość źródłowego dns_d_cleave () wewnątrz dns_hints_query () jeszcze może zrobić nieprawidłowy odczyt. Dzięki Anonim.
- Tag rel-20100708 (d493a0f7d8f1d67ef312a7ca3e142660895b32d8).
- UWAGA: Nie pamiętasz wpadać DNS_V_REL do uwolnienia 20100708, a ponieważ nowy interfejs statystyki był w bagażniku również powinien wpadł DNS_V_API. Teraz już za późno.
Co nowego w wersji 20100515:
- Pętla na serwery nazw resolv.conf: options.attempts razy.
- Wymuszanie SPF nazwa kanoniczna ograniczenia wyszukiwania podczas uruchamiania mechanizmów MX i PTR.
- Dodaj dns_p_study (), aby dowiedzieć się i zakresy sekcja sklepu.
- Śledzenie sekcji waha się w dns_p_push ().
- dns_p_merge Refactor (), aby poprawić wydajność na dużych pakietów.
- Dodaj dns_p_make () dla malloc'ing i zainicjowania nowego pakietu.
- Wymuszanie SPF utrzymujące ograniczenia wyszukiwania. Zmieniono układ struct spf_limits w oczekiwaniu na egzekwowanie limitów MX i PTR zapytaniami gospodarzy.
- Naprawiono błąd w instrukcji dla indeksów generatora VM skok o ponad 255.
Co nowego w wersji 20100416:.
- Wsparcie Dodane SSHFP
- Tag rel-20100416 (5bd9963e693510e485a1f081f6c98a95d84debfe).
- 90% wskaźnik przejścia na testowej pakietu OpenSPF. Potrzebujesz do symulacji limity czasu, aby przejść testy TempError. Niektóre z testów gramatycznych są dyskusyjne.
- Procesor Zestaw testów Dodane OpenSPF YAML. Wymaga libyaml.
Co nowego w wersji 0.5:
- Naprawiono błąd, gdzie nie Przenieś się z & quot; wiążą & quot ; metoda & quot; pliku & quot; Metoda jeśli recurse flaga została wyłączona.
- generator Wyszukaj może zmieniły qname. Tak więc, w dns_ai_nextent () canonicalize na qname z odpowiedzi, nie qname pierwotnie przedstawiony do rozpoznawania nazw.
Komentarze nie znaleziono