dns.c là một reentrant, đệ quy và không chặn thư viện resolver DNS lưu trong một tập tin sincle .c. Ngoài ra các công trình lớn như một giải quyết vẫn còn sơ khai.
API lõi được xây dựng xung quanh gói DNS thực tế; chung chung kiểu như DNS chính nó. Điều này làm cho các truy vấn và thao tác các hồ sơ khác hơn so với A, AAAA, và PTR dễ dàng hơn nhiều.
Vòng lặp kỷ lục restartable với người dùng quy định phân loại. Iterating trên MX hoặc bản ghi SRV để ngữ nghĩa (tức là sở thích và ưu tiên) là đơn giản như:
dns_rr_foreach (& rr, gói, .type = DNS_T_SRV, .sort = & dns_rr_i_order) {
& Nbsp; ...
}
Hoặc một cách restartable:
switch (may-> nhà nước) {
trường hợp 0:
& Nbsp; dns_rr_i_init (& may-> rr_i);
& Nbsp; may-> rr_i.type = DNS_T_SRV;
& Nbsp; may-> rr_i.sort = & dns_rr_i_order;
& Nbsp; may-> nhà nước ++;
Trường hợp 1:
& Nbsp; while (dns_rr_grep (& rr, 1, & may-> rr_i, may-> gói, và lỗi)) {
& Nbsp; & nbsp; & nbsp; ...
& Nbsp; & nbsp; & nbsp; / * Trở lại vào vòng lặp sự kiện * /
& Nbsp; }
}
Hỗ trợ các truy vấn "thông minh". Khi được kích hoạt ở bộ phận cốt lõi, các truy vấn cho NS, MX, và bản ghi SRV sẽ luôn cố gắng để giải quyết các tên máy chủ RDATA kinh điển vào một bản ghi A. Host mà không phải trong tòa án cấp thấp và / hoặc những máy chủ có thẩm quyền không cung cấp keo được automagically giải quyết và trả lại trong các gói tin trả lời. Hỗ trợ cho cả hai vẫn còn sơ khai và các khởi resolver đệ quy. Giải quyết "thông minh" cũng được xây dựng vào các thông tin địa chỉ (tức là getaddrinfo ()) API.
Ngẫu nhiên cổng nguồn và QIDs.
Non-blocking, lại lõm, getaddrinfo lặp dựa trên () giao diện: dns_ai_open (), dns_ai_nextent (), dns_ai_close (). Ngữ nghĩa giống như getaddrinfo (), nhưng cũng có một loại kỷ lục. Lặp trên (struct addrinfo) các đối tượng ngay cả khi truy vấn một MX, NS, SRV (et al) chủ nhà. Có ít độ trễ làm các truy vấn "thông minh" theo cách này, vì bất kỳ đệ quy cần thiết có thể được hoãn lại (và trong khả năng tất cả sẽ không cần thiết, vì máy chủ đầu tiên có khả năng đủ).
là mới trong phiên bản này:.
- Fix lỗi nơi dns_srv_print () không thể in một NUL nhân vật đuôi
là gì mới trong phiên bản 20100813:
- Thêm vào socket.c contrib /. Tôi đã sử dụng và phát triển này cho một năm hoặc lâu hơn trong các dự án khác. Khái niệm nó là một wrapper đơn giản xung quanh các hốc BSD API để xử lý tra cứu DNS và đàm phán SSL minh bạch và không đồng bộ.
- Sau khi tạo một socket với so_open (), người gọi đặt các phương thức thích hợp, ví dụ: so_connect () và so_starttls (). Người gọi sau đó có thể chờ đợi cho họ để hoàn thành (họ sẽ trở EAGAIN nếu cần thiết), hoặc thuận tiện hơn bỏ qua kết quả và di chuyển trực tiếp để cố gắng đọc và ghi. Lỗi từ các tiểu bang trước đây, bao gồm cả EAGAIN, sẽ được trả lại ngày nào đọc hay viết những nỗ lực cho đến những quốc gia đầy đủ.
- Sử dụng so_pollfd () và so_events () giống như các đối tác dns.c. Họ quay trở lại, tương ứng, mô tả và sự kiện cờ thích hợp tùy thuộc vào trạng thái nội bộ được thực hiện. Ứng dụng này chỉ cần phải lo lắng về việc ban hành các hoạt động đọc / ghi logic.
là gì mới trong phiên bản 20100709:
- Fix MinGW xây dựng bằng cách thêm dns_strsep nội bộ () và DNS_ETIMEDOUT.
là gì mới trong phiên bản 20100708:
- Kiểm tra tính hợp lệ của chiều dài trả về bởi dns_d_expand () trước khi đi qua nó như độ dài nguồn để dns_d_cleave () bên trong của dns_hints_query () khác, chúng tôi có thể làm một đọc không hợp lệ. Nhờ Anonymous.
- Tag rel-20100708 (d493a0f7d8f1d67ef312a7ca3e142660895b32d8).
- Chú ý: Quên bump DNS_V_REL cho việc phát hành 20100708, và bởi vì giao diện số liệu thống kê mới là trong thân cây cũng nên đã tình cờ gặp DNS_V_API. Quá muộn rồi.
là gì mới trong phiên bản 20100515:
- Loop trên máy chủ tên resolv.conf: options.attempts lần.
- Enforce SPF tên kinh điển truy vấn giới hạn khi chạy MX và PTR cơ chế.
- Thêm dns_p_study () để tìm hiểu và phần cửa hàng dãy.
- Theo dõi các phần dao động trong dns_p_push ().
- Refactor dns_p_merge () để cải thiện hiệu suất trên các gói tin lớn.
- Thêm dns_p_make () cho malloc'ing và khởi tạo một gói mới.
- Thực thi truy vấn giới hạn SPF hạn. Thay đổi cách bố trí của spf_limits struct với dự đoán của giới hạn thực thi trên MX và PTR truy vấn máy chủ.
- Fix lỗi trong máy phát điện dẫn VM cho các chỉ số nhảy của hơn 255.
là gì mới trong phiên bản 20100416:.
- hỗ trợ gia tăng SSHFP
- Tag rel-20100416 (5bd9963e693510e485a1f081f6c98a95d84debfe).
- 90% tỷ lệ đoạn trên bộ kiểm tra OpenSPF. Cần để mô phỏng thời gian chờ để vượt qua các bài kiểm tra TempError. Một số thử nghiệm ngữ pháp đang gây tranh cãi.
- Added OpenSPF YAML xử lý bộ kiểm tra. Yêu cầu libyaml.
là gì mới trong phiên bản 0.5:
- lỗi Fix nơi mà chúng tôi đã không dự phòng từ & quot; bind & quot ; phương pháp để & quot; tập tin & quot; Phương pháp nếu cờ recurse đã bị vô hiệu hóa.
- máy phát điện tìm kiếm có thể đã thay đổi QName. Vì vậy, trong dns_ai_nextent () canonicalize các QName từ các câu trả lời, không phải là QName nộp ban đầu cho giải quyết.
Bình luận không