1 2006-03-17 Bob Halley <halley@nominum.com>
3 * dns/resolver.py (Resolver.query): The resolver needlessly
4 delayed responses for successful queries.
6 2006-01-18 Bob Halley <halley@dnspython.org>
8 * dns/rdata.py: added a validate() method to the rdata class. If
9 you change an rdata by assigning to its fields, it is a good
10 idea to call validate() when you are done making changes.
11 For example, if 'r' is an MX record and then you execute:
13 r.preference = 100000 # invalid, because > 65535
16 The validation will fail and an exception will be raised.
18 2006-01-11 Bob Halley <halley@dnspython.org>
20 * dns/ttl.py: TTLs are now bounds checked to be within the closed
21 interval [0, 2^31 - 1].
23 * The BIND 8 TTL syntax is now accepted in the SOA refresh, retry,
24 expire, and minimum fields, and in the original_ttl field of
25 SIG and RRSIG records.
27 2006-01-04 Bob Halley <halley@dnspython.org>
29 * dns/resolver.py: The windows registry irritatingly changes the
30 list element delimiter in between ' ' and ',' (and vice-versa)
31 in various versions of windows. We now cope by always looking
32 for either one (' ' first).
34 2005-12-27 Bob Halley <halley@dnspython.org>
36 * dns/e164.py: Added routines to convert between E.164 numbers and
37 their ENUM domain name equivalents.
39 * dns/reversename.py: Added routines to convert between IPv4 and
40 IPv6 addresses and their DNS reverse-map equivalents.
42 2005-12-18 Bob Halley <halley@dnspython.org>
44 * dns/rdtypes/ANY/LOC.py (_tuple_to_float): The sign was lost when
45 converting a tuple into a float, which broke conversions of
46 south latitudes and west longitudes.
48 2005-11-17 Bob Halley <halley@dnspython.org>
50 * dns/zone.py: The 'origin' parameter to from_text() and from_file()
51 is now optional. If not specified, dnspython will use the
52 first $ORIGIN in the text as the zone's origin.
54 * dns/zone.py: Sanity checks of the zone's origin node can now
57 2005-11-12 Bob Halley <halley@dnspython.org>
59 * dns/name.py: Preliminary Unicode support has been added for
60 domain names. Running dns.name.from_text() on a Unicode string
61 will now encode each label using the IDN ACE encoding. The
62 to_unicode() method may be used to convert a dns.name.Name with
63 IDN ACE labels back into a Unicode string. This functionality
64 requires Python 2.3 or greater.
66 2005-10-31 Bob Halley <halley@dnspython.org>
68 * (Version 1.3.5 released)
70 2005-10-12 Bob Halley <halley@dnspython.org>
72 * dns/zone.py: Zone.iterate_rdatasets() and Zone.iterate_rdatas()
73 did not have a default rdtype of dns.rdatatype.ANY as their
74 docstrings said they did. They do now.
76 2005-10-06 Bob Halley <halley@dnspython.org>
78 * dns/name.py: Added the parent() method, which returns the
81 2005-10-01 Bob Halley <halley@dnspython.org>
83 * dns/resolver.py: Added zone_for_name() helper, which returns
84 the name of the zone which contains the specified name.
86 * dns/resolver.py: Added get_default_resolver(), which returns
87 the default resolver, initializing it if necessary.
89 2005-09-29 Bob Halley <halley@dnspython.org>
91 * dns/resolver.py (Resolver._compute_timeout): If time goes
92 backwards a little bit, ignore it.
94 2005-07-31 Bob Halley <halley@dnspython.org>
96 * (Version 1.3.4 released)
98 2005-07-31 Bob Halley <halley@dnspython.org>
100 * dns/message.py (make_response): Trying to respond to a response
101 threw a NameError while trying to throw a FormErr since it used
102 the wrong name for the FormErr exception.
104 * dns/query.py (_connect): We needed to ignore EALREADY too.
106 * dns/query.py: Optional "source" and "source_port" parameters
107 have been added to udp(), tcp(), and xfr(). Thanks to Ralf
108 Weber for suggesting the change and providing a patch.
110 2005-06-05 Bob Halley <halley@dnspython.org>
112 * dns/query.py: The requirement that the "where" parameter be
113 an IPv4 or IPv6 address is now documented.
115 2005-06-04 Bob Halley <halley@dnspython.org>
117 * dns/resolver.py: The resolver now does exponential backoff
118 each time it runs through all of the nameservers.
120 * dns/resolver.py: rcodes which indicate a nameserver is likely
121 to be a "permanent failure" for a query cause the nameserver
122 to be removed from the mix for that query.
124 2005-01-30 Bob Halley <halley@dnspython.org>
126 * (Version 1.3.3 released)
128 2004-10-25 Bob Halley <halley@dnspython.org>
130 * dns/rdtypes/ANY/TXT.py (TXT.from_text): The masterfile parser
131 incorrectly rejected TXT records where a value was not quoted.
133 2004-10-11 Bob Halley <halley@dnspython.org>
135 * dns/message.py: Added make_response(), which creates a skeletal
136 response for the specified query. Added opcode() and set_opcode()
137 convenience methods to the Message class. Added the request_payload
138 attribute to the Message class.
140 2004-10-10 Bob Halley <halley@dnspython.org>
142 * dns/zone.py (from_xfr): dns.zone.from_xfr() in relativization
143 mode incorrectly set zone.origin to the empty name.
145 2004-09-02 Bob Halley <halley@dnspython.org>
147 * dns/name.py (Name.to_wire): The 'file' parameter to
148 Name.to_wire() is now optional; if omitted, the wire form will
149 be returned as the value of the function.
151 2004-08-14 Bob Halley <halley@dnspython.org>
153 * dns/message.py (Message.find_rrset): find_rrset() now uses an
154 index, vastly improving the from_wire() performance of large
155 messages such as zone transfers.
157 2004-08-07 Bob Halley <halley@dnspython.org>
159 * (Version 1.3.2 released)
161 2004-08-04 Bob Halley <halley@dnspython.org>
163 * dns/query.py: sending queries to a nameserver via IPv6 now
166 * dns/inet.py (af_for_address): Add af_for_address(), which looks
167 at a textual-form address and attempts to determine which address
170 * dns/query.py: the default for the 'af' parameter of the udp(),
171 tcp(), and xfr() functions has been changed from AF_INET to None,
172 which causes dns.inet.af_for_address() to be used to determine the
173 address family. If dns.inet.af_for_address() can't figure it out,
174 we fall back to AF_INET and hope for the best.
176 2004-07-31 Bob Halley <halley@dnspython.org>
178 * dns/rdtypes/ANY/NSEC.py (NSEC.from_text): The NSEC text format
179 does not allow specifying types by number, so we shouldn't either.
181 * dns/renderer.py: the renderer module didn't import random,
182 causing an exception to be raised if a query id wasn't provided
183 when a Renderer was created.
185 * dns/resolver.py (Resolver.query): the resolver wasn't catching
186 dns.exception.Timeout, so a timeout erroneously caused the whole
187 resolution to fail instead of just going on to the next server.
189 2004-06-16 Bob Halley <halley@dnspython.org>
191 * dns/rdtypes/ANY/LOC.py (LOC.from_text): LOC milliseconds values
192 were converted incorrectly if the length of the milliseconds
193 string was less than 3.
195 2004-06-06 Bob Halley <halley@dnspython.org>
197 * (Version 1.3.1 released)
199 2004-05-22 Bob Halley <halley@dnspython.org>
201 * dns/update.py (Update.delete): We erroneously specified a
202 "deleting" value of dns.rdatatype.NONE instead of
203 dns.rdataclass.NONE when the thing being deleted was either an
204 Rdataset instance or an Rdata instance.
206 * dns/rdtypes/ANY/SSHFP.py: Added support for the proposed SSHFP
209 2004-05-14 Bob Halley <halley@dnspython.org>
211 * dns/rdata.py (from_text): The masterfile reader did not
212 accept the unknown RR syntax when used with a known RR type.
214 2004-05-08 Bob Halley <halley@dnspython.org>
216 * dns/name.py (from_text): dns.name.from_text() did not raise
217 an exception if a backslash escape ended prematurely.
219 2004-04-09 Bob Halley <halley@dnspython.org>
221 * dns/zone.py (_MasterReader._rr_line): The masterfile reader
222 erroneously treated lines starting with leading whitespace but
223 not having any RR definition as an error. It now treats
224 them like a blank line (which is not an error).
226 2004-04-01 Bob Halley <halley@dnspython.org>
228 * (Version 1.3.0 released)
230 2004-03-19 Bob Halley <halley@dnspython.org>
232 * Added support for new DNSSEC types RRSIG, NSEC, and DNSKEY.
234 2004-01-16 Bob Halley <halley@dnspython.org>
236 * dns/query.py (_connect): Windows returns EWOULDBLOCK instead
237 of EINPROGRESS when trying to connect a nonblocking socket.
239 2003-11-13 Bob Halley <halley@dnspython.org>
241 * dns/rdtypes/ANY/LOC.py (LOC.to_wire): We encoded and decoded LOC
242 incorrectly, since we were interpreting the values of altitiude,
243 size, hprec, and vprec in meters instead of centimeters.
245 * dns/rdtypes/IN/WKS.py (WKS.from_wire): The WKS protocol value is
246 encoded with just one octet, not two!
248 2003-11-09 Bob Halley <halley@dnspython.org>
250 * dns/resolver.py (Cache.maybe_clean): The cleaner deleted items
251 from the dictionary while iterating it, causing a RuntimeError
252 to be raised. Thanks to Mark R. Levinson for the bug report,
253 regression test, and fix.
255 2003-11-07 Bob Halley <halley@dnspython.org>
257 * (Version 1.2.0 released)
259 2003-11-03 Bob Halley <halley@dnspython.org>
261 * dns/zone.py (_MasterReader.read): The saved_state now includes
264 2003-11-01 Bob Halley <halley@dnspython.org>
266 * dns/tokenizer.py (Tokenizer.get): The tokenizer didn't
267 handle escaped delimiters.
269 2003-10-27 Bob Halley <halley@dnspython.org>
271 * dns/resolver.py (Resolver.read_resolv_conf): If no nameservers
272 are configured in /etc/resolv.conf, the default nameserver
273 list should be ['127.0.0.1'].
275 2003-09-08 Bob Halley <halley@dnspython.org>
277 * dns/resolver.py (Resolver._config_win32_fromkey): We didn't
278 catch WindowsError, which can happen if a key is not defined
281 2003-09-06 Bob Halley <halley@dnspython.org>
283 * (Version 1.2.0b1 released)
285 2003-09-05 Bob Halley <halley@dnspython.org>
287 * dns/query.py: Timeout support has been overhauled to provide
288 timeouts under Python 2.2 as well as 2.3, and to provide more
291 2003-08-30 Bob Halley <halley@dnspython.org>
293 * dns/zone.py: dns.exception.SyntaxError is raised for unknown
294 master file directives.
296 2003-08-28 Bob Halley <halley@dnspython.org>
298 * dns/zone.py: $INCLUDE processing is now enabled/disabled using
299 the allow_include parameter. The default is to process $INCLUDE
300 for from_file(), and to disallow $INCLUDE for from_text(). The
301 master reader now calls zone.check_origin_node() by default after
302 the zone has been read. find_rdataset() called get_node() instead
303 of find_node(), which result in an incorrect exception. The
304 relativization state of a zone is now remembered and applied
305 consistently when looking up names. from_xfr() now supports
306 relativization like the _MasterReader.
308 2003-08-22 Bob Halley <halley@dnspython.org>
310 * dns/zone.py: The _MasterReader now understands $INCLUDE.
312 2003-08-12 Bob Halley <halley@dnspython.org>
314 * dns/zone.py: The _MasterReader now specifies the file and line
315 number when a syntax error occurs. The BIND 8 TTL format is now
316 understood when loading a zone, though it will never be emitted.
317 The from_file() function didn't pass the zone_factory parameter
320 2003-08-10 Bob Halley <halley@dnspython.org>
322 * (Version 1.1.0 released)
324 2003-08-07 Bob Halley <halley@dnspython.org>
326 * dns/update.py (Update._add): A typo meant that _add would
327 fail if the thing being added was an Rdata object (as
328 opposed to an Rdataset or the textual form of an Rdata).
330 2003-08-05 Bob Halley <halley@dnspython.org>
332 * dns/set.py: the simple Set class has been moved to its
333 own module, and augmented to support more set operations.
335 2003-08-04 Bob Halley <halley@dnspython.org>
337 * Node and all rdata types have been "slotted". This speeds
338 things up a little and reduces memory usage noticeably.
340 2003-08-02 Bob Halley <halley@dnspython.org>
342 * (Version 1.1.0c1 released)
344 2003-08-02 Bob Halley <halley@dnspython.org>
346 * dns/rdataset.py: SimpleSets now support more set options.
348 * dns/message.py: Added the get_rrset() method. from_file() now
349 allows Unicode filenames and turns on universal newline support if
350 it opens the file itself.
352 * dns/node.py: Added the delete_rdataset() and replace_rdataset()
355 * dns/zone.py: Added the delete_node(), delete_rdataset(), and
356 replace_rdataset() methods. from_file() now allows Unicode
357 filenames and turns on universal newline support if it opens the
358 file itself. Added a to_file() method.
360 2003-08-01 Bob Halley <halley@dnspython.org>
362 * dns/opcode.py: Opcode from/to text converters now understand
363 numeric opcodes. The to_text() method will return a numeric opcode
364 string if it doesn't know a text name for the opcode.
366 * dns/message.py: Added set_rcode(). Fixed code where ednsflags
367 wasn't treated as a long.
369 * dns/rcode.py: ednsflags wasn't treated as a long. Rcode from/to
370 text converters now understand numeric rcodes. The to_text()
371 method will return a numeric rcode string if it doesn't know
372 a text name for the rcode.
374 * examples/reverse.py: Added a new example program that builds a
375 reverse (address-to-name) mapping table from the name-to-address
376 mapping specified by A RRs in zone files.
378 * dns/node.py: Added get_rdataset() method.
380 * dns/zone.py: Added get_rdataset() and get_rrset() methods. Added
383 2003-07-31 Bob Halley <halley@dnspython.org>
385 * dns/zone.py: Added the iterate_rdatasets() method which returns
386 a generator which yields (name, rdataset) tuples for all the
387 rdatasets in the zone matching the specified rdatatype.
389 2003-07-30 Bob Halley <halley@dnspython.org>
391 * (Version 1.1.0b2 released)
393 2003-07-30 Bob Halley <halley@dnspython.org>
395 * dns/zone.py: Added find_rrset() and find_rdataset() convenience
396 methods. They let you retrieve rdata with the specified name
397 and type in one call.
399 * dns/node.py: Nodes no longer have names; owner names are
400 associated with nodes in the Zone object's nodes dictionary.
402 * dns/zone.py: Zone objects now implement more of the standard
403 mapping interface. __iter__ has been changed to iterate the keys
404 rather than values to match the standard mapping interface's
407 2003-07-20 Bob Halley <halley@dnspython.org>
409 * dns/ipv6.py (inet_ntoa): Handle embedded IPv4 addresses.
411 2003-07-19 Bob Halley <halley@dnspython.org>
413 * (Version 1.1.0b1 released)
415 2003-07-18 Bob Halley <halley@dnspython.org>
417 * dns/tsig.py: The TSIG validation of TCP streams where not
418 every message is signed now works correctly.
420 * dns/zone.py: Zones can now be compared for equality and
421 inequality. If the other object in the comparison is also
422 a zone, then "the right thing" happens; i.e. the zones are
423 equal iff.: they have the same rdclass, origin, and nodes.
425 2003-07-17 Bob Halley <halley@dnspython.org>
427 * dns/message.py (Message.use_tsig): The method now allows for
428 greater control over the various fields in the generated signature
430 (_WireReader._get_section): UnknownTSIGKey is now raised if an
431 unknown key is encountered, or if a signed message has no keyring.
433 2003-07-16 Bob Halley <halley@dnspython.org>
435 * dns/tokenizer.py (Tokenizer._get_char): get_char and unget_char
436 have been renamed to _get_char and _unget_char since they are not
437 useful to clients of the tokenizer.
439 2003-07-15 Bob Halley <halley@dnspython.org>
441 * dns/zone.py (_MasterReader._rr_line): owner names were being
442 unconditionally relativized; it makes much more sense for them
443 to be relativized according to the relativization setting of
446 2003-07-12 Bob Halley <halley@dnspython.org>
448 * dns/resolver.py (Resolver.read_resolv_conf): The resolv.conf
449 parser did not allow blank / whitespace-only lines, nor did it
450 allow comments. Both are now supported.
452 2003-07-11 Bob Halley <halley@dnspython.org>
454 * dns/name.py (Name.to_digestable): to_digestable() now
455 requires an origin to be specified if the name is relative.
456 It will raise NeedAbsoluteNameOrOrigin if the name is
457 relative and there is either no origin or the origin is
459 (Name.split): returned the wrong answer if depth was 0 or depth
460 was the length of the name. split() now does bounds checking
461 on depth, and raises ValueError if depth < 0 or depth > the length
464 2003-07-10 Bob Halley <halley@dnspython.org>
466 * dns/ipv6.py (inet_ntoa): The routine now minimizes its output
467 strings. E.g. the IPv6 address
468 "0000:0000:0000:0000:0000:0000:0000:0001" is minimized to "::1".
469 We do not, however, make any effort to display embedded IPv4
470 addresses in the dot-quad notation.
472 2003-07-09 Bob Halley <halley@dnspython.org>
474 * dns/inet.py: We now supply our own AF_INET and AF_INET6
475 constants since AF_INET6 may not always be available. If the
476 socket module has AF_INET6, we will use it. If not, we will
477 use our own value for the constant.
479 * dns/query.py: the functions now take an optional af argument
480 specifying the address family to use when creating the socket.
482 * dns/rdatatype.py (is_metatype): a typo caused the function
483 return true only for type OPT.
485 * dns/message.py: message section list elements are now RRsets
486 instead of Nodes. This API change makes processing messages
487 easier for many applications.
489 2003-07-07 Bob Halley <halley@dnspython.org>
491 * dns/rrset.py: added. An RRset is a named rdataset.
493 * dns/rdataset.py (Rdataset.__eq__): rdatasets may now be compared
494 for equality and inequality with other objects. Rdataset instance
495 variables are now slotted.
497 * dns/message.py: The wire format and text format readers are now
498 classes. Variables related to reader state have been moved out
499 of the message class.
501 2003-07-06 Bob Halley <halley@dnspython.org>
503 * dns/name.py (from_text): '@' was not interpreted as the empty
506 * dns/zone.py: the master file reader derelativized names in rdata
507 relative to the zone's origin, not relative to the current origin.
508 The reader now deals with relativization in two steps. The rdata
509 is read and derelativized using the current origin. The rdata's
510 relativity is then chosen using the zone origin and the relativize
511 boolean. Here's an example.
517 If the zone origin is example., and relativization is on, then
518 This fragment will become:
520 bar.foo.example. 300 IN MX 0 blaz.foo.example.
522 after the first step (derelativization to current origin), and
524 bar.foo 300 IN MX 0 blaz.foo
526 after the second step (relativiation to zone origin).
528 * dns/namedict.py: added.
530 * dns/zone.py: The master file reader has been made into its
531 own class. Reader-related instance variables have been moved
532 form the zone class into the reader class.
534 * dns/zone.py: Add node_factory class attribute. An application
535 can now subclass Zone and Node and have a zone whose nodes are of
536 the subclassed Node type. The from_text(), from_file(), and
537 from_xfr() algorithms now take an optional zone_factory argument.
538 This allows the algorithms to be used to create zones whose class
539 is a subclass of Zone.
542 2003-07-04 Bob Halley <halley@dnspython.org>
544 * dns/renderer.py: added new wire format rendering module and
545 converted message.py to use it. Applications which want
546 fine-grained control over the conversion to wire format may call
547 the renderer directy, instead of having it called on their behalf
550 2003-07-02 Bob Halley <halley@dnspython.org>
552 * dns/name.py (_validate_labels): The NameTooLong test was
555 * dns/message.py (Message.to_wire): dns.exception.TooBig is
556 now raised if the wire encoding exceeds the specified
559 2003-07-01 Bob Halley <halley@dnspython.org>
561 * dns/message.py: EDNS encoding was broken. from_text()
562 didn't parse rcodes, flags, or eflags correctly. Comparing
563 messages with other types of objects didn't work.
565 2003-06-30 Bob Halley <halley@dnspython.org>
567 * (Version 1.0.0 released)
569 2003-06-30 Bob Halley <halley@dnspython.org>
571 * dns/rdata.py: Rdatas now implement rich comparisons instead of
574 * dns/name.py: Names now implement rich comparisons instead of
577 * dns/inet.py (inet_ntop): Always use our code, since the code
578 in the socket module doesn't support AF_INET6 conversions if
579 IPv6 sockets are not available on the system.
581 * dns/resolver.py (Answer.__init__): A dangling CNAME chain was
582 not raising NoAnswer.
584 * Added a simple resolver Cache class.
586 * Added an expiration attribute to answer instances.
588 2003-06-24 Bob Halley <halley@dnspython.org>
590 * (Version 1.0.0b3 released)
592 2003-06-24 Bob Halley <halley@dnspython.org>
594 * Renamed module "DNS" to "dns" to avoid conflicting with
597 2003-06-23 Bob Halley <halley@dnspython.org>
599 * The from_text() relativization controls now work the same way as
600 the to_text() controls.
602 * DNS/rdata.py: The parsing of generic rdata was broken.
604 2003-06-21 Bob Halley <halley@dnspython.org>
606 * (Version 1.0.0b2 released)
608 2003-06-21 Bob Halley <halley@dnspython.org>
610 * The Python 2.2 socket.inet_aton() doesn't seem to like
611 '255.255.255.255'. We work around this.
613 * Fixed bugs in rdata to_wire() and from_wire() routines of a few
614 types. These bugs were discovered by running the tests/zone.py
617 * Added implementation of type APL.
619 2003-06-20 Bob Halley <halley@dnspython.org>
621 * DNS/rdtypes/IN/AAAA.py: Use our own versions of inet_ntop and
622 inet_pton if the socket module doesn't provide them for us.
624 * The resolver now does a better job handling exceptions. In
625 particular, it no longer eats all exceptions; rather it handles
626 those exceptions it understands, and leaves the rest uncaught.
628 * Exceptions have been pulled into their own module. Almost all
629 exceptions raised by the code are now subclasses of
630 DNS.exception.DNSException. All form errors are subclasses of
631 DNS.exception.FormError (which is itself a subclass of
632 DNS.exception.DNSException).
634 2003-06-19 Bob Halley <halley@dnspython.org>
636 * Added implementations of types DS, NXT, SIG, and WKS.
638 * __cmp__ for type A and AAAA could produce incorrect results.
640 2003-06-18 Bob Halley <halley@dnspython.org>
642 * Started test suites for zone.py and tokenizer.py.
644 * Added implementation of type KEY.
646 * DNS/rdata.py(_base64ify): \n could be emitted erroneously.
648 * DNS/rdtypes/ANY/SOA.py (SOA.from_text): The SOA RNAME field could
649 be set to the value of MNAME in common cases.
651 * DNS/rdtypes/ANY/X25.py: __init__ was broken.
653 * DNS/zone.py (from_text): $TTL handling erroneously caused the
654 next line to be eaten.
656 * DNS/tokenizer.py (Tokenizer.get): parsing was broken for empty
657 quoted strings. Quoted strings didn't handle \ddd escapes. Such
658 escapes are appear not to comply with RFC 1035, but BIND allows
659 them and they seem useful, so we allow them too.
661 * DNS/rdtypes/ANY/ISDN.py (ISDN.from_text): parsing was
662 broken for ISDN RRs without subaddresses.
664 * DNS/zone.py (from_file): from_file() didn't work because
665 some required parameters were not passed to from_text().
667 2003-06-17 Bob Halley <halley@dnspython.org>
669 * (Version 1.0.0b1 released)
671 2003-06-17 Bob Halley <halley@dnspython.org>
673 * Added implementation of type PX.
675 2003-06-16 Bob Halley <halley@dnspython.org>
677 * Added implementation of types CERT, GPOS, LOC, NSAP, NSAP-PTR.
679 * DNS/rdatatype.py (_by_value): A cut-and-paste error had broken
682 2003-06-12 Bob Halley <halley@dnspython.org>
684 * Created a tests directory and started adding tests.
686 * Added "and its documentation" to the permission grant in the
689 2003-06-12 Bob Halley <halley@dnspython.org>
691 * DNS/name.py (Name.is_wild): is_wild() erroneously raised IndexError
692 if the name was empty.
694 2003-06-10 Bob Halley <halley@dnspython.org>
696 * Added implementations of types AFSDB, X25, and ISDN.
698 * The documentation associated with the various rdata types has been
699 improved. In particular, instance variables are now described.
701 2003-06-09 Bob Halley <halley@dnspython.org>
703 * Added implementations of types HINFO, RP, and RT.
705 * DNS/message.py (make_query): Document that make_query() sets
706 flags to DNS.flags.RD, and chooses a random query id.
708 2003-06-05 Bob Halley <halley@dnspython.org>
710 * (Version 1.0.0a2 released)
712 2003-06-05 Bob Halley <halley@dnspython.org>
714 * DNS/node.py: removed __getitem__ and __setitem__, since
715 they are not used by the codebase and were not useful in
718 * DNS/message.py (from_file): from_file() now allows a
719 filename to be specified instead of a file object.
721 * DNS/rdataset.py: The is_compatible() method of the
722 DNS.rdataset.Rdataset class was deleted.
724 2003-06-04 Bob Halley <halley@dnspython.org>
726 * DNS/name.py (class Name): Names are now immutable.
728 * DNS/name.py: the is_comparable() method has been removed, since
729 names are always comparable.
731 * DNS/resolver.py (Resolver.query): A query could run for up
732 to the lifetime + the timeout. This has been corrected and the
733 query will now only run up to the lifetime.
735 2003-06-03 Bob Halley <halley@dnspython.org>
737 * DNS/resolver.py: removed the 'new' function since it is not the
738 style of the library to have such a function. Call
739 DNS.resolver.Resolver() to make a new resolver.
741 2003-06-03 Bob Halley <halley@dnspython.org>
743 * DNS/resolver.py (Resolver._config_win32_fromkey): The DhcpServer
744 list is space separated, not comma separated.
746 2003-06-03 Bob Halley <halley@dnspython.org>
748 * DNS/update.py: Added an update module to make generating updates
751 2003-06-03 Bob Halley <halley@dnspython.org>
753 * Commas were missing in some of the __all__ entries in various
756 2003-05-30 Bob Halley <halley@dnspython.org>
758 * (Version 1.0.0a1 released)