source: trunk/server/lib/dnspython/ChangeLog@ 830

Last change on this file since 830 was 745, checked in by Silvan Scherrer, 13 years ago

Samba Server: updated trunk to 3.6.0

File size: 41.4 KB
Line 
12010-12-17 Bob Halley <halley@dnspython.org>
2
3 * dns/message.py (_WireReader._get_section): use "is" and not "=="
4 when testing what section an RR is in. Thanks to James Raftery
5 for reporting this bug.
6
72010-12-10 Bob Halley <halley@dnspython.org>
8
9 * dns/resolver.py (Resolver.query): disallow metaqueries.
10
11 * dns/rdata.py (Rdata.__hash__): Added a __hash__ method for rdata.
12
132010-11-23 Bob Halley <halley@dnspython.org>
14
15 * (Version 1.9.2 released)
16
172010-11-23 Bob Halley <halley@dnspython.org>
18
19 * dns/dnssec.py (_need_pycrypto): DSA and RSA are modules, not
20 functions, and I didn't notice because the test suite masked
21 the bug! *sigh*
22
232010-11-22 Bob Halley <halley@dnspython.org>
24
25 * (Version 1.9.1 released)
26
272010-11-22 Bob Halley <halley@dnspython.org>
28
29 * dns/dnssec.py: the "from" style import used to get DSA from
30 PyCrypto trashed a DSA constant. Now a normal import is used
31 to avoid namespace contamination.
32
332010-11-20 Bob Halley <halley@dnspython.org>
34
35 * (Version 1.9.0 released)
36
372010-11-07 Bob Halley <halley@dnspython.org>
38
39 * dns/dnssec.py: Added validate() to do basic DNSSEC validation
40 (requires PyCrypto). Thanks to Brian Wellington for the patch.
41
42 * dns/hash.py: Hash compatibility handling is now its own module.
43
442010-10-31 Bob Halley <halley@dnspython.org>
45
46 * dns/resolver.py (zone_for_name): A query name resulting in a
47 CNAME or DNAME response to a node which had an SOA was incorrectly
48 treated as a zone origin. In these cases, we should just look
49 higher. Thanks to Gert Berger for reporting this problem.
50
51 * Added zonediff.py to examples. This program compares two zones
52 and shows the differences either in diff-like plain text, or
53 HTML. Thanks to Dennis Kaarsemaker for contributing this
54 useful program.
55
562010-10-27 Bob Halley <halley@dnspython.org>
57
58 * Incorporate a patch to use poll() instead of select() by
59 default on platforms which support it. Thanks to
60 Peter SchÃŒller and Spotify for the contribution.
61
622010-10-17 Bob Halley <halley@dnspython.org>
63
64 * Python prior to 2.5.2 doesn't compute the correct values for
65 HMAC-SHA384 and HMAC-SHA512. We now detect attempts to use
66 them and raise NotImplemented if the Python version is too old.
67 Thanks to Kevin Chen for reporting the problem.
68
69 * Various routines that took the string forms of rdata types and
70 classes did not permit the strings to be Unicode strings.
71 Thanks to Ryan Workman for reporting the issue.
72
73 * dns/tsig.py: Added symbolic constants for the algorithm strings.
74 E.g. you can now say dns.tsig.HMAC_MD5 instead of
75 "HMAC-MD5.SIG-ALG.REG.INT". Thanks to Cillian Sharkey for
76 suggesting this improvement.
77
78 * dns/tsig.py (get_algorithm): fix hashlib compatibility; thanks to
79 Kevin Chen for the patch.
80
81 * dns/dnssec.py: Added key_id() and make_ds().
82
83 * dns/message.py: message.py needs to import dns.edns since it uses
84 it.
85
862010-05-04 Bob Halley <halley@dnspython.org>
87
88 * dns/rrset.py (RRset.__init__): "covers" was not passed to the
89 superclass __init__(). Thanks to Shanmuga Rajan for reporting
90 the problem.
91
922010-03-10 Bob Halley <halley@dnspython.org>
93
94 * The TSIG algorithm value was passed to use_tsig() incorrectly
95 in some cases. Thanks to 'ducciovigolo' for reporting the problem.
96
972010-01-26 Bob Halley <halley@dnspython.org>
98
99 * (Version 1.8.0 released)
100
1012010-01-13 Bob Halley <halley@dnspython.org>
102
103 * dns/dnssec.py: Added RSASHA256 and RSASHA512 codepoints; added
104 other missing codepoints to _algorithm_by_text.
105
1062010-01-12 Bob Halley <halley@dnspython.org>
107
108 * Escapes in masterfiles now work correctly. Previously they were
109 only working correctly when the text involved was part of a domain
110 name.
111
112 * dns/tokenizer.py: The tokenizer's get() method now returns Token
113 objects, not (type, text) tuples.
114
1152009-11-13 Bob Halley <halley@dnspython.org>
116
117 * Support has been added for hmac-sha1, hmac-sha224, hmac-sha256,
118 hmac-sha384 and hmac-sha512. Thanks to Kevin Chen for a
119 thoughtful, high quality patch.
120
121 * dns/update.py (Update::present): A zero TTL was not added if
122 present() was called with a single rdata, causing _add() to be
123 unhappy. Thanks to Eugene Kim for reporting the problem and
124 submitting a patch.
125
126 * dns/entropy.py: Use os.urandom() if present. Don't seed until
127 someone wants randomness.
128
1292009-09-16 Bob Halley <halley@dnspython.org>
130
131 * dns/entropy.py: The entropy module needs locking in order to be
132 used safely in a multithreaded environment. Thanks to Beda Kosata
133 for reporting the problem.
134
1352009-07-27 Bob Halley <halley@dnspython.org>
136
137 * dns/query.py (xfr): The socket was not set to nonblocking mode.
138 Thanks to Erik Romijn for reporting this problem.
139
1402009-07-23 Bob Halley <halley@dnspython.org>
141
142 * dns/rdtypes/IN/SRV.py (SRV._cmp): SRV records were compared
143 incorrectly due to a cut-and-paste error. Thanks to Tommie
144 Gannert for reporting this bug.
145
146 * dns/e164.py (query): The resolver parameter was not used.
147 Thanks to Matías Bellone for reporting this bug.
148
1492009-06-23 Bob Halley <halley@dnspython.org>
150
151 * dns/entropy.py (EntropyPool.__init__): open /dev/random unbuffered;
152 there's no need to consume more randomness than we need. Thanks
153 to Brian Wellington for the patch.
154
1552009-06-19 Bob Halley <halley@dnspython.org>
156
157 * (Version 1.7.1 released)
158
1592009-06-19 Bob Halley <halley@dnspython.org>
160
161 * DLV.py was omitted from the kit
162
163 * Negative prerequisites were not handled correctly in _get_section().
164
1652009-06-19 Bob Halley <halley@dnspython.org>
166
167 * (Version 1.7.0 released)
168
1692009-06-19 Bob Halley <halley@dnspython.org>
170
171 * On Windows, the resolver set the domain incorrectly. Thanks
172 to Brandon Carpenter for reporting this bug.
173
174 * Added a to_digestable() method to rdata classes; it returns the
175 digestable form (i.e. DNSSEC canonical form) of the rdata. For
176 most rdata types this is the same uncompressed wire form. For
177 certain older DNS RR types, however, domain names in the rdata
178 are downcased.
179
180 * Added support for the HIP RR type.
181
1822009-06-18 Bob Halley <halley@dnspython.org>
183
184 * Added support for the DLV RR type.
185
186 * Added various DNSSEC related constants (e.g. algorithm identifiers,
187 flag values).
188
189 * dns/tsig.py: Added support for BADTRUNC result code.
190
191 * dns/query.py (udp): When checking that addresses are the same,
192 use the binary form of the address in the comparison. This
193 ensures that we don't treat addresses as different if they have
194 equivalent but differing textual representations. E.g. "1:00::1"
195 and "1::1" represent the same address but are not textually equal.
196 Thanks to Kim Davies for reporting this bug.
197
198 * The resolver's query() method now has an optional 'source' parameter,
199 allowing the source IP address to be specified. Thanks to
200 Alexander Lind for suggesting the change and sending a patch.
201
202 * Added NSEC3 and NSEC3PARAM support.
203
2042009-06-17 Bob Halley <halley@dnspython.org>
205
206 * Fixed NSEC.to_text(), which was only printing the last window.
207 Thanks to Brian Wellington for finding the problem and fixing it.
208
2092009-03-30 Bob Halley <halley@dnspython.org>
210
211 * dns/query.py (xfr): Allow UDP IXFRs. Use "one_rr_per_rrset" mode when
212 doing IXFR.
213
2142009-03-30 Bob Halley <halley@dnspython.org>
215
216 * Add "one_rr_per_rrset" mode switch to methods which parse
217 messages from wire format (e.g. dns.message.from_wire(),
218 dns.query.udp(), dns.query.tcp()). If set, each RR read is
219 placed in its own RRset (instead of being coalesced).
220
2212009-03-30 Bob Halley <halley@dnspython.org>
222
223 * Added EDNS option support.
224
2252008-10-16 Bob Halley <halley@dnspython.org>
226
227 * dns/rdtypes/ANY/DS.py: The from_text() parser for DS RRs did not
228 allow multiple Base64 chunks. Thanks to Rakesh Banka for
229 finding this bug and submitting a patch.
230
2312008-10-08 Bob Halley <halley@dnspython.org>
232
233 * Add entropy module.
234
235 * When validating TSIGs, we need to use the absolute name.
236
2372008-06-03 Bob Halley <halley@dnspython.org>
238
239 * dns/message.py (Message.set_rcode): The mask used preserved the
240 extended rcode, instead of everything else in ednsflags.
241
242 * dns/message.py (Message.use_edns): ednsflags was not kept
243 coherent with the specified edns version.
244
2452008-02-06 Bob Halley <halley@dnspython.org>
246
247 * dns/ipv6.py (inet_aton): We could raise an exception other than
248 dns.exception.SyntaxError in some cases.
249
250 * dns/tsig.py: Raise an exception when the peer has set a non-zero
251 TSIG error.
252
2532007-11-25 Bob Halley <halley@dnspython.org>
254
255 * (Version 1.6.0 released)
256
2572007-11-25 Bob Halley <halley@dnspython.org>
258
259 * dns/query.py (_wait_for): if select() raises an exception due to
260 EINTR, we should just select() again.
261
2622007-06-13 Bob Halley <halley@dnspython.org>
263
264 * dns/inet.py: Added is_multicast().
265
266 * dns/query.py (udp): If the queried address is a multicast address, then
267 don't check that the address of the response is the same as the address
268 queried.
269
2702007-05-24 Bob Halley <halley@dnspython.org>
271
272 * dns/rdtypes/IN/NAPTR.py: NAPTR comparisons didn't compare the
273 preference field due to a typo.
274
2752007-02-07 Bob Halley <halley@dnspython.org>
276
277 * dns/resolver.py: Integrate code submitted by Paul Marks to
278 determine whether a Windows NIC is enabled. The way dnspython
279 used to do this does not work on Windows Vista.
280
2812006-12-10 Bob Halley <halley@dnspython.org>
282
283 * (Version 1.5.0 released)
284
2852006-11-03 Bob Halley <halley@dnspython.org>
286
287 * dns/rdtypes/IN/DHCID.py: Added support for the DHCID RR type.
288
2892006-11-02 Bob Halley <halley@dnspython.org>
290
291 * dns/query.py (udp): Messages from unexpected sources can now be
292 ignored by setting ignore_unexpected to True.
293
2942006-10-31 Bob Halley <halley@dnspython.org>
295
296 * dns/query.py (udp): When raising UnexpectedSource, add more
297 detail about what went wrong to the exception.
298
2992006-09-22 Bob Halley <halley@dnspython.org>
300
301 * dns/message.py (Message.use_edns): add reasonable defaults for
302 the ednsflags, payload, and request_payload parameters.
303
304 * dns/message.py (Message.want_dnssec): add a convenience method for
305 enabling/disabling the "DNSSEC desired" flag in requests.
306
307 * dns/message.py (make_query): add "use_edns" and "want_dnssec"
308 parameters.
309
3102006-08-17 Bob Halley <halley@dnspython.org>
311
312 * dns/resolver.py (Resolver.read_resolv_conf): If /etc/resolv.conf
313 doesn't exist, just use the default resolver configuration (i.e.
314 the same thing we would have used if resolv.conf had existed and
315 been empty).
316
3172006-07-26 Bob Halley <halley@dnspython.org>
318
319 * dns/resolver.py (Resolver._config_win32_fromkey): fix
320 cut-and-paste error where we passed the wrong variable to
321 self._config_win32_search(). Thanks to David Arnold for finding
322 the bug and submitting a patch.
323
3242006-07-20 Bob Halley <halley@dnspython.org>
325
326 * dns/resolver.py (Answer): Add more support for the sequence
327 protocol, forwarding requests to the answer object's rrset.
328 E.g. "for a in answer" is equivalent to "for a in answer.rrset",
329 "answer[i]" is equivalent to "answer.rrset[i]", and
330 "answer[i:j]" is equivalent to "answer.rrset[i:j]".
331
3322006-07-19 Bob Halley <halley@dnspython.org>
333
334 * dns/query.py (xfr): Add IXFR support.
335
3362006-06-22 Bob Halley <halley@dnspython.org>
337
338 * dns/rdtypes/IN/IPSECKEY.py: Added support for the IPSECKEY RR type.
339
3402006-06-21 Bob Halley <halley@dnspython.org>
341
342 * dns/rdtypes/ANY/SPF.py: Added support for the SPF RR type.
343
3442006-06-02 Bob Halley <halley@dnspython.org>
345
346 * (Version 1.4.0 released)
347
3482006-04-25 Bob Halley <halley@dnspython.org>
349
350 * dns/rrset.py (RRset.to_rdataset): Added a convenience method
351 to convert an rrset into an rdataset.
352
3532006-03-27 Bob Halley <halley@dnspython.org>
354
355 * Added dns.e164.query(). This function can be used to look for
356 NAPTR RRs for a specified number in several domains, e.g.:
357
358 dns.e164.query('16505551212',
359 ['e164.dnspython.org.', 'e164.arpa.'])
360
3612006-03-26 Bob Halley <halley@dnspython.org>
362
363 * dns/resolver.py (Resolver.query): The resolver deleted from
364 a list while iterating it, which makes the iterator unhappy.
365
3662006-03-17 Bob Halley <halley@dnspython.org>
367
368 * dns/resolver.py (Resolver.query): The resolver needlessly
369 delayed responses for successful queries.
370
3712006-01-18 Bob Halley <halley@dnspython.org>
372
373 * dns/rdata.py: added a validate() method to the rdata class. If
374 you change an rdata by assigning to its fields, it is a good
375 idea to call validate() when you are done making changes.
376 For example, if 'r' is an MX record and then you execute:
377
378 r.preference = 100000 # invalid, because > 65535
379 r.validate()
380
381 The validation will fail and an exception will be raised.
382
3832006-01-11 Bob Halley <halley@dnspython.org>
384
385 * dns/ttl.py: TTLs are now bounds checked to be within the closed
386 interval [0, 2^31 - 1].
387
388 * The BIND 8 TTL syntax is now accepted in the SOA refresh, retry,
389 expire, and minimum fields, and in the original_ttl field of
390 SIG and RRSIG records.
391
3922006-01-04 Bob Halley <halley@dnspython.org>
393
394 * dns/resolver.py: The windows registry irritatingly changes the
395 list element delimiter in between ' ' and ',' (and vice-versa)
396 in various versions of windows. We now cope by always looking
397 for either one (' ' first).
398
3992005-12-27 Bob Halley <halley@dnspython.org>
400
401 * dns/e164.py: Added routines to convert between E.164 numbers and
402 their ENUM domain name equivalents.
403
404 * dns/reversename.py: Added routines to convert between IPv4 and
405 IPv6 addresses and their DNS reverse-map equivalents.
406
4072005-12-18 Bob Halley <halley@dnspython.org>
408
409 * dns/rdtypes/ANY/LOC.py (_tuple_to_float): The sign was lost when
410 converting a tuple into a float, which broke conversions of
411 south latitudes and west longitudes.
412
4132005-11-17 Bob Halley <halley@dnspython.org>
414
415 * dns/zone.py: The 'origin' parameter to from_text() and from_file()
416 is now optional. If not specified, dnspython will use the
417 first $ORIGIN in the text as the zone's origin.
418
419 * dns/zone.py: Sanity checks of the zone's origin node can now
420 be disabled.
421
4222005-11-12 Bob Halley <halley@dnspython.org>
423
424 * dns/name.py: Preliminary Unicode support has been added for
425 domain names. Running dns.name.from_text() on a Unicode string
426 will now encode each label using the IDN ACE encoding. The
427 to_unicode() method may be used to convert a dns.name.Name with
428 IDN ACE labels back into a Unicode string. This functionality
429 requires Python 2.3 or greater.
430
4312005-10-31 Bob Halley <halley@dnspython.org>
432
433 * (Version 1.3.5 released)
434
4352005-10-12 Bob Halley <halley@dnspython.org>
436
437 * dns/zone.py: Zone.iterate_rdatasets() and Zone.iterate_rdatas()
438 did not have a default rdtype of dns.rdatatype.ANY as their
439 docstrings said they did. They do now.
440
4412005-10-06 Bob Halley <halley@dnspython.org>
442
443 * dns/name.py: Added the parent() method, which returns the
444 parent of a name.
445
4462005-10-01 Bob Halley <halley@dnspython.org>
447
448 * dns/resolver.py: Added zone_for_name() helper, which returns
449 the name of the zone which contains the specified name.
450
451 * dns/resolver.py: Added get_default_resolver(), which returns
452 the default resolver, initializing it if necessary.
453
4542005-09-29 Bob Halley <halley@dnspython.org>
455
456 * dns/resolver.py (Resolver._compute_timeout): If time goes
457 backwards a little bit, ignore it.
458
4592005-07-31 Bob Halley <halley@dnspython.org>
460
461 * (Version 1.3.4 released)
462
4632005-07-31 Bob Halley <halley@dnspython.org>
464
465 * dns/message.py (make_response): Trying to respond to a response
466 threw a NameError while trying to throw a FormErr since it used
467 the wrong name for the FormErr exception.
468
469 * dns/query.py (_connect): We needed to ignore EALREADY too.
470
471 * dns/query.py: Optional "source" and "source_port" parameters
472 have been added to udp(), tcp(), and xfr(). Thanks to Ralf
473 Weber for suggesting the change and providing a patch.
474
4752005-06-05 Bob Halley <halley@dnspython.org>
476
477 * dns/query.py: The requirement that the "where" parameter be
478 an IPv4 or IPv6 address is now documented.
479
4802005-06-04 Bob Halley <halley@dnspython.org>
481
482 * dns/resolver.py: The resolver now does exponential backoff
483 each time it runs through all of the nameservers.
484
485 * dns/resolver.py: rcodes which indicate a nameserver is likely
486 to be a "permanent failure" for a query cause the nameserver
487 to be removed from the mix for that query.
488
4892005-01-30 Bob Halley <halley@dnspython.org>
490
491 * (Version 1.3.3 released)
492
4932004-10-25 Bob Halley <halley@dnspython.org>
494
495 * dns/rdtypes/ANY/TXT.py (TXT.from_text): The masterfile parser
496 incorrectly rejected TXT records where a value was not quoted.
497
4982004-10-11 Bob Halley <halley@dnspython.org>
499
500 * dns/message.py: Added make_response(), which creates a skeletal
501 response for the specified query. Added opcode() and set_opcode()
502 convenience methods to the Message class. Added the request_payload
503 attribute to the Message class.
504
5052004-10-10 Bob Halley <halley@dnspython.org>
506
507 * dns/zone.py (from_xfr): dns.zone.from_xfr() in relativization
508 mode incorrectly set zone.origin to the empty name.
509
5102004-09-02 Bob Halley <halley@dnspython.org>
511
512 * dns/name.py (Name.to_wire): The 'file' parameter to
513 Name.to_wire() is now optional; if omitted, the wire form will
514 be returned as the value of the function.
515
5162004-08-14 Bob Halley <halley@dnspython.org>
517
518 * dns/message.py (Message.find_rrset): find_rrset() now uses an
519 index, vastly improving the from_wire() performance of large
520 messages such as zone transfers.
521
5222004-08-07 Bob Halley <halley@dnspython.org>
523
524 * (Version 1.3.2 released)
525
5262004-08-04 Bob Halley <halley@dnspython.org>
527
528 * dns/query.py: sending queries to a nameserver via IPv6 now
529 works.
530
531 * dns/inet.py (af_for_address): Add af_for_address(), which looks
532 at a textual-form address and attempts to determine which address
533 family it is.
534
535 * dns/query.py: the default for the 'af' parameter of the udp(),
536 tcp(), and xfr() functions has been changed from AF_INET to None,
537 which causes dns.inet.af_for_address() to be used to determine the
538 address family. If dns.inet.af_for_address() can't figure it out,
539 we fall back to AF_INET and hope for the best.
540
5412004-07-31 Bob Halley <halley@dnspython.org>
542
543 * dns/rdtypes/ANY/NSEC.py (NSEC.from_text): The NSEC text format
544 does not allow specifying types by number, so we shouldn't either.
545
546 * dns/renderer.py: the renderer module didn't import random,
547 causing an exception to be raised if a query id wasn't provided
548 when a Renderer was created.
549
550 * dns/resolver.py (Resolver.query): the resolver wasn't catching
551 dns.exception.Timeout, so a timeout erroneously caused the whole
552 resolution to fail instead of just going on to the next server.
553
5542004-06-16 Bob Halley <halley@dnspython.org>
555
556 * dns/rdtypes/ANY/LOC.py (LOC.from_text): LOC milliseconds values
557 were converted incorrectly if the length of the milliseconds
558 string was less than 3.
559
5602004-06-06 Bob Halley <halley@dnspython.org>
561
562 * (Version 1.3.1 released)
563
5642004-05-22 Bob Halley <halley@dnspython.org>
565
566 * dns/update.py (Update.delete): We erroneously specified a
567 "deleting" value of dns.rdatatype.NONE instead of
568 dns.rdataclass.NONE when the thing being deleted was either an
569 Rdataset instance or an Rdata instance.
570
571 * dns/rdtypes/ANY/SSHFP.py: Added support for the proposed SSHFP
572 RR type.
573
5742004-05-14 Bob Halley <halley@dnspython.org>
575
576 * dns/rdata.py (from_text): The masterfile reader did not
577 accept the unknown RR syntax when used with a known RR type.
578
5792004-05-08 Bob Halley <halley@dnspython.org>
580
581 * dns/name.py (from_text): dns.name.from_text() did not raise
582 an exception if a backslash escape ended prematurely.
583
5842004-04-09 Bob Halley <halley@dnspython.org>
585
586 * dns/zone.py (_MasterReader._rr_line): The masterfile reader
587 erroneously treated lines starting with leading whitespace but
588 not having any RR definition as an error. It now treats
589 them like a blank line (which is not an error).
590
5912004-04-01 Bob Halley <halley@dnspython.org>
592
593 * (Version 1.3.0 released)
594
5952004-03-19 Bob Halley <halley@dnspython.org>
596
597 * Added support for new DNSSEC types RRSIG, NSEC, and DNSKEY.
598
5992004-01-16 Bob Halley <halley@dnspython.org>
600
601 * dns/query.py (_connect): Windows returns EWOULDBLOCK instead
602 of EINPROGRESS when trying to connect a nonblocking socket.
603
6042003-11-13 Bob Halley <halley@dnspython.org>
605
606 * dns/rdtypes/ANY/LOC.py (LOC.to_wire): We encoded and decoded LOC
607 incorrectly, since we were interpreting the values of altitiude,
608 size, hprec, and vprec in meters instead of centimeters.
609
610 * dns/rdtypes/IN/WKS.py (WKS.from_wire): The WKS protocol value is
611 encoded with just one octet, not two!
612
6132003-11-09 Bob Halley <halley@dnspython.org>
614
615 * dns/resolver.py (Cache.maybe_clean): The cleaner deleted items
616 from the dictionary while iterating it, causing a RuntimeError
617 to be raised. Thanks to Mark R. Levinson for the bug report,
618 regression test, and fix.
619
6202003-11-07 Bob Halley <halley@dnspython.org>
621
622 * (Version 1.2.0 released)
623
6242003-11-03 Bob Halley <halley@dnspython.org>
625
626 * dns/zone.py (_MasterReader.read): The saved_state now includes
627 the default TTL.
628
6292003-11-01 Bob Halley <halley@dnspython.org>
630
631 * dns/tokenizer.py (Tokenizer.get): The tokenizer didn't
632 handle escaped delimiters.
633
6342003-10-27 Bob Halley <halley@dnspython.org>
635
636 * dns/resolver.py (Resolver.read_resolv_conf): If no nameservers
637 are configured in /etc/resolv.conf, the default nameserver
638 list should be ['127.0.0.1'].
639
6402003-09-08 Bob Halley <halley@dnspython.org>
641
642 * dns/resolver.py (Resolver._config_win32_fromkey): We didn't
643 catch WindowsError, which can happen if a key is not defined
644 in the registry.
645
6462003-09-06 Bob Halley <halley@dnspython.org>
647
648 * (Version 1.2.0b1 released)
649
6502003-09-05 Bob Halley <halley@dnspython.org>
651
652 * dns/query.py: Timeout support has been overhauled to provide
653 timeouts under Python 2.2 as well as 2.3, and to provide more
654 accurate expiration.
655
6562003-08-30 Bob Halley <halley@dnspython.org>
657
658 * dns/zone.py: dns.exception.SyntaxError is raised for unknown
659 master file directives.
660
6612003-08-28 Bob Halley <halley@dnspython.org>
662
663 * dns/zone.py: $INCLUDE processing is now enabled/disabled using
664 the allow_include parameter. The default is to process $INCLUDE
665 for from_file(), and to disallow $INCLUDE for from_text(). The
666 master reader now calls zone.check_origin_node() by default after
667 the zone has been read. find_rdataset() called get_node() instead
668 of find_node(), which result in an incorrect exception. The
669 relativization state of a zone is now remembered and applied
670 consistently when looking up names. from_xfr() now supports
671 relativization like the _MasterReader.
672
6732003-08-22 Bob Halley <halley@dnspython.org>
674
675 * dns/zone.py: The _MasterReader now understands $INCLUDE.
676
6772003-08-12 Bob Halley <halley@dnspython.org>
678
679 * dns/zone.py: The _MasterReader now specifies the file and line
680 number when a syntax error occurs. The BIND 8 TTL format is now
681 understood when loading a zone, though it will never be emitted.
682 The from_file() function didn't pass the zone_factory parameter
683 to from_text().
684
6852003-08-10 Bob Halley <halley@dnspython.org>
686
687 * (Version 1.1.0 released)
688
6892003-08-07 Bob Halley <halley@dnspython.org>
690
691 * dns/update.py (Update._add): A typo meant that _add would
692 fail if the thing being added was an Rdata object (as
693 opposed to an Rdataset or the textual form of an Rdata).
694
6952003-08-05 Bob Halley <halley@dnspython.org>
696
697 * dns/set.py: the simple Set class has been moved to its
698 own module, and augmented to support more set operations.
699
7002003-08-04 Bob Halley <halley@dnspython.org>
701
702 * Node and all rdata types have been "slotted". This speeds
703 things up a little and reduces memory usage noticeably.
704
7052003-08-02 Bob Halley <halley@dnspython.org>
706
707 * (Version 1.1.0c1 released)
708
7092003-08-02 Bob Halley <halley@dnspython.org>
710
711 * dns/rdataset.py: SimpleSets now support more set options.
712
713 * dns/message.py: Added the get_rrset() method. from_file() now
714 allows Unicode filenames and turns on universal newline support if
715 it opens the file itself.
716
717 * dns/node.py: Added the delete_rdataset() and replace_rdataset()
718 methods.
719
720 * dns/zone.py: Added the delete_node(), delete_rdataset(), and
721 replace_rdataset() methods. from_file() now allows Unicode
722 filenames and turns on universal newline support if it opens the
723 file itself. Added a to_file() method.
724
7252003-08-01 Bob Halley <halley@dnspython.org>
726
727 * dns/opcode.py: Opcode from/to text converters now understand
728 numeric opcodes. The to_text() method will return a numeric opcode
729 string if it doesn't know a text name for the opcode.
730
731 * dns/message.py: Added set_rcode(). Fixed code where ednsflags
732 wasn't treated as a long.
733
734 * dns/rcode.py: ednsflags wasn't treated as a long. Rcode from/to
735 text converters now understand numeric rcodes. The to_text()
736 method will return a numeric rcode string if it doesn't know
737 a text name for the rcode.
738
739 * examples/reverse.py: Added a new example program that builds a
740 reverse (address-to-name) mapping table from the name-to-address
741 mapping specified by A RRs in zone files.
742
743 * dns/node.py: Added get_rdataset() method.
744
745 * dns/zone.py: Added get_rdataset() and get_rrset() methods. Added
746 iterate_rdatas().
747
7482003-07-31 Bob Halley <halley@dnspython.org>
749
750 * dns/zone.py: Added the iterate_rdatasets() method which returns
751 a generator which yields (name, rdataset) tuples for all the
752 rdatasets in the zone matching the specified rdatatype.
753
7542003-07-30 Bob Halley <halley@dnspython.org>
755
756 * (Version 1.1.0b2 released)
757
7582003-07-30 Bob Halley <halley@dnspython.org>
759
760 * dns/zone.py: Added find_rrset() and find_rdataset() convenience
761 methods. They let you retrieve rdata with the specified name
762 and type in one call.
763
764 * dns/node.py: Nodes no longer have names; owner names are
765 associated with nodes in the Zone object's nodes dictionary.
766
767 * dns/zone.py: Zone objects now implement more of the standard
768 mapping interface. __iter__ has been changed to iterate the keys
769 rather than values to match the standard mapping interface's
770 behavior.
771
7722003-07-20 Bob Halley <halley@dnspython.org>
773
774 * dns/ipv6.py (inet_ntoa): Handle embedded IPv4 addresses.
775
7762003-07-19 Bob Halley <halley@dnspython.org>
777
778 * (Version 1.1.0b1 released)
779
7802003-07-18 Bob Halley <halley@dnspython.org>
781
782 * dns/tsig.py: The TSIG validation of TCP streams where not
783 every message is signed now works correctly.
784
785 * dns/zone.py: Zones can now be compared for equality and
786 inequality. If the other object in the comparison is also
787 a zone, then "the right thing" happens; i.e. the zones are
788 equal iff.: they have the same rdclass, origin, and nodes.
789
7902003-07-17 Bob Halley <halley@dnspython.org>
791
792 * dns/message.py (Message.use_tsig): The method now allows for
793 greater control over the various fields in the generated signature
794 (e.g. fudge).
795 (_WireReader._get_section): UnknownTSIGKey is now raised if an
796 unknown key is encountered, or if a signed message has no keyring.
797
7982003-07-16 Bob Halley <halley@dnspython.org>
799
800 * dns/tokenizer.py (Tokenizer._get_char): get_char and unget_char
801 have been renamed to _get_char and _unget_char since they are not
802 useful to clients of the tokenizer.
803
8042003-07-15 Bob Halley <halley@dnspython.org>
805
806 * dns/zone.py (_MasterReader._rr_line): owner names were being
807 unconditionally relativized; it makes much more sense for them
808 to be relativized according to the relativization setting of
809 the reader.
810
8112003-07-12 Bob Halley <halley@dnspython.org>
812
813 * dns/resolver.py (Resolver.read_resolv_conf): The resolv.conf
814 parser did not allow blank / whitespace-only lines, nor did it
815 allow comments. Both are now supported.
816
8172003-07-11 Bob Halley <halley@dnspython.org>
818
819 * dns/name.py (Name.to_digestable): to_digestable() now
820 requires an origin to be specified if the name is relative.
821 It will raise NeedAbsoluteNameOrOrigin if the name is
822 relative and there is either no origin or the origin is
823 itself relative.
824 (Name.split): returned the wrong answer if depth was 0 or depth
825 was the length of the name. split() now does bounds checking
826 on depth, and raises ValueError if depth < 0 or depth > the length
827 of the name.
828
8292003-07-10 Bob Halley <halley@dnspython.org>
830
831 * dns/ipv6.py (inet_ntoa): The routine now minimizes its output
832 strings. E.g. the IPv6 address
833 "0000:0000:0000:0000:0000:0000:0000:0001" is minimized to "::1".
834 We do not, however, make any effort to display embedded IPv4
835 addresses in the dot-quad notation.
836
8372003-07-09 Bob Halley <halley@dnspython.org>
838
839 * dns/inet.py: We now supply our own AF_INET and AF_INET6
840 constants since AF_INET6 may not always be available. If the
841 socket module has AF_INET6, we will use it. If not, we will
842 use our own value for the constant.
843
844 * dns/query.py: the functions now take an optional af argument
845 specifying the address family to use when creating the socket.
846
847 * dns/rdatatype.py (is_metatype): a typo caused the function
848 return true only for type OPT.
849
850 * dns/message.py: message section list elements are now RRsets
851 instead of Nodes. This API change makes processing messages
852 easier for many applications.
853
8542003-07-07 Bob Halley <halley@dnspython.org>
855
856 * dns/rrset.py: added. An RRset is a named rdataset.
857
858 * dns/rdataset.py (Rdataset.__eq__): rdatasets may now be compared
859 for equality and inequality with other objects. Rdataset instance
860 variables are now slotted.
861
862 * dns/message.py: The wire format and text format readers are now
863 classes. Variables related to reader state have been moved out
864 of the message class.
865
8662003-07-06 Bob Halley <halley@dnspython.org>
867
868 * dns/name.py (from_text): '@' was not interpreted as the empty
869 name.
870
871 * dns/zone.py: the master file reader derelativized names in rdata
872 relative to the zone's origin, not relative to the current origin.
873 The reader now deals with relativization in two steps. The rdata
874 is read and derelativized using the current origin. The rdata's
875 relativity is then chosen using the zone origin and the relativize
876 boolean. Here's an example.
877
878 $ORIGIN foo.example.
879 $TTL 300
880 bar MX 0 blaz
881
882 If the zone origin is example., and relativization is on, then
883 This fragment will become:
884
885 bar.foo.example. 300 IN MX 0 blaz.foo.example.
886
887 after the first step (derelativization to current origin), and
888
889 bar.foo 300 IN MX 0 blaz.foo
890
891 after the second step (relativiation to zone origin).
892
893 * dns/namedict.py: added.
894
895 * dns/zone.py: The master file reader has been made into its
896 own class. Reader-related instance variables have been moved
897 form the zone class into the reader class.
898
899 * dns/zone.py: Add node_factory class attribute. An application
900 can now subclass Zone and Node and have a zone whose nodes are of
901 the subclassed Node type. The from_text(), from_file(), and
902 from_xfr() algorithms now take an optional zone_factory argument.
903 This allows the algorithms to be used to create zones whose class
904 is a subclass of Zone.
905
906
9072003-07-04 Bob Halley <halley@dnspython.org>
908
909 * dns/renderer.py: added new wire format rendering module and
910 converted message.py to use it. Applications which want
911 fine-grained control over the conversion to wire format may call
912 the renderer directy, instead of having it called on their behalf
913 by the message code.
914
9152003-07-02 Bob Halley <halley@dnspython.org>
916
917 * dns/name.py (_validate_labels): The NameTooLong test was
918 incorrect.
919
920 * dns/message.py (Message.to_wire): dns.exception.TooBig is
921 now raised if the wire encoding exceeds the specified
922 maximum size.
923
9242003-07-01 Bob Halley <halley@dnspython.org>
925
926 * dns/message.py: EDNS encoding was broken. from_text()
927 didn't parse rcodes, flags, or eflags correctly. Comparing
928 messages with other types of objects didn't work.
929
9302003-06-30 Bob Halley <halley@dnspython.org>
931
932 * (Version 1.0.0 released)
933
9342003-06-30 Bob Halley <halley@dnspython.org>
935
936 * dns/rdata.py: Rdatas now implement rich comparisons instead of
937 __cmp__.
938
939 * dns/name.py: Names now implement rich comparisons instead of
940 __cmp__.
941
942 * dns/inet.py (inet_ntop): Always use our code, since the code
943 in the socket module doesn't support AF_INET6 conversions if
944 IPv6 sockets are not available on the system.
945
946 * dns/resolver.py (Answer.__init__): A dangling CNAME chain was
947 not raising NoAnswer.
948
949 * Added a simple resolver Cache class.
950
951 * Added an expiration attribute to answer instances.
952
9532003-06-24 Bob Halley <halley@dnspython.org>
954
955 * (Version 1.0.0b3 released)
956
9572003-06-24 Bob Halley <halley@dnspython.org>
958
959 * Renamed module "DNS" to "dns" to avoid conflicting with
960 PyDNS.
961
9622003-06-23 Bob Halley <halley@dnspython.org>
963
964 * The from_text() relativization controls now work the same way as
965 the to_text() controls.
966
967 * DNS/rdata.py: The parsing of generic rdata was broken.
968
9692003-06-21 Bob Halley <halley@dnspython.org>
970
971 * (Version 1.0.0b2 released)
972
9732003-06-21 Bob Halley <halley@dnspython.org>
974
975 * The Python 2.2 socket.inet_aton() doesn't seem to like
976 '255.255.255.255'. We work around this.
977
978 * Fixed bugs in rdata to_wire() and from_wire() routines of a few
979 types. These bugs were discovered by running the tests/zone.py
980 Torture1 test.
981
982 * Added implementation of type APL.
983
9842003-06-20 Bob Halley <halley@dnspython.org>
985
986 * DNS/rdtypes/IN/AAAA.py: Use our own versions of inet_ntop and
987 inet_pton if the socket module doesn't provide them for us.
988
989 * The resolver now does a better job handling exceptions. In
990 particular, it no longer eats all exceptions; rather it handles
991 those exceptions it understands, and leaves the rest uncaught.
992
993 * Exceptions have been pulled into their own module. Almost all
994 exceptions raised by the code are now subclasses of
995 DNS.exception.DNSException. All form errors are subclasses of
996 DNS.exception.FormError (which is itself a subclass of
997 DNS.exception.DNSException).
998
9992003-06-19 Bob Halley <halley@dnspython.org>
1000
1001 * Added implementations of types DS, NXT, SIG, and WKS.
1002
1003 * __cmp__ for type A and AAAA could produce incorrect results.
1004
10052003-06-18 Bob Halley <halley@dnspython.org>
1006
1007 * Started test suites for zone.py and tokenizer.py.
1008
1009 * Added implementation of type KEY.
1010
1011 * DNS/rdata.py(_base64ify): \n could be emitted erroneously.
1012
1013 * DNS/rdtypes/ANY/SOA.py (SOA.from_text): The SOA RNAME field could
1014 be set to the value of MNAME in common cases.
1015
1016 * DNS/rdtypes/ANY/X25.py: __init__ was broken.
1017
1018 * DNS/zone.py (from_text): $TTL handling erroneously caused the
1019 next line to be eaten.
1020
1021 * DNS/tokenizer.py (Tokenizer.get): parsing was broken for empty
1022 quoted strings. Quoted strings didn't handle \ddd escapes. Such
1023 escapes are appear not to comply with RFC 1035, but BIND allows
1024 them and they seem useful, so we allow them too.
1025
1026 * DNS/rdtypes/ANY/ISDN.py (ISDN.from_text): parsing was
1027 broken for ISDN RRs without subaddresses.
1028
1029 * DNS/zone.py (from_file): from_file() didn't work because
1030 some required parameters were not passed to from_text().
1031
10322003-06-17 Bob Halley <halley@dnspython.org>
1033
1034 * (Version 1.0.0b1 released)
1035
10362003-06-17 Bob Halley <halley@dnspython.org>
1037
1038 * Added implementation of type PX.
1039
10402003-06-16 Bob Halley <halley@dnspython.org>
1041
1042 * Added implementation of types CERT, GPOS, LOC, NSAP, NSAP-PTR.
1043
1044 * DNS/rdatatype.py (_by_value): A cut-and-paste error had broken
1045 NSAP and NSAP-PTR.
1046
10472003-06-12 Bob Halley <halley@dnspython.org>
1048
1049 * Created a tests directory and started adding tests.
1050
1051 * Added "and its documentation" to the permission grant in the
1052 license.
1053
10542003-06-12 Bob Halley <halley@dnspython.org>
1055
1056 * DNS/name.py (Name.is_wild): is_wild() erroneously raised IndexError
1057 if the name was empty.
1058
10592003-06-10 Bob Halley <halley@dnspython.org>
1060
1061 * Added implementations of types AFSDB, X25, and ISDN.
1062
1063 * The documentation associated with the various rdata types has been
1064 improved. In particular, instance variables are now described.
1065
10662003-06-09 Bob Halley <halley@dnspython.org>
1067
1068 * Added implementations of types HINFO, RP, and RT.
1069
1070 * DNS/message.py (make_query): Document that make_query() sets
1071 flags to DNS.flags.RD, and chooses a random query id.
1072
10732003-06-05 Bob Halley <halley@dnspython.org>
1074
1075 * (Version 1.0.0a2 released)
1076
10772003-06-05 Bob Halley <halley@dnspython.org>
1078
1079 * DNS/node.py: removed __getitem__ and __setitem__, since
1080 they are not used by the codebase and were not useful in
1081 general either.
1082
1083 * DNS/message.py (from_file): from_file() now allows a
1084 filename to be specified instead of a file object.
1085
1086 * DNS/rdataset.py: The is_compatible() method of the
1087 DNS.rdataset.Rdataset class was deleted.
1088
10892003-06-04 Bob Halley <halley@dnspython.org>
1090
1091 * DNS/name.py (class Name): Names are now immutable.
1092
1093 * DNS/name.py: the is_comparable() method has been removed, since
1094 names are always comparable.
1095
1096 * DNS/resolver.py (Resolver.query): A query could run for up
1097 to the lifetime + the timeout. This has been corrected and the
1098 query will now only run up to the lifetime.
1099
11002003-06-03 Bob Halley <halley@dnspython.org>
1101
1102 * DNS/resolver.py: removed the 'new' function since it is not the
1103 style of the library to have such a function. Call
1104 DNS.resolver.Resolver() to make a new resolver.
1105
11062003-06-03 Bob Halley <halley@dnspython.org>
1107
1108 * DNS/resolver.py (Resolver._config_win32_fromkey): The DhcpServer
1109 list is space separated, not comma separated.
1110
11112003-06-03 Bob Halley <halley@dnspython.org>
1112
1113 * DNS/update.py: Added an update module to make generating updates
1114 easier.
1115
11162003-06-03 Bob Halley <halley@dnspython.org>
1117
1118 * Commas were missing in some of the __all__ entries in various
1119 __init__.py files.
1120
11212003-05-30 Bob Halley <halley@dnspython.org>
1122
1123 * (Version 1.0.0a1 released)
Note: See TracBrowser for help on using the repository browser.