From: Karel Slany Date: Fri, 30 Aug 2013 10:35:48 +0000 (+0200) Subject: pyLDNS: Added ldns_resolver.new(). X-Git-Tag: release-1.6.17rc1~46 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1bffd1b192147b9fffd3c232d8eb4f94edc3b055;p=thirdparty%2Fldns.git pyLDNS: Added ldns_resolver.new(). --- diff --git a/contrib/python/Changelog b/contrib/python/Changelog index 6b08bff8..860f82e7 100644 --- a/contrib/python/Changelog +++ b/contrib/python/Changelog @@ -4,7 +4,7 @@ * Fixed memory leaks when destroying ldns_resolver. * Removed ldns_pkt.section_count(), ldns_pkt.set_searchlist_count() because it is marked static in the library. - * Added ldns_pkt.new(). + * Added ldns_pkt.new(), ldns_resolver.new(). * Marked as returning new object ldns_pkt.get_section_clone(), ldns_resolver.get_addr_by_name(), ldns_resolver.get_name_by_addr(), ldns_resolver.search(). diff --git a/contrib/python/examples/test_resolver.py b/contrib/python/examples/test_resolver.py index 256dd316..274a4d87 100755 --- a/contrib/python/examples/test_resolver.py +++ b/contrib/python/examples/test_resolver.py @@ -232,6 +232,18 @@ if True: set_error() +#if not error_detected: +if True: + method_name = class_name + ".edns_udp_size()" + try: + resolver = ldns.ldns_resolver.new() + if not isinstance(resolver, ldns.ldns_resolver): + set_error() + except: + set_error() + + + #if not error_detected: if True: method_name = class_name + ".edns_udp_size()" diff --git a/contrib/python/ldns_resolver.i b/contrib/python/ldns_resolver.i index 011511b8..b926e65a 100644 --- a/contrib/python/ldns_resolver.i +++ b/contrib/python/ldns_resolver.i @@ -50,7 +50,7 @@ SWIGTYPE_p_ldns_struct_resolver, SWIG_POINTER_OWN | 0 )); } -//TODO: pop_nameserver a podobne funkce musi predat objekt do spravy PYTHONU!! +%newobject ldns_resolver_new; %newobject ldns_resolver_pop_nameserver; %newobject ldns_resolver_query; %newobject ldns_resolver_search; @@ -320,6 +320,30 @@ record." # LDNS_RESOLVER_CONSTRUCTORS_ # + @staticmethod + def new(): + """ + Creates a new resolver object. + + :return: (:class:`ldns_resolver`) New resolver object or None. + + .. note:: + The returned resolver object is unusable unless some + name servers are added. + + **Usage** + >>> resolver = ldns.ldns_resolver.new() + >>> ns_addr = ldns.ldns_rdf.new_frm_str("8.8.8.8", ldns.LDNS_RDF_TYPE_A) + >>> if not ns_addr: raise Exception("Can't create resolver address.") + >>> status = resolver.push_nameserver(ns_addr) + >>> if status != ldns.LDNS_STATUS_OK: raise Exception("Can't push resolver address.") + >>> pkt = resolver.query("www.nic.cz.", ldns.LDNS_RR_TYPE_A, ldns.LDNS_RR_CLASS_IN, ldns.LDNS_RD) + >>> if (pkt) and (pkt.answer()): + >>> print pkt.answer() + www.nic.cz. 1265 IN A 217.31.205.50 + """ + return _ldns.ldns_resolver_new() + @staticmethod def new_frm_file(filename = "/etc/resolv.conf", raiseException=True): """