1
<H1>MaraDNS changelog</H1>
6
<li><tt>duende</tt> now always logs a message before exiting
7
<li>zone names are now case-insensitive.
8
<li>Programs in <tt>sqa/</tt> directory can compile again.
9
<li>Dictionary variables now must be initialized to work.
10
<li>Documentation updated.
18
<li><tt>duende</tt> tool always logs something before exiting
19
<li>"Using default ICANN servers" message now has newline
20
<li>Broken <tt>upstream_servers</tt> example in docs fixed
25
This is a testing (possibly unstable) release of MaraDNS.
28
<li>Many minor updates to the documentation.
29
<li>Web page HTML/CSS updated to look better in MSIE 6.
30
<li>New mararc variable, <tt>handle_noreply</tt>, which determines how
31
to inform the DNS client that no remote servers could be contacted
32
when trying to resolve a host name.
33
<li>It is now possible to send DNS error messages via the <tt>udperror()</tt>
35
<li>Some minor update to how log messages are output.
43
<li>It is now possible to send DNS error messages via the <tt>udperror()</tt>
51
This is a testing (possibly unstable) release of MaraDNS.
54
<li>Added faq entry about setting <tt>upstream_servers</tt>
55
<li>Removed three unimplemented (or never documented and disabled)
56
<tt>mararc</tt> variables: <tt>tuzona_inetd</tt>,
57
<tt>win9x_service</tt>, and <tt>resurrections</tt>.
58
<li>Out-of-bailiwick authoritative records now no longer have an
60
<li>New csv2 record type "FQDN4"; this is an A record which
61
automatically makes the corresponding PTR record.
62
<li>CNAME records now mentioned in csv2 man page.
63
<li>Improved error message for a hostname that doesn't end in a '.' (or
65
<li>Added <tt>admin_acl</tt> mararc variable, to limit the IPs that
66
can see MaraDNS' version number (and debug information about
67
MaraDNS' internal state when <tt>debug_msg_level</tt> is set).
68
<li>Added <tt>remote_admin</tt> mararc variable, which allows
69
IPs listed in <tt>admin_acl</tt> to remotely change the
70
amount of information logged by MaraDNS. This is mainly for
71
debugging problems on high-traffic sites where a full log is
72
too large (and slows things down too much) to be practical.
80
<li>MaraDNS 1.2.04 Cygwin fix patch applied to the stable branch
81
<li>FAQ updated to tell people how to use <tt>upstream_servers</tt>
88
This is a testing (potentially unstable) release of MaraDNS.
91
<li>Cygwin fix: <tt>chroot()</tt> and <tt>setuid()</tt> do not effectively
92
work on Cygwin; MaraDNS updated to not use these calls in Cygwin.
93
This makes the Cygwin release not have all of the security of a
94
native UNIX version of MaraDNS.
95
<li>RPM updates: Spec file made current; mararc for RPM updated for MaraDNS
96
1.2; RPM updated by Greg Swallow to compile on CentOS 3 and 4.
97
<li>Updates to the recursive code to make MaraDNS run better when used
100
<li>TTL determining code updated
101
<li>Two minor typos fixed
102
<li>Custodian tweaked to work better under high load
103
<li><tt>maxprocs</tt> can now be as high as 5000
104
<li><tt>min_visible_ttl</tt> mararc variable added
113
<li>Hotfix: Re-apply fix for broken Linux 2.6 kernel behavior which causes
115
<li>Mingw32: Have the binaries stripped
123
<li>Fixed issue with ANY queries pointed out by Christian Klossek.
124
<li>Made <tt>bind_star_handling</tt> even more RFC-compliant: If
125
<tt>*.example.com.</tt> and <tt>bar.example.com.</tt> exist,
126
then <tt>foo.bar.example.com.</tt> should point to "not there"
127
instead of whatever <tt>*.example.com</tt> points at.
128
<li>Updated mingw32 port: Removed compile-time warnings, set up scripts
129
to mostly automate making the .zip file for the win32 MaraDNS binary.
130
<li>Updated numbering scheme to use major.minor.revision.patchlevel
131
for stable 1.2 releases; this allows the 1.2 branch to better have
132
both a testing and a stable branch.
138
This is a beta-test potentially unstable release, since the changes
139
are significant enough to warrant full testing before declaring this
140
as stable as previous 1.2 releases of MaraDNS.
143
<li>Changed build process to have consistent compile-time flags in
144
all directories, and to allow people on unsupported platforms to
145
compile MaraDNS after they look at obnoxious error message.
146
<li>Fixed all of the compile-time warnings this change brought out.
147
<li>Added a new mararc variable, <tt>bind_star_handling</tt> for people
148
who want full BIND compatibility with star records.
149
<li>Documentation updates: <tt>bind_star_handling</tt> documented,
150
<tt>SOURCE.FILES</tt> made current.
151
<li>Copyright notice updated for 2006
152
<li>.gz tarball now optimized by Igor Pavlov and Andrea Mazzoleni's
153
<tt>advdef</tt> program; this reduces size of .gz tarball by about 5%
161
<li>Added script that will (mostly) automatically explode the tarball of
162
the last release of MaraDNS, apply the patches, update the doc, and
163
make the patches part of the 1.2 release.
164
<li>Updated dangling CNAME document to clarify that typos can also cause
165
the dangling CNAME warning.
166
<li>Updated the tarball building process of MaraDNS to also use Igor
167
Pavlov's LZMA compression to make a compressed MaraDNS tarball which
168
is both smaller and extracts faster than the bzip2 tarball.
169
<li>Fixed spurious dangling CNAME warning bug which Alex Kapranoff found.
176
This is a bugfix release for the legacy 1.0 branch of MaraDNS.
178
<li>A backport of the 2-line patch recently posted to the mailing list
179
concerning incorrect dangling CNAME warnings
186
This is the new stable release of MaraDNS, which is an update of the 1.0
187
branch. The 1.0 branch will be maintained for standard bugfixes until
188
December 21, 2007; critical security fixes, should they occur, will be
189
applied to the 1.0 branch until December 21, 2010.
191
Here are the changes from 1.1.91:
193
<li>A small change to <tt>dns/Decompress.c</tt> so that MaraDNS runs on
194
the compiler that comes with the IBM Power version of SuSE.
195
<li>Minor corrections to the FAQ
196
<li>BINDFAIL message no longer says that there's probably another process
197
using port 53; there are a number of things that can trigger this error
198
message and the "System said" message usually explains what's really
200
<li>Pointed out that Macintosh-style newlines break the csv2 parser's
201
ability to tell the user what line the error is on (This should generally
202
not be a practical issue, since it is uncommon for people to use this
203
text file format; it's too close to 1.2.00 to fix this).
204
<li>Update to the ej2man script so we don't have a raw accented character
205
in the maradns man page (we use the ROFF \('a instead)
212
This is the second release candidate for MaraDNS 1.2.
214
Here are the changes from 1.1.90:
216
<li>Made all manpage headings all-caps, to be consistent with standard
218
<li>Updated "unsupported features" part of MaraDNS man page to point out
219
that 1.2 now supports more non-RFC1035 DNS features
220
<li>Plain text documents in a more easily found directory (doc/en/text
221
instead of doc/en/tutorial/text).
222
<li>Added a modified version of Paul Sowden and Peter-Paul Koch's
223
<tt>styleswitcher.js</tt> file so that people who need a large
224
font to read a web page can get the large font with just one click.
225
<li>Updated the authoritative and recursive tutorial documents to cover the
226
case of wanting a recursive name server to have private host names.
227
<li>Explicitly tell the user /etc/mararc is not being replaced during make
229
<li>Updated the FAQ for version 1.2 of MaraDNS.
230
<li>Split up the DNS introduction document and the list of all tutorials,
231
usage guides, and man pages.
232
<li>Added makefile in webpage document (now I have a one-command way of
233
updating the MaraDNS webpage).
234
<li>Spelling errors checked and corrected in all tutorial and man page
242
This is the first release candidate of MaraDNS 1.2. Should no one
243
report any problems with this release, this will be released, unchanged,
244
as MaraDNS 1.2.00 on December 21.
246
Here are the changes from 1.1.61:
248
<li>Fixed some bugs in the ej2man script; the man pages now look nicer.
249
<li>Added a new EJ tag: HIBIT; this allows some EJ output to contain hi-bit
250
characters (such as HTML pages) while other EJ output has equivalent
251
content with no hi-bit
252
characters (such as man pages, which don't take well to non-ASCII)
253
<li>Fixed rendering problems with the pdf manpage reference (I updated ps2pdf
254
to the one from the latest 8.53 Ghostscript) and added the csv2_txt
255
man page to this reference (HIBIT makes this now possible).
256
<li>Renamed security_design.html security.html to make it clear this is
257
a document about MaraDNS' security.
265
<li>Document minor updates: default value of <tt>timestamp_type</tt> is
266
now five (this was changed in 1.1.60); Clarify that maradns needs to
267
be restarted to reload zones in <A
268
href=http://www.maradns.org/tutorial/1.2/dnsslave.html>DNSslave</A>
269
document; corrected misspelled words and minor grammatical errors
270
in <A href=http://www.maradns.org/tutorial/1.2/quick_start.html>the
271
Quick Start guide</A>
272
<li>Mac OS X port: MaraDNS sucessfully compiles on Mac OS X (Darwin) again;
273
all compile-time warnings removed.
274
<li>MinGW32 port: Changed port to use #ifdef statements instead of a patch
275
to make source Win32-compatible; this allows me to make source changes
276
without having to constantly update the mingw32 patch.
284
<li>Authoritative tutorial expanded and updated
285
<li>DNS master document written; DNS tcp document updated
286
<li>Procedure for making text files updated
287
<li>Text files for tutorial added
288
<li>Examples added to "dangling" document
289
<li>Updated spec file to include maradns.zoneserver startup script
290
<li>Removed OSRC (open-rsc.org doesn't resolve) and Alternic (alternic.org
291
owned by squatter) from example full mararc file
292
<li>Added document on being a DNS slave
293
<li>Verified that shell scripts in dnsslave document work
294
<li>Created document on updating from MaraDNS 1.0 to 1.2 (most of the time,
296
<li>Many other tutorial improvments
297
<li>Verified spelling of all tutorial documents
298
<li>mararc man page correction: csv1 zone files are for MaraDNS 1.0, not
300
<li>HR tag added to ej specification.
308
<li>Cygwin port fix: ipv6 not compiled in authonly mode on Cygwin (Cygwin
309
doesn't yet have ipv6)
310
<li>Updated RPM-building spec file for the 1.1 branch of MaraDNS
318
<li>Cleaned up the FreeBSD compile
319
<li>Cleaned up the Cygwin compile; MaraDNS compiles on Cygwin again
320
<li>Removed all warnings seen when compiling on Cygwin (Cygwin GCC is
321
a little more pedantic than Linux GCC)
322
<li>Updated the Mingw32 patch
323
<li>Fixed issue with install script (see mailing list)
331
<li>Partial port of MaraDNS to mingw32 (can you say maradns.exe) done.
332
<li>Since 127.0.0.3 doesn't work on many systems, changing all loopback
333
examples to use the IP address 127.0.0.1; also changing Askmara's
334
default server address to 127.0.0.1
342
<li>Backport of 1.1.x fix of csv1 example in documentation
343
<li>Backport of 1.1.x fix of MINFO RR description
344
<li>Backport of 1.1.x security fix.
352
<li>SECURITY FIX: Made the RNG algorithm resistant to cache sniffing
354
href=http://www.maradns.org/download/patches/maradns-1.0.34-rng.patch>this
355
page</A> for a full description of this security issue.
356
<li>Modified configure script to not compile on unsupported systems.
364
<li>This is the first Beta-test release for the up-and-coming MaraDNS 1.2
365
<li>Fixed description of minfo RR in DNS compression code
366
<li>Fixed askmara to correctly output SOA and RAW records
367
<li>Changed zoneserver to use select() model for handling the processing
368
of child process' output (thanks, Albert)
369
<li>Initialized some uninitialized variables (thanks again, Albert)
370
<li>Added Albert Lee to CREDITS file
371
<li>Removed perl and gawk dependencies from franky.hosts.test test (the only
372
thing we now need to pull from ports on FreeBSD to run this is Bash)
373
<li>Alpha-level SQA testing done.
381
<li>Updated csv1tocsv2.pl and ej2man scripts to be able to use a Perl
382
interpreter that is not in <tt>/usr/bin</tt>
383
<li>Both UIDs that the zoneserver becomes are now determined by the
384
"maradns_uid" mararc variable.
385
<li>The zoneserver now uses the "maradns_gid" variable.
386
<li>Corrected spelling of "privileges"
394
<li>SQA: Added scripts to help with Y2038 testing
395
<li>Y2038 fix: MaraDNS is now fully functional before and after the Y2038
396
turnover on systems with 32-bit timestamps.
397
<li>Update year_2038_statement; MaraDNS is now Y2038-compliant.
398
<li>Updated Y2038 libraries to be thread-safe
399
<li>Bug fix: A hostname can now be the first line in a csv2 zone file
400
<li>Doc fix: Fixed broken "U" record example in csv1 man page
401
<li>Bug fix: The zoneserver now makes upper-case domain names lower-case
402
<li>Bug fix: The zoneserver now correctly serves csv2 star records
409
<ul><li>Took care of segfault that only happened in FreeBSD
410
<li>Made non-root running of MaraDNS possible again
411
<li>Added FreeBSD-specific Makefiles
418
<ul><li>Hotfix: recursion works again
419
<li>Regression procedure added.
427
<li>Fixed occassional crash that happens while reading zone files at
429
<li>Fixed occassional compression error which shows up in MaraDNS logs.
430
<li>Update man page to point out some unimplemented features will be in
439
<li>Bug fix: hide_disclaimer is now case insensitive (any three-letter string
440
will now hide the disclaimer, in fact)
441
<li>Bug fix: Unknown mararc variable error message will not have a \012 in
443
<li>Added PDF file which is a printable reference of MaraDNS man pages
444
<li>Fixed problems with synth_soa_origin and synth_soa_seria
445
<li>Fixed js_append.3 man page (returns 0, not JS_SUCCESS, on success)
453
<li>Fixed a bug which caused people to see compression errors (The bug was
454
caused when a PTR record pointed to a non-existant record)
455
<li>Web design touch-up: The web page is now centered (I found the code
456
to force Firefox to always have a scrollbar like IE); looks better in
457
MacIE/IE4/Opera 5; the handheld and printing stylesheets look better.
458
<li>Cleanup of install script; csv2 zone file installed instead of csv1
460
<li>Cleanup and clarification of default mararc file
461
<li>Changed makefile in rng/ to keep the rng-32bit-tables.h file; this
462
will make things easier for people trying to cross-compile MaraDNS
463
<li>Made MaraDNS' default UID, GID, logger UID, and Duende chroot() directory
464
defined near the beginning of MaraDns.h; this will make it easier for
465
packagers to redefine these constants.
466
<li>Fixed zoneserver to have enough default values so that it works with
467
the included example mararc.
468
<li>Fixed bugs in the serving of long packets over TCP; MaraDNS can now
469
serve long DNS packets over TCP, breaking the 512-byte limit.
470
<li>askmara now correctly outputs multi-chunk TXT records (unless called with
472
<li>Two new mararc varables added: <tt>synth_soa_origin</tt> and
473
<tt>synth_soa_serial</tt>. These are here mainly so that people
474
who test MaraDNS 1.2 domains over at dnsreport.com can have a
475
synthetic SOA record that doesn't generate any errors.
483
<li>Revised pages on the web page to have a minimum number of HTML errors.
484
(Let's keep the validator fairly happy)
485
<li>Added a new feature, <tt>long_packet_ipv4</tt>, which will allow packets
486
longer then 512 bytes long (compressed) to be sent from MaraDNS via
487
TCP (we have a list of IPs which we can send UDP packets longer than 512
488
bytes to; <tt>zoneserver</tt> translates these packets to
489
standards-conforming TCP packets). This is only enabled if MaraDNS
490
is compiled as an authoritative-only nameserver.
491
<li>MaraDNS now generates no warning when compiled with GCC 3.4.2 as both
492
an authoritative-only nameserver and as a recursive nameserver.
493
<li>MaraDNS, when compiled as an authoritative-only nameserver, now compiles
494
with the name maradns.authonly. The install and startup scripts have
495
been revised to reflect this change.
496
<li>Tutorial for doing DNS over TCP has been created.
497
<li>Updated security design document and added all known security problems
498
to <A href=security.html>the document</A>
499
<li>Updated startup script to add a script (disabled by default) which starts
500
up MaraDNS' zoneserver.
508
<li>Fixed bugs in mararc processing so that a mararc file with only three
509
lines (four for an authoritative nameserver) works again.
510
<li>Updated all of the documentation to reflect the 1.1 changes
511
and updates to MaraDNS.
512
<li>Updated web page design of MaraDNS web page; the page will look almost
513
identical on a modern CSS browser on a PC (including IE 5/6) but will
514
look better on non-CSS browsers, handheld browsers, and when printed
515
out. Additionally, there is a "large print" style that makes the
516
web page more accessible.
524
<li>Set up recursive stress test to make sure recursive resolver doesn't
525
leak memory nor crash (it doesn't)
526
<li>Working on updating the CSS for MaraDNS's web page to look better in
527
non-CSS browsers (Changes aren't live yet; look at mixed_css_try3)
528
<li>csv2 security updates:
530
1. The hostname for a record must be at the beginning of a line.
532
2. No more than one pipe (|) character is allowed between csv2 fields.
533
<li>Documentation updates: Recursive tutorial updated to reflect the fact
534
that a recursive server now only needs a 3-line mararc file.
542
<li>Issue with recursive ANY queries resolved
543
<li>All compile-time warnings removed; MaraDNS now compiles with zero
544
warnings when compiled with -Wall
551
<b>This release is the last 1.1.x release which adds new features to MaraDNS.
552
Until MaraDNS 1.2.00 is release, the only changes will be documentation
553
updates and bugfixes.</b>
556
<li>I have removed maragen until it can be updated to use the csv2 zone
558
<li>Some doc cleanup; removing outdated documents in doc/en/misc, merging
559
the old changelog with the current changelog, etc.
560
<li>CNAME records will now give, in the answer section, the record the
561
CNAME record points to for any RR type, not just A (and to a limited
562
extent, PTR) records.
563
<li>ANY queries now more-or-less work with recursive queries again.
564
<li>Bogus SOA "not there" replies now have a narrower scope than ".".
565
<li>Fixed problem with empty TXT and RAW records in csv1tocsv2.pl
573
<li>The RCODE in the DNS headers will now correctly return a NXDOMAIN as long
574
as there are no RRs with the given DNS name in question. Otherwise, the
575
RCODE returned is zero.
576
<li>Added a new tool in the tools directory, called csv1tocsv2.pl, which is
577
a Perl script that converts csv1 zone files in to csv2 zone files.
585
<li>MaraDNS 1.0.32 bugfix forward-ported to 1.1.43
586
<li>Duende will now output error on standard out when it dies unexpectably
592
<blockquote>Hotfix: RR rotation now works again.
597
<blockquote>Two patches by Albert Lee that improve Mara's stability.
604
<li>Warn the user when they have dangling CNAME records
605
<li>Fix bug with MX records with preferences > 255 in getzone tool
613
<li>Removed debug information showing in hex the bind address
614
<li>ipv6 logging now works
615
<li>hide_disclaimer works again
616
<li>The code to handle ANY queries is essentially completely rewritten.
624
<li>Make all example ipv6 addresses 3ffe:ffff example addresses
625
<li>New mararc variable: csv2_synthip_list
626
<li>Get the zoneserver to read ipv4_bind_addresses and csv2_synthip_list
627
<li>Allow spaces in ip_acl lists
628
<li>Document: How to set up a default zonefile
629
<li>Give out a bogus SOA reply when none of the servers for the domain
638
<li>Warning now shown for dangling cname records
639
<li>bind_address now has ipv4_bind_addresses name (bind_address still works,
648
<li>MaraDNS now has full authoritative-only ipv6 support
656
<li>Fixed security problem with new <tt>fetchzone</tt> tool.
658
href="download/patches/maradns-1.1.37-fetchzone_security.patch">in
659
the maradns-1.1.37-fetchzone_security.patch file</A>
660
<li>Added support for <tt>dos_protection_level</tt> which will disable
661
certain MaraDNS features to make her respond more quickly to DNS
662
requests; this is useful for very highly loaded servers or for
663
surviving denial-of-service attacks.
664
<li>Wrote code to support binding to ipv6 addresses when MaraDNS is
665
compiled as an authoritative-only nameserver. Work on this will
666
continue when I get ip6 up and going on my Fedora Core 3 box.
674
<li>Support for stars at the end of hostnames is finished.
675
<li>Added ability to compile MaraDNS without recursive support; this
676
makes the binary 20% smaller and not need the pthread library.
684
<li>Forward-ported the MaraDNS 1.0.29 changes in to the 1.1 branch.
685
<li>Applied Juergen's patch so that the 1.1 branch compiles again.
686
<li>Added code to work around Linux' select() before the recvfrom()
694
This release improves how MaraDNS' recursive resolver parses packets so
695
that Mara can interoperate better with some stub resolvers that don't
696
bother looking past the header of a DNS packet.
703
This release forward-ports the improvments for MaraDNS 1.0.27 and MaraDNS
704
1.0.28 in to the 1.1 branch.
710
The reason why MaraDNS' recursive resolver has been freezing up is
711
because of a bug in the Linux kernel that the kernel developers are not
712
interested in resolving. I would like to thank Albert Lee for providing
713
a patch which resolves this issue.
721
<li>Patch to address possible security concern with the random number
723
<li>Some updates to the documentation
731
<li>MaraDNS now supports stars at the end of hostnames. The only part of
732
this feature that needs to be implemented is the ability to correctly
733
handle the case when someone asks for a hostname or record type that the
742
<li><tt>zoneserver</tt> now supports binding to multiple IP addresses
750
<li>Patched 1.1 branch so that it compiles on older versions of GCC again
751
<li>Made the ICANN list of root nameservers a default list, hardcoded in the
752
MaraDNS code, if the user doesn't specify root servers in their mararc
753
file. It is now possible to have a 3-line mararc file.
754
<li>Updated the quickstart guide to use the 3-line mararc example.
755
<li>Initialized variables that were uninitialized.
756
<li>Modified the mararc parser to exit on a fatal error if an unknown
757
mararc variable is seen.
758
<li>Mofified the relevent zonefile parsing code to correctly parse the
759
"default" zonefile (zone file with stars at end of hostnames).
768
<li>Small patch so MaraDNS will compile on older versions of GCC again
777
<li>Updated the zone file parser to improve (read: Make more pedantic)
778
parsing of hostnames with '*' characters in them.
779
<li>Removed all compile-time warnings.
780
<li>New mararc variable, csv2_default_zonefile, created.
789
<li>Updated tutorial and list of ICANN root servers. Cleaned up root
790
server lists in example mararcs (we no longer need long lines in
792
<li>Added verbose_query mararc variable
801
<li>Upgraded the ICANN root nameservers and other elements of the
803
<li>MaraDNS 1.0.xx compiles with no warning when compiled with -Wall again
804
<li>Added verbose_query mararc variable
813
<li>Updated macro processor to make any and all '{' characters in zone
814
files illegal. This will break csv2 zone files with '{' characters
816
<li>Updated install script to install duende tool and man page
817
<li>Updated MaraDNS startup script to use duende to invoke MaraDNS
818
<li>Updated the Quick Start guide and the MaraDNS man page to note
819
duende daemonizing tool.
820
<li>Added debugging output which will hopefully make the recursive server
821
occassionally freezing problem reproducible and fixable.
830
<li>Fixed bug with loading of synthetic SOA records in CSV2 zone files
831
<li>Updated roadmap to clarify goals for 1.2/2.0 release
832
<li>Zoneserver sucessfully transferred a zone to Bind 8.4.6
833
<li>Zoneserver sucessfully transferred a zone to Bind 9.2.4
834
<li>Zoneserver sucessfully transferred a zone to Bind 9.3.0
835
<li>Documentation for Duende tool updated to point out that the directory
836
<tt>/etc/maradns/logger</tt> is mandatory for this tool
837
<li>Incorporated Juergen's patch that installs the fetchzone tool and
839
<li>alarm() call added to zoneserver to implement TCP timeout
840
<li>askmara documentation cleaned up, improved
849
<li>The recursive resolver now works again (using 64-bit Y2038-safe
850
timestamps, to boot).
851
<li>Minor updates to documentation.
860
<li>Fixed bug where recursive server was outputting bad TTLs (I don't think
862
<li>Made a number of bug fixes to the zoneserver so that it correctly
863
serves zones (and SOA records) as a zoneserver
864
<li>Verified that the zoneserver works with the djbdns axfr client (axfr-get)
865
<li>Updated askmara's output and updated fetchzone's csv2-compatible output
874
<li>Checked examples in TXT/RAW record documentation, making fixes to
875
documentation and/or code as needed.
876
<li>Corrected how <tt>askmara</tt> outputs TXT and raw records.
877
<li>Added support for asking for arbitrary record types in askmara. Updated
878
man page to reflect this change.
879
<li>Changed examples in tutorial to <i>not</i> include SOA and NS records in
880
example zone file; hopefully registars are no longer anal about this kind
890
<li>Fixed ej2man script to make correct ASCII single quotes in man pages.
891
<li>Added csv2_txt manual page to document TXT and RAW records.
892
<li>Added support for RAW (any RTYPE) records to the csv2 parser.
893
<li>Updated tutorial to use csv2 records.
894
<li>Minor updates to the web page (there was a minor blemish in the rock face
895
texture which I surgically removed with Gimp).
896
<li>Mac OS X/Darwin fix for 1.0.24 integrated in to this release.
905
<li>Added support for TXT records to the CSV2 zone file.
906
<li>Added files to create the core maradns.org webpage to the documentation.
915
<li>Fixed the build process on MacOS X so it compiles again.
916
<li>Fixed some non-critical typos in the configure script.
923
<b>Note: This revison changes the format of csv2 zone files from 1.1.21;
924
this will be the last incompatible change to csv2 zone files done. All
925
future changes will be backwards compatible with csv2 zone files.</b>
927
<li>Fixed bug in csv2 parser where, when a newline causes a syntax
928
error, the error is reported at the start of the new line instead
929
of the end of the previous line.
930
<li>Made sure dnames are converted to lowercase before being put in to
932
<li>Got % shortcuts to work in the new csv2 zone files
933
<li>csv2 records have the authority data (the NS records for
935
<li>Synthesize ns records (have bogus names and
936
have the NS ips be any non-private ip address we're bound to)
938
<li>Added code to synthesize a SOA record for csv2 zone files without a
940
<li>Fixed bug that % doesn't work in dlabels in the data fields of an RR
941
<li>There is a working example csv2 file which documents what the file does
942
<li>Changed askmara to output records in csv2 format
943
<li>Created fetchzone tool that outputs records in csv2 format
944
<li>ej2man and ej2txt no longer use unicode for bullets
945
<li>There is now a man page for csv2 and fetchzone.
946
<li>Fixied bug with not being able to have UTF-8 at the beginning of a
948
<li>fixed %-only MX exchanger bug
949
<li>a bind address can not be 0.0.0.0 if we have csv2 zone
950
files (we now have support for binding to multiple IPs; 0.0.0.0 is
952
<li>Moved TTL to be before the rtype to be more like Bind's and Posadis'
954
<li>Moved TTL in fetchzone and askmara to be before the rtype.
955
<li>Added support for SRV records; Sean is actually using these
956
<li>Got the zoneserver to work with the new csv2 zone file (this took
957
the lion's share of the work for the 1.1.22 release)
958
<li>Integrated Juergen Daubert's latest cleanup patches
966
<li><code>show_esc_stdout</code> moved from parse/ParseCsv1.c to the
967
more sensible libs/JsStrOS.c.
968
<li>Code for parsing ipv6 addresses written (it took 355 lines to
969
parse stuff like "ffe:501:ffff::b:c:d"; compare this to 125 lines
970
for ddip_2_ip which does the ipv4 equivalent)
971
<li>Support for CSV2 zone files is about 80% done; combined with the
972
ipv6 address parsing, we're looking at 2348 new lines of code.
979
(Release 1.1.19 skipped because that was an accidental release I did last
982
<li>Changed tools to create utf-8 instead of Latin-1 man pages (Fedora Core
983
Two does <i>not</i> like Latin-1 encoded man pages).
984
<li>Added support for the += operator in the mararc file. This operator is
985
use for string concatenation. The goal (along with the csv2 file format)
986
is to make it so MaraDNS never needs a line longer than 80 colums in a
988
<li>Hopefully fixed bugs with mixed-case domain names.
995
This is a merge of the features present in MaraDNS 1.0.23 but not in 1.1.17
996
in to the 1.1.xx branch. Additionally, I have some ideas for a new zone
997
file format in doc/en/misc (more like, I have a full definition of a
998
finite state machine complete with psudo-code for processing of everything
999
in this new proposed zone file format). Compiles, but I don't know if
1007
Changes from 1.0.22:
1009
<li>Corrected error where askmara incorrectly outputted MX records
1010
<li>MaraDNS can now resolve star records when processing ANY queries
1011
<li>The RD value in replies is now the same as the RD in the corresponding
1013
<li>Fixed some typos in old changelog entries
1020
Changes from 1.0.21:
1022
<li>Applied Juergen Daubert's patch that makes MaraDNS compile clean, even
1023
with all warnings enabled.
1024
<li>Added testing for the zoneserver to the SQA suite
1025
<li>Fixed a problem where the zone server would die after serving MAXFD
1033
This is MaraDNS 1.0.20 with a patch that solves an error one user reported
1034
with the parsing of zone files.
1041
This is MaraDNS 1.0.18 with a patch to allow gnu.org to resolve again. This
1042
is the "no frills, just stay stable" branch of MaraDNS.
1049
This is simply a new release which indicates my decision to completely
1050
rewrite the recursive portion of MaraDNS. The old recursive code is
1051
removed; I hope to have time to work on the new recursive code soon.
1058
This is a test release which addresses a number of issues people on the
1059
list have brought up:
1061
<li> Doug Sampson a pointed out that the server gives out compression errors
1062
and freezes. I have replaced the compression code with the cleaner
1063
compression code from the 1.1.xx branch; this will hopefully address
1065
<li> Andrew pointed out that the zoneserver does not give out adequate
1066
error messages when there is a problem opening up a zone file, or when
1067
there is a fatal parse error in a zone file. I have added appropriate
1068
error messages to the zone server.
1069
<li>Juergen Daubert provided a patch to make Mara's compile generate less
1071
<li>A problem with the ORSC entries being out of date was brought up. I can
1072
not look up the current entries (being offline), but have changed all of
1073
the example files to use the ICANN entries by default, since ICANN is
1074
the only root server registry who has root servers with stable enough
1075
IPs for "set and forget" environments.
1076
<li>I myself found some problems where timeouts for PTR and AAAA queries can
1077
slow down poorly-written clients. As a result, MaraDNS now has the
1078
ability to optionally instantly give dummy "not there" replies to
1079
either PTR or AAAA queries (or both).
1080
<li>Some minor updates and clean-up to the documentation.
1087
Recursive queries now work again; fixed a place which was using a 32-bit
1088
value to get a timestamp, when the code in question should have used a
1089
josa_timestamp (64-bit) value.
1091
Additionally, it is now possible to use this program as a non-root user
1099
Cleaned up and fixed a bug in the MaraDNS startup script. Now, the only
1100
prorcesses that will be killed will be bona fide MaraDNS processes.
1107
Strnlen seems to not be a portable call after all (the BSDs don't have it);
1108
this version has a special js_strnlen call to make up for this.
1115
This is MaraDNS 1.0.15 declared "stable" (well, as stable as 1.0.13). The
1116
only change from 1.0.15 is more debugging information in case an
1117
unreproducable bug which one user reported pops up again.
1124
This is MaraDNS 1.0.14 with a good deal more stress testing done to
1125
the recursive resolver. There does not appear to be any obvious memory
1126
leaks; nor are there any stability issues with this release of MaraDNS.
1127
That said, I am, at present, marking the release "beta" until there is
1128
more field testing of the release.
1135
This is not a production release of MaraDNS. This is a beta-test release
1136
of MaraDNS which has the ptr-over-cname fix from the 1.1.xx branch backported
1137
to the 1.0.xx branch. In addition, the code has been modified to no longer
1140
Use this code at your own risk. While I have stress-tested this code for
1141
stability, this code has not been field tested yet.
1143
That said, it does fix the long-standing bug with correctly resolving
1144
PTR records which are CNAME referrals. I want to see some people help
1145
me beta-test this, so that I can make a more general release of this
1153
This release of MaraDNS is dedicated to the seven brave astronauts
1154
who died this morning on the Columbia space shuttle:
1160
<li> Michael Anderson
1165
died expanding the boundaries of humanity's next frontier; may
1166
their deaths not be in vain and may humanity eventually conquer space.
1168
This is MaraDNS 1.0.12 with a one-line bugfix for a bug the last
1169
release of MaraDNS introduced. This only matters for people who
1170
have zonefiles with no records in them (besides the SOA and NS records
1171
for the domain head).
1178
D Richard Felker III, who knows more about the arcane mysteries of
1179
UNIX pipes than myself, showed me how to get duende to catch the
1180
stuff sent to standard error also.
1182
Duende's manual page has been proffread and updated.
1189
I have given up, for now, on trying to catch both stdout and stderr.
1194
The daemonizing helper has been renamed 'duende' (Spanish for 'daemon',
1195
consistant with the Spanish theme MaraDNS has, it is said like 'dwen-deh'),
1196
and now sets up a second child process which syslog()s all of maradns'
1197
various messages. Also added new timestamp format with no timestamp
1198
whatsoever to eliminate redundant timestamp when using duende helper.
1205
MaraDNS now has a daemonizing helper which makes MaraDNS a daemon, then
1206
stays around. If either the daemonizing helper or MaraDNS (even
1207
MaraDNS 1.0.xx) gets a HUP signal, MaraDNS is restarted. If either
1208
process gets a TERM or an INT signal, both processes exit. If MaraDNS
1209
exits for any other reason besides a HUP signal, the daemonizer
1217
MaraDNS now has her own timestamp code which should get rid of any Y2038
1218
problems; on systems with 32-bit time_t, the problems are pushed forward
1219
to 2112 (and can be pushed forward indefinitely by changing only two
1220
magic constants and recompiling). Note: This means the code only works on
1221
systems with an int64_t; are there any significant Unix systems deployed
1222
which people may wish to use Mara on without int64 support at this point?
1229
MaraDNS has support for DNS record resurrection; this means that
1230
she can now use expired records if no DNS server can be contacted
1231
for a given host name
1238
MaraDNS with the following seven patches applied:
1240
<li>Records with CNAMEs should resolve more nicely on slow links
1241
(maradns-1.0.11-incomplete.cname.patch)
1242
<li>Askmara man page updated to say default DNS server address is
1243
127.0.0.3 (maradns-1.0.11.askmara-man.patch)
1244
<li>Recursive server no longer wastes time with in-bailiwick glueless
1245
NS referrals (maradns-1.0.11-bailiwick.patch)
1246
<li>References to nslookup in the documentation have been removed, or
1247
changed to note that nslookup is obsolete
1248
(maradns-1.0.11.no-nslookup.patch)
1249
<li>Fixed problem that Ray reported with empty zone files (zone files with
1250
only SOA and NS records) (maradns-1.0.11-raybug.patch)
1251
<li>Fixed very slight problem with how the RNG was seeded, should not affect
1252
most installations of MaraDNS (maradns-1.0.11-rngseed.patch)
1253
<li>Patch to work around admins who use a dot instead of an @ in the RNAME
1254
field for SOA record (maradns-1.0.11-soamail.patch)
1261
MaraDNS is now able to bind to multiple IP addresses. In addition, I
1262
have set up a signal handler so that MaraDNS can exit with a return code
1263
of 8 when she gets a HUP signal.
1265
The way MaraDNS binds to multiple IP addresses is by having a socket for
1266
each IP address, and a select() call which determines which socket
1267
someone connected to. Since the select() has a timeout, I was able to
1268
set up the HUP signal handler to only change a global variable.
1270
Proper HUP signal handling will be handled by a daemonizer wrapper, which
1278
Some improvments to DNS-over-TCP:
1280
<li>It is now possible to have permission to only forward a query
1281
over TCP without being able to transfer zone file.
1282
<li>It is now possible to use an old zoneserver mararc with the new
1284
<li>The feature has now been documented (albeit only sparsely in
1285
the mararc man page)
1292
It is now possible to use zoneserver to forward TCP DNS queries to a
1293
UDP DNS server; this gives MaraDNS full TCP DNS support.
1300
Not extensively tested, but following CNAMEs to PTR records now works.
1307
This release changes the decompressor so that it works with packets
1308
which some zoneservers with large zone files generate.
1310
There is also some minor revisions to the documentation.
1317
This release fixes a bug with the RP definition so that the
1318
decompressor can accept a DNS packet with this RR type. In other
1319
words, this release resolves the problem Danny saw.
1321
In addition, I have done some documentation clean-up, fixing the
1322
problems that Christian saw in the documentation; the most significant
1323
change is that the root servers for various root server networks have
1331
This release backports the 1.1.06 improvments to the 1.0.xx branch of
1339
This realease updates the FAQ, some other information, and has some
1340
minor cleanups performed to the code.
1347
This release has the same decompression patch which the 1.0.08 release
1348
has. In addition, this release has the test_zoneserver and test_getzone
1349
tools, just in case anyone ever sees problems with getzone again.
1356
The release fixes the problems which getzone which Marc Schneiders and
1357
Nikos Mavroyanopoulos reported. I would like to thank both people
1358
for reporting these problems.
1360
The problems were caused by the fact that the new decompression code
1361
did not expect the kind of packets which zoneserver generate; I have patched
1362
the new decompression code.
1369
This release incorporates TTL aging, and Jonathan's code which makes
1370
this run as a Win9x service (note: BSD copyrighted code with the
1371
obnoxious advertising clause; we may have to do something about that
1372
before this becomes stable code)
1379
I would like to thank Scott Cooper for working hard to find the cause
1380
of a bothersome crash which people have been reporting for about a
1381
month. This release, hopefully, fixes the crashing problem once and
1384
In addition, I have put back all of the improvments to the authoritative half
1385
which MaraDNS between 0.9.06 and 1.0.05 had; this version undoes the
1386
reverting I did for 1.0.06 (which I only did because problems started
1387
popping up two days before a two-week vacation I had in México).
1394
Johan is seeing stability problems with MaraDNS' authoritative
1395
half which MaraDNS 0.9.06 does not have; this patch essentially
1396
reverts the authoritative half to what MaraDNS 0.9.06 had.
1398
This hopefully fixes the stability problems; I am alas in a position
1399
to properly test this.
1406
Simple one-line change which allows MaraDNS to compile on Cygwin. Calling
1407
this release a "stable" release.
1414
The following improvments over MaraDNS 1.1.01:
1416
<li>All improvments made for MaraDNS 1.0.04 have been integrated in to the
1418
<li>A bug which caused MaraDNS 1.1.01 to seg fault has been fixed
1419
<li>This version of MaraDNS now supports human-readable timestamps
1426
MaraDNS 1.0.03 with the following patches:
1428
<li>Jon's patch which allows any arbitrary size for the debug memory
1429
allocation checking hash.
1430
<li>Christian's improved German translations.
1431
<li>Franky's improvments to recursive.c
1432
<li>Richard's changes which allow MaraDNS to compile on Cygwin (again)
1439
The first (real) release of the new development tree. This is MaraDNS
1440
1.0.02 with a new license (simple BSD-style license which will hopefully
1441
attract developers scared off by the "Public Domain opens you up to
1442
lawsuits" FUD) and a newly rewritten compression engine.
1449
Franky's second release. This contains the following improvements:
1451
<li>Removed the thread limit of 125 (changed it to 500
1452
because a limit is always needed)
1453
<li>Removed the Solaris-refuses-to-run-recursive limitation
1454
<li>Changed the locking scheme; all memory leaks seem to vanish using
1456
<li>Fixed some minor memory leaks
1463
This is a release of my own. This 1.0.01 with the following changes:
1465
<li>An audit was done on the decompression code. While no exploitable
1466
security problems were found, some clean up to make things more
1467
consistent was done.
1468
<li>A patch which tells us the IP from which a packet the decompresser
1469
didn't like was sent.
1470
<li>A patch which shows us the packet before decompressing it at a
1471
sufficiently high log level.
1472
<li>A patch which fixes a bug when the last record in the DNS packet
1473
had a rdlength of 0; the decompressor previously erroneously rejected
1481
This is Franky's first release. Mainly, some more minor memory leaks
1484
The only changes I made were some touch ups to the documentation, and
1485
added a copy of Franky's GPG key signed with the MaraDNS signing key.
1492
Now that 1.0.00 is released, I am deprecating the 0.5.xx branch.
1493
The only updates to this branch will be to fix bugs worth disclosing
1494
on Bugtraq. In other words, security bugs.
1496
If anyone wants to maintain this branch of MaraDNS, let me know.
1498
This release back ports some cleanup I did with dns/Queries.c which
1499
also applies to the 0.5.xx branch.
1504
<p>maradns-1.0.00: (released as close to 2002's solstice as possible)
1506
It's here. Happy solstice everyone!
1508
MaraDNS 0.9.92 with the following patches:
1510
<li>Yet another memleak patch
1511
<li>Patch which properly initializes the header data structure
1512
<li>Franky patch (modified) to fix things up
1513
<li>Neale's maragen added to the tree
1518
<p>maradns-0.9.92: (1.0 release candidate 2)
1520
MaraDNS 0.9.91 with the following patches:
1522
<li>Neale's patch which fixes a small problem in the install.sh script
1523
<li>Franky's patch which fixes up the locks
1524
<li>My patch to a possible memory leak that Franky found
1529
<p>maradns-0.9.91: (1.0 release candidate 1)
1531
MaraDNS 0.9.39 with the following patches:
1533
<li>Franky's patch which fixes a problem with the thread locking
1534
(The "Small Fix" patch)
1535
<li>Patch which fixes the recent rcode problems
1536
<li>Patch which limits the number of threads to 125
1537
<li>Patch which removes compile-time warnings
1538
<li>Patch which adds note in documtation that MaraDNS doesn't
1539
handle in-bailiwick glueless NS referrals very well.
1546
MaraDNS 0.9.38 with the following patches:
1548
<li>Franky's patch which reworks some of the locks. Seems to mimimize
1549
the thread overlap problems.
1550
<li>Patch which warns us if we unlock when there is no thread locked.
1551
<li>Patch which plugs a memory leak in Decompress.c.
1558
Added code to check the pthread locking status and to exit if
1559
it doesn't return a sucessful exit code.
1561
Removed timestamp format which allows us to see the PID; this
1562
was only needed for debugging purposes.
1564
Added comment in the MaraDNS source explaining why 200 is
1565
a reasonable maximum number of threads; that is about how
1566
many simutanious threads the underlying pthread library
1574
This is MaraDNS 0.9.36 with the following patches:
1576
maradns-0.9.36.dotafter.patch: Fixes problems with the "dot after .com"
1577
<li>maradns-0.9.36.decompress.patch: Fixes problems decompressing
1579
<li>maradns-0.9.36.cleanup.patch: Clean up recursive code; stops
1580
potential release of lock
1581
<li>maradns-0.9.36.bind.patch: MaraDNS now tries 10 times to bind to
1582
a port; should make her handle medium-to-high loads better
1583
<li>maradns-0.9.36.showpid.patch: Gives new option to show_timestamp
1584
to show the process ID.
1586
Also: Minor doc change (to document the new timestamp format);
1587
updated RPM spec, changelog, and download page
1594
The new decompression code now works. Enabling it so people can
1602
Improved RPM spec files
1604
The new decompression code is finished, but is not fully debugged yet (so it
1605
is disabled for this release).
1607
Code cleanups which should resolve the infinite loops Franky is seeing
1614
Yet another debug release; numerous small bug fixes and cleanups.
1615
MaraDNS now builds correctly when the locale of outputted messages
1616
is set to Spanish or German again. A bug where MaraDNS would crash
1617
in a certain very unusual case has been fixed.
1624
Another debug release; numerous small bug fixes. The most notable
1625
is the plugging of what appears to be the last memory leak in
1626
the recursive code; hopefully all I have to do for 1.0.00 at this
1627
point is the new decompression code and the release candidates.
1634
Another debug release; the code which keeps track of unallocated memory
1635
has been redone. Now memory leak tracking causes a minimum of slowdown
1636
when running MaraDNS; and the code works again.
1638
In addition, some minor touchups have been done to the code.
1645
Begin work on new decompression code (still using old decompression code
1646
until new code is complete)
1648
Fixing open socket leaks in recursive code, and case-sensitivity issues
1649
in the askmara code.
1656
Another bug fix release: Fixed bug where RRs with obscenely long TTLs
1657
would "wrap around" and end up having a negative TTL (causing the record
1658
to be promptly erased from the cache). Now the maximum TTL is two years
1661
Added a little more in the way of debugging messages to try to get
1662
to the bottom of the temporary freeze-ups that Franky is seeing.
1669
Bug fix release: Fix bug where hosts that were in bailiwick were, at times,
1670
rejected as being out of bailiwick.
1677
Added new level of verbosity, 4, which records every time we add or remove
1678
a record from the cache
1685
timestamp_type feature added; it is now easy for people
1686
to add new timestamp types; this seems to be a popular
1687
request ever since MaraDNS had added timestamps.
1694
Backport of fixes to compression code to the 0.5.xx branch.
1701
Hot fix: The compression code was completely broken in MaraDNS 0.9.25
1702
because I accidently made an integer which needs to be signed
1710
Bug fix: I finally have gotten to the bottom of the compression problems
1711
MaraDNS was having with news.com.com; this release fixes the problems,
1712
hopefully once and for all.
1714
I also have a document which describes some of the function calls
1715
the new decompression code will have.
1725
DNS records with a TTL of less than 30 seconds now have a
1726
visible TTL of 30 seconds. This is to work around stub resolvers (such
1727
as Mozilla's stub resolver) which can not resolve RRs with extremely
1730
Lines which are too long in mararc files now return a properly formatted
1733
I have begun work on the new decompressor; however no changes have been
1734
made to the actual compression code yet. However, there are now
1735
documents that specify how the new decompression will work and header
1736
files which the new decompression code will use.
1743
Bug fix: The mara.startup script now points to the same file location
1744
as the default install.location. Note that the startup script needs
1745
to be changed if moving the install location.
1747
Updated spec and patch file to build RPM for the current MaraDNS
1748
build; it has been too long since the last RPM release.
1750
Trivia: Cinco de Mayo celebrates a battle that Mexico won in 1862
1751
in Puebla, Mexico (I visited the site of the battle several times
1752
when I was down there; it is a beautiful eucalyptus forest, having a
1753
beautiful fountain and planetarium) against the French. As it turned out,
1754
the French won the war, but Mexico won that one battle, which has been
1755
celebrated since then. Also, with the exception of Puebla, Cinco de
1756
Mayo is not a big holiday in Mexico; only in the US.
1758
(2002.05.05; Cinco de Mayo)
1763
Created list of issues to be resolved before the 1.0 release of MaraDNS;
1764
once these are done, I will start a 0.99.x branch; which I will
1765
publically announce.
1767
Added kludge to work around unreproducable problems where the
1768
compressor can not always compress a DNS packet
1770
Added link to glassary entries in the tutorial every time the
1771
tutorial intoduces a new term.
1778
Fixed bug where the minimum TTL for CNAME entires could not be
1781
Added stub resolver which generates unix timestamps as bogus A
1782
records; used for testing.
1784
Added FAQ entry about MaraDNS' time stamp format.
1791
Changed udperror so that it will tell us from where udperror was called;
1792
this will hopefully help me fix the news.com.com problems MaraDNS is
1796
to some logged requests and added source IP
1799
Added the ability for a remote query to get MaraDNS' internal timestamp;
1800
this is only enabled at obscenely high levels of debug_msg_level, since
1801
it is a security risk (there are attacks which are more effective if we
1802
know the target's clock value).
1804
Minimum TTL and Minimum TTL for CNAME records is now user-customizable.
1811
Added download.html to maradns.org web pages which are converted here;
1812
this allows the pages which change most frequently on maradns.org to
1815
Added FAQ Q&A about a problem that someone was having; hopefully the
1816
next user with the problem will be able to use this information.
1818
Added incomplete ej2dbk converter which converts from ej to docbook.
1819
This is incomplete; after MaraDNS 1.0 I will add code which closes open
1820
tags and what not so the generated docbook is 100% legal.
1827
Fixed a bug in askmara where non-ASCII characters were not properly replaced
1828
by escape sequences.
1830
Updated EJ documentation tools so that they can now generate webpages
1831
in the same format as the web pages on www.maradns.org.
1838
Added a minor new feature (since it was trivial to add, and since it is a
1839
feature which greatly expands the functionality that MaraDNS has):
1840
<tt>upstream_servers</tt>. This allows MaraDNS to be used to contact
1841
other recursive servers when run in recursive mode.
1843
Further bugfixing and revision of the debug.hostname tool; it now will
1844
not get stuck in endless loops trying to resolve a given hostname.
1851
Converted encoding of all files in the MaraDNS source tree from ISO 8859-1
1852
to UTF-8 (with the exception of one file in the utf8 directory which is
1853
<i>supposed</i> to be ISO 8859-1 data). Fixed EJ tools so that they can work
1854
on a current (as of early 2002;
1855
RedHat 7.2) Linux system using the UTF-8 encoding without undue hassle.
1857
Fixed bug in debug.hostname where it would not resolve host names in certain
1865
Added '-n' option to askmara so askmara can send the same kinds of DNS
1866
queries that recursive DNS servers send out (DNS queries that do not ask
1869
Fixed bug where 'make install' would overwrite /etc/rc.d/init.d/maradns
1871
Changed maxprocs limit to 200 and made it so exceeding maxprocs does not
1872
cause MaraDNS to stop; instead maxprocs is reset to 200.
1879
Rewrote debug.hostname tool; this will allow me to set up the testbed
1880
to find the more obscure MaraDNS bugs.
1887
Fixed bug where debug_msg_level could only be changed if recursion was
1890
Changed stress testing simulation to simulate network lag in processing
1893
Made maxprocs have a hard limit of 100; making maxprocs have a value of 400
1894
results in MaraDNS hanging on Linux systems.
1901
Cleanups performed so that all files to be audited to be compiled with
1902
-Wall enabled without generating any warnings.
1904
Fixed ej2txt so that it no longer generates utf-8 quotes.
1911
Fixed bug where CNAME records obtained from the cache would not work
1912
with stub resolvers, since the code changed the question in the question
1913
section of the reply.
1915
'make debug' now works again.
1922
Fixed bug of case where there is a CNAME record, and something happened
1923
when trying to get an A record for the CNAME record. Previously, MaraDNS
1924
would think the CNAME record had no A record until the CNAME record was
1925
purged from the cache. Now, MaraDNS is smart enough to store CNAME
1926
records with an A record of "a 'no such host' reply was found when we
1927
looked for an A record"; and CNAME records without any corresponding A
1928
record only stay in the cache for 30 seconds.
1930
If data is already in the cache for a given record, and the data has not
1931
expired, then there is no need to spawn a thread to process the record;
1932
now MaraDNS no longer does this. This should result in greater stability
1933
and less memory usage, since many operating systems do threads poorly.
1935
askmara now can have a user-defined timeout
1937
compile flags changed from -g to -O2
1944
Added data_structures.ej document, which describes the internal data
1945
structures that MaraDNS uses.
1947
Updated the mararc man page to describe the new debug_msg_level
1950
Added files needed to make MaraDNS RPM files in the build/ directory.
1957
Fixed another bug in the ej2man script; it now correctly zaps blockquotes
1958
inside ul.../ul lists.
1960
Made changelog an ej-compatible document; this allows the changelog
1961
to be an ASCII text file instead of an HTML file which a lot of
1962
UNIX-heads will prefer.
1964
Verified that MaraDNS 0.9.07 compiles on Darwin (a.k.a. Mac OS X) "out of
1965
the box"; this means that MaraDNS now compiles "out of the box" on
1966
Solaris; Linux; and Darwin. It also <i>should</i> compile on Cygwin; alas
1967
I do not have a working cygwin setup to verify this on. Between these four
1968
OSes, we cover all of the major flavors of UNIX: Linux is a little
1969
of everything; Solaris is a "System V" UNIX; Darwin is a BSD UNIX clone;
1970
and Cygwin is a pure POSIX implementation.
1977
Added new runtime parameter which can be seen when debug messages are
1978
enabled: The number of elements in the DNS cache.
1980
Added Makefile template which is a generate Makefile for systems which
1981
do not have flock() support; make this Makefile the default
1982
Makefile (instead of the Linux Makefile).
1989
Fixed bug in maradns startup script where the script would not correctly
1990
restart the MaraDNS processes.
1992
New mararc parameter added: debug_msg_level; this sets the level of
1993
information we can get about a running MaraDNS process by sending special
1994
DNS queries to MaraDNS.
2001
Revamping of the build process; placing most build-related files in a
2002
directory named "build"; MaraDNS now compiles and installs cleanly on
2003
Solaris; MaraDNS now has a system startup script which MaraDNS invokes at
2004
system startup time.
2011
Another documentation fix. Added new EJ tag: DTWIDTH
2013
This version now compiles on Solaris; and should compile on Darwin.
2020
Integrated Christian's spelling corrections and German translations in
2021
to the MaraDNS documentation.
2023
Minor bugfixes with the ej2man script.
2029
<blockquote><p>Document reorganization: MaraDNS now uses a new document format, EJ
2030
(which I created myself for MaraDNS documentation usage), which can
2031
be converted in to HTML documents, text documents, or in to man page
2032
sources. By having a stramlined documentation format, MaraDNS'
2033
documentation will be easier to manage, and easier to translate.
2035
Since the ej format allows other files to be embedded in documents,
2036
this eliminates having to revise multiple versions of the same document
2043
Backporting of compression security patch to the MaraDNS 0.5.xx branch.
2050
Fixed security problem with the compression code which I found when
2051
performing an audit on the code. Other cleanup of the compression
2054
Updated the French documentation.
2056
Added some more information to the MaraDNS tutorial.
2058
Added (currently untested) Darwin (a.k.a. MacOS X) support.
2065
Plugged some memory leaks in the recursive code.
2067
Added Thomas Seyrat's French translation of the documentation
2069
Completed the tutorial
2071
Fixed bug where the zoneserver needed the mararc file specified to start.
2073
Updated documentation
2080
OK, so I was wrong about the first post-0.8.99 release being MaraDNS
2083
This is simply MaraDNS 0.8.99 with a 2-line patch which fixes a problem where
2084
MaraDNS 0.8.99 would crash.
2091
Since I found a some security problems when working on the
2092
MaraDNS-0.9.00 release, I am making this release available
2093
which appears to addresses the security problems.
2095
Changes since 0.8.35:
2097
<LI> Jaakko's patch, in a modified form, has been applied.
2098
<LI> Documentation touchups.
2099
<LI> Askmara timeout increased.
2100
<LI> Solaris recursive support dropped until I can get my hands on my
2101
Solaris CDs (and a PC to install Solaris on) in January (Solaris still
2102
has bugs which do not exist in Linux).
2103
<LI> Updated test bed to handle NS referrals which point nowhere
2104
<LI> Found and fixed a bug where MaraDNS would not close UDP connections
2105
when sendto returned an error
2106
<LI> Fixed a problem that mhash_put_data had, where the DNS cache could become
2107
inconsistant in certain circumstances.
2108
<LI> Fixed two other spots in recursive.c (in two of the add_closer routines)
2109
which could have potentially caused inconsistant data in the cache.
2110
<LI> Got remove.rng to work again.
2113
I have changed the version number to maradns-0.8.99 to
2114
reflect the fact that the next release will almost certaintly be
2122
Made the stress tests in sqa/testbed more extensive; they now crash
2123
recursive MaraDNS versions up to and including 0.8.33.
2125
Found and plugged some memory leaks that MaraDNS had.
2127
Verified that MaraDNS can handle the stress tests--MaraDNS was able
2128
to handle 80.000 queries without crashing, and without growing
2129
after 10.000 or so queries were processed.
2136
Found and removed another crash-inducing bug.
2138
Modified <TT>askmara</TT> so that it generates somewhat
2139
csv1-compatible output. Also modified the <TT>debug.hostname</TT> tool
2140
so that it can handle the new askmara output.
2147
Yipee! No, I'm not talking about the fact that the evil Taliban
2148
are no longer in control of Kabul. I am talking about the fact that
2149
I found and removed another crasher bug in MaraDNS.
2151
I hope that this is the last crasher bug. Time to cross my fingers.
2158
This is the third beta test candidate for the recursive MaraDNS, since
2159
people are reporting serious stability problems with MaraDNS 0.8.30 and
2160
MaraDNS 0.8.31. While I am unable to reporduce the problems offline,
2161
I was able to reproduce the problem online (but only intermittently), and
2162
found some iffy-looking code which may be the root of the problem.
2164
This program passes all offline stress tests.
2166
Also added an entry to the FAQ which answers an unrelated question
2167
posted to the mailing list, and added the changelog to the list of files
2168
placed in the MaraDNS doc directory when a 'make install' is performed.
2175
This is the second beta test candidate for the recursive MaraDNS, since
2176
I found some bugs after releasing MaraDNS 0.8.30. See the release notes
2177
for MaraDNS 0.8.30 for more on the beta starus of MaraDNS.
2179
Looking through the source code of the revamped hash structure, I found
2180
a routine which was not revamped. This would cause a bug in the case
2181
of having two or more zone files which happen to hash to the same
2182
value--only one of the zone files would load. Fixed. I also deleted
2183
some routines which were based on the old hash structure.
2185
I have modified MaraDNS so the csv1 hash no longer needs to be
2186
initialized, since the csv1 hash does nothing but waste memory in
2187
recursive-only MaraDNS configurations.
2189
I have added another parameter: timeout_seconds, which is how long to wait
2190
for a remote DNS server to reply. This is mainly useful for slow
2191
networks which need more than two seconds to get a reply from a DNS
2192
server. Note that the larger this is, the slower MaraDNS answers queries
2193
when a DNS server doesn't respond to DNS requests.
2195
In addition, I have begun work on the tutorial, which currently
2196
describes how to use MaraDNS in recursive mode, and gives an overview
2204
This is a beta test candidate for the recursive version of MaraDNS. Which
2205
means that the only changes I will make between now and the first beta
2206
release are essential bug fixes (e.g. bugs not mentioned in the man page),
2207
and a basic DNS tutorial, since I have received two emails of the
2208
form "I don't know how to do this DNS stuff, and could use some help".
2210
The bad news is that, because of the excess of greedy lawyers in the US, I
2211
have added the legal disclaimer to all of the man pages for MaraDNS, and,
2212
in addition, the legal disclaimer appears when MaraDNS is started.
2214
The good news is that it is possible to have MaraDNS not show the legal
2215
disclaimer when opening up; MaraDNS tells you how to do this when showing the
2218
The better news is that I have done a major revamping of the MaraHash
2219
structure. This structure is a structure that can both handle records
2220
being added, and being removed from the hash. MaraDNS, as far as I can
2221
tell from my offline tests, is now a great deal more stable as a result.
2223
In addition, I found another memory leak in the recursive code, which I
2226
I have also performed some more documentation touch-ups.
2233
OK, this is a "band-aid" release of MaraDNS. As I was debugging the problem
2234
with MaraDNS crashing with the new custodian, I discovered that the hash
2235
code is fundamentally broken. Hence, I need to a major revamp to the
2236
hash code. In short, the hash needs to have each hash spot point to
2237
a linked list of elements.
2239
In the meantime, I performed a band-aid fix to the hash that,
2240
while not fixing the problem, makes the problem slightly less bothersome.
2241
This is an interim release until I can really fix the problem this
2244
Updated the FAQ to reflect the slightly changed procedure for joinging the
2245
MaraDNS mailing list ("subscribe" now has to be in the subject line when
2246
one wants to join the list).
2253
I fixed a bug in the fila-handling code where chains of records were not
2254
being correctly put at the top of the list.
2256
I am still receiving reports that MaraDNS freezes up after running for
2257
a while. I am unable to reproduce this problem. I have carefully checked
2258
the recursive code for potential deadlocks, finding none.
2260
I suspect that there is a certain query which causes thie problem.
2261
Theirfore, I have added the ability for MaraDNS to log all queries she
2262
receives in human-readable format if verbose_level is three or higher.
2264
While this results in some really huge logs, this will hopefully allow
2265
me to pin down exactly which query causes MaraDNS to lock up, allowing me
2266
to see where MaraDNS locks up, allowing me to resolve the issue.
2273
I have added a lot of code which creates a circular linked list. This
2274
circular linked list is used by the custodian to erase elements from
2275
the cache which have not been recently accessed.
2277
The psudo-random number generator has been renamed to 'rng', and modified
2278
to be a hash-only primitive. MaraDNS no longer has any code which can be
2279
directly used for cryptographic purposes. Of course, the compression
2280
function of the hash/prng is invertable, and can be used as a stream cipher,
2281
but such is the case for all secure hash functions and secure PRNGs.
2283
Added a list of features I will not add to the 1.x release of MaraDNS to
2284
the MaraDNS man page.
2286
The default max_glueless_level is now 10, because some real-world hosts
2287
need a max_glueless_level this high.
2294
I have updated the 0QuickStart file to be current with the present
2297
The Linux makefile now supports "make debug", useful for making a build
2298
with verbose debugging output.
2300
Now that I have some decent *roff documentation, I have done some
2301
improvments to the formatting of the man pages. Not only do the man pages
2302
look a little more attractive on the tty terminal, the man pages also
2303
look good when made postscript man pages (troff -man -Tps foo.1 > foo.ps).
2305
In addition, since the -man macros are not documented anywhere on the
2306
internet, I have somewhat deciphered the tmac.an macro set, and written
2307
up some documentation describing all of the -man macros.
2313
I have done an audit and an overhaul of how MaraDNS calls locks in the
2314
recursive code. Hopefully, this will resolve the issues with MaraDNS
2315
freezing after running for a few days.
2317
In addition, the recursive resolver now is better able to handle
2318
instances where a NS record points to a list of IPs.
2320
More documentation updates. The man page for maradns now has a guide on
2321
how to set up a firewall to allow maradns packets through, and a list of
2322
known issues where MaraDNS breaks the DNS spec.
2324
The crypto-emasculated version of MaraDNS no longer binds the source port
2325
of outgoing UDP queries. This is because the underlying OS may generate
2326
secure source port numbers when the source port is not specified in the
2334
I have created a tool, called <TT>debug.hostname</TT> in the tools directory,
2335
which gives a very verbose trace trying to look up a given hostname.
2336
This will hopefully help me to debug and fix problematical hostnames.
2338
I have also created a tool, called <TT>faq2man</TT> which converts
2339
the HTML faq in to a format suitable for embedding in to a man page.
2340
This makes the FAQ section of the MaraDNS man page more attractive
2342
I have made the maximum glueless level user-configurable, since it looks
2343
like some hosts do not resolve with the old hard-wired default of 4. I
2344
have also made the maximum number of queries performed total in a
2345
recursive lookup user-configurable
2347
I have added more helpful error messages which tell the user what to
2348
fix in their mararc file if MaraDNS can not initialize the DNS cache or
2349
the random number seed. The init_cache() and init_crypto()
2350
failed error messages should not be visible any more.
2352
Documentation update: There is now a man page description of the mararc
2353
file. The CREDITS and FAQ files have been updated, in addition to almost
2354
all man pages. For example, I have gotten rid of the two or three pages
2355
of ugly troff syntax that Perl's pod2man program generates in the Man pages
2358
<TT>make</TT> run without <TT>./configure</TT> now works again.
2360
Since MaraDNS used to act in a different manner than Python 1.5.2 with
2361
respect to multiple declations of the same index of the same dictionary
2362
variable, I have changed MaraDNS so that she exits with a fatal error
2363
should this occur, showing the user the line with the problem.
2365
Made the error message which pops up when a csv1 zone file pointer is
2366
incorrectly formatted more helpful.
2368
There was a minor security weakness with the PRNG which would pop up if
2369
the seed was a fixed file, two copies of MaraDNS used the same seed
2370
file, and the two files were started at the same time. This has been fixed.
2371
The seed is now exclusive-ored with the process ID before generating numbers.
2373
More trimming of unused routines in the AES code. The AES code now only
2374
supports encryption with a 128-bit key and block size in ECB mode--the
2375
only way we use AES in MaraDNS.
2377
For people who can not legally have any kind of cryptography in their
2378
code (French citizens, etc.), there is now a script in the <TT>tools</TT>
2379
directory, <TT>remove.aes</TT> which removes all crypto code. Note that,
2380
while the main MaraDNS suite will still compile after running this, some
2381
programs in the <TT>tools/misc</TT>, <TT>test</TT> and <TT>sqa</TT>
2382
directories will no longer compile. <TT>make</TT> still works, of
2383
course. Note that removing this code does make MaraDNS more suspectable
2384
to a spoofing attack.
2390
Star records which point to CNAMEs are now completely supported.
2392
Christophe Colle pointed out that the reason MaraDNS was leaking memory
2393
when making threads on Solaris was because MaraDNS was not using
2394
pthread_attr_destroy. Hopefully, adding this will make MaraDNS
2395
<i>not</i> leak on Solaris.
2397
Improvment to the "make install" process: The default configuration
2398
looks for local man pages in <tt>/usr/local/share/man</tt> if
2399
<tt>/usr/local/man</tt> doesn't exist. This is to get around some
2400
Linux distributions which don't have <tt>/usr/local/man</tt>
2402
Minor security tweak to the routine that generates the 16-bit secure
2403
psudo-random number.
2405
The AES hasher now correctly generates a 128-version of the hash specified
2406
in Bram Cohen's proposed AES hash standard. Thanks to Bram for providing
2407
test vectors for the 256-version of the hash.
2409
maradns --version now also includes the build system and date
2416
Two bugs have been fixed: A bug where a UDP error message normally did
2417
not have the correct query ID, and a bug where, in certain cases, MaraDNS
2418
would return a UDP error instead of a SOA "not there" reply.
2420
Also, the documentation has been updated. (2001.09.25)
2425
Document reorganization: I am starting to move the formats of the data files
2426
to separate man pages. This will make each man page smaller and more
2429
Improved CNAME support: MaraDNS now has partial support for star records
2430
that point to a CNAME.
2432
Less code in the aes directory: I now have a program which generates the
2433
AES tables during the build process, since the code to generate those
2434
tables is a good deal smaller than the tables themselves. There is no
2435
slowdown, since it is a one-time calculation done during the build process.
2437
maradns --version (and zoneserver --version) now do the right thing:
2438
Print out the version number and exit
2440
The installer now removes the zoneserver and the maradns server before
2441
installing the new ones to get around the "text file busy" problem.
2443
There was a subtle bug with returning "not there" SOA replies and
2444
case insensitivity. This bug has now been fixed. This bugfix also
2445
needs to be folded back in to the 0.5.xx branch.
2447
It is now possible to change the class of the query with the getzone client
2448
if possible. Next: Document this new feature. (2001.09.24)
2454
First, the bad news.
2456
There is a known issue with MaraDNS having memory leaks when used as a
2457
recursive nameserver on the Solaris operating system. This problem
2458
does not exist in Linux. Since I do not have ready access to a Solaris
2459
box to develop on, I can not resolve this issue. Until a Solaris developer
2460
steps up to bat and fixes this for me, I am forced to disable recursive DNS
2461
serving under Solaris.
2463
I should have ready access to a Solaris again in December,
2464
when I return to the United States. I have CDs of Solaris eight up
2465
there, in addition to friends with Solaris boxes.
2469
I have updated the example mararc files to be consistant with the
2470
documentation. In particular, I now have two "out of the box" working
2471
mararc files. One for authoritative name serving, and another for
2472
recursive nameserving.
2474
I have also updated the installer script to return an error if the
2475
directories to put the MaraDNS files in do not exist. In addition,
2476
MaraDNS will install all of the MaraDNS documentation in the directory
2477
specified by the variable DOCS in install.locations.
2479
Finally, I have updated the FAQ, the man pages, the mararc.format
2480
documentation, and am working on making separate man pages which describe
2481
csv1 zone files and the mararc file. (2001.09.20)
2485
When doing some tests with the AES engine in MaraDNS, I found that
2486
I inadvertently created a minor security problem w.r.t. ASCII nulls in
2487
the AES key. Basically, an "out of the box" MaraDNS configuration had
2488
a 1 in 16 chance of the aes key not having a full 128 bits of entropy.
2490
I also corrected a minor fault in the aes128 hasher (it
2491
did not previously fully follow the spec, since it counted bytes, not bits),
2492
a minor fault with the top-level Makefile (which did not clean up
2493
tools/misc with a make clean), and did some minor manpage clean-up.
2499
Updated the CREDITS file. If you have contributed to MaraDNS in any way,
2500
no matter how small, and are not in this file, please let me know so I can
2503
Removed references to routines in the aes/ directory which
2504
MaraDNS and aes128 do not use. The aes code is now encrypt-only.
2506
Added a test, based on Brian Gladman's AES reference code, which verified
2507
that the AES routines are working correctly.
2509
Some cleanup, corrections, and revisions of the man pages. I figured out
2510
how to turn off hyphenation and justifaction for man pages, and have hence
2511
disabled these in all of the MaraDNS man pages.
2513
Streamlining of the build process: <TT>./configure; make; make install</TT>
2514
now does "the right thing". In addition, <TT>make uninstall</TT> also
2515
automagically does the right thing.
2517
<STRONG>Important:</STRONG> <TT>make install</TT>
2518
now, by default, installs files in <TT>/usr/local/sbin</TT>,
2519
<TT>/usr/local/bin</TT>, and man pages in <TT>/usr/local/man</TT>. If one
2520
has previous installs of MaraDNS in other locations, please change the
2521
<TT>install.sh</TT> script to the desired location of the MaraDNS files.
2527
Added code which keeps track of allocated memory, allowing me to hunt down
2528
and eliminate memory leaks. Found four memory leaks in the recursive code:
2530
<LI> in_bailiwick did not properly destroy the tempory string "get"
2532
negative answer was given, query_nameserver did not correctly deallocate
2533
some temporary strings
2534
<LI> recurse_call did not correctly deallocate the temporary string used
2535
for glueless queries
2536
<LI> The code that set up the root nameservers in the cache had two strings
2537
which were used to help set up the root nameservers. This strings were not
2538
deallocated after being used. This was a one-time, and not continuous, leak.
2545
Incorperated a modified form of Franky's patch which adds the max_tcp_procs
2546
kvar to the program. Added some non-DNS releated tools to the "tools"
2547
directory. Clean up of the documentation. (2001.08.28)
2552
More regression testing: Added test where it sends an answer to a server.
2553
If the server replies, this is considered an error condition. Cleaned up
2554
the recursive code (got rid of some XXX to dos): Mainly, MaraDNS sends an
2555
error if she can not spawn a thread. Documentation reorganized. (2001.08.16)
2560
Made an 'asktest' program which will be used for regression testing.
2566
Added support for a counter that counts the children in the Zone server.
2572
Askmara doesn't display debug messages which can mess up terminals to the
2573
end user any more.<p>
2574
When an element in the cache is overwritten, the new data is now added
2576
New feature: MaraDNS can now blacklist spammer-friendly DNS servers.
2583
Fixed bug in udperror which caused it to spit back the wrong query ID. <P>
2584
Added code to use a counter to count the number of threads. If we have more
2585
than maxprocs threads going on at the same time, we refuse to launch a thread.
2586
<P>Cached data now will go through round-robin rotates.
2587
<P>MaraDNS now compiles again when the locale is set to Spanish (though
2588
I still need more Spanish translations. Maybe when I am in México, I can
2589
get help down there)
2595
Backported some bug fixes with zone file handling back to the "stable"
2596
authoritative-only branch of MaraDNS. (2001.08.10)
2601
Improved handling of CNAME records in the cache. BSD-dependent routines
2602
(which are currently unused in MaraDNS) are not compiled if we are compiling
2603
on a Solaris box. (2001.08.08)
2608
I have redone the makefile in the rijndael directory, some some makes
2609
(notably, the one NetBSD has) did not like the original Makefile.
2610
Marked some unreproducable bugs as unreproducable.
2616
After much work (handling lame delegations better and fixing a bug in
2617
<tt>substring_issame_case</tt>), I have managed to get the host name
2618
linuxemu.retrofaction.com to resolve.
2620
Completely unreleated to MaraDNS, I have added a SirCam filter to the
2627
More bug swatting: <UL>
2628
<LI>The problem that was causing www.fairytale-abuse.com to not resolve
2629
is fixed. (Better lame delegation handling)
2630
<LI>The problem that was causing www.cs.cmu.edu and
2631
www.roaringpenguin.com to not resolve is fixed (Better case
2632
sensitivity handling)
2639
Fixed the zoneserver so it too only answers questions. Fixed two bugs in
2640
the getzone client: One where it would handle MX records incorrectly,
2641
another where it would hand the root zone incorrectly (this bug was actually
2642
in the Queries.c file). (2001.07.27)
2647
We now check to make sure we only answer questions. (2001.07.18)
2652
Added support for multiple root name servers. Also changed the example
2653
mararc file to have the root servers for eight different top level
2654
domain registries listed. (2001.07.16)
2659
Back porting bug fixes to the authoritative-only branch of MaraDNS.
2665
MaraDNS now sucessfully compiles on Solaris. Thanks to
2666
Franky Van Liedekerke for providing the pointers on how to do this,
2667
and to Danny for access to a Solaris machine to compile MaraDNS on.
2673
Solaris support added, but does not fully work, added disclaimer, improved
2674
code which drops group privileges.
2680
Another bug fix: If a zone did not have a record of a given type at the
2681
"top" of the zone, MaraDNS would attempt to perform recursion instead of
2682
returning a SOA record in the authority section. Fixed. Also needs to
2683
be fixed in the 0.5.xx branch. Thanks to D Richard Felker III for
2684
finding the bug. (2001.07.10)
2689
Touch up bug fix: MaraDNS failed to close open file descripters when reading
2690
zone files. Fixed. Also needs to be fixed in the 0.5.xx series.
2691
Thanks to Boris Manojlovic for finding the bug.
2697
Fixed a couple of long-standing bugs found while debugging the recursive
2701
<li>Fixed a subtle bug in the DNS compression code that would only
2702
show up in certain rare circumstances.
2703
<li>Fixed a bug in the handling of ANY DNS queries.
2710
This is the first alpha release of the recursive nameserver. I fixed a bug
2711
in the compression code, and fixed another bug which was causing problems with
2712
glueless name server entries. (2001.07.08)
2717
www.monty.de now successfully resolves; fixed bug where the custodian
2718
could potentially erase the root name server entry, making MaraDNS
2719
non-functional as a root nameserver until restarted. (2001.07.07)
2724
Type ANY queries now work for recursive queries. Finally. (2001.07.06)
2729
Another late night double feature MaraDNS show. There was a really nasty
2730
bug which Jaakko pointed out to me. I found the culprit, and fixed the bug.
2736
Begun work on some of the infastructure changes needed to make MaraDNS
2737
sucessfully resolve recursive ANY queries. Added maradns_gid support.
2738
Other pieces of code cleanup, primarily better handling of RR_ANY when
2739
acting as an authoritative nameserver (should I fold these changes in to
2740
a 0.5.26 release eventually?). (2001.07.04)
2745
Re-arranging of the engine that returns an answer from the cache. We check
2746
the cache expire of a "host not here" reply. Updated the documentation so
2747
that it is the 0.5.25 documentation with the recursive stuff added as
2748
needed. (2001.07.01)
2753
We now choose a random DNS server to query when we are looking for an
2754
answer. (2001.07.01)
2759
Updated documentation to include information on how to set up a recursive
2760
nameserver. Fixed bug where multiple levels of CNAME indirection were not
2761
being properly followed. It is now possible to go to www.imdb.com or
2762
groups.yahoo.com (both cases of multiple levels of CNAME indirection).
2768
I have added support for negative caching: If a given host name
2769
does not exist, the program sends a "not here" to the stub resolver.
2770
I also fixed a bug which was causing out-of-bailiwock queries to not work.
2771
(Having to do with the case-sensitivity issue). Next: Getting www.monty.de
2772
to work, caching ANY replies. (2001.06.28)
2777
MaraDNS now works as a recursive nameserver again. The root nameserver
2778
is now user-configurable. CNAME returns queries in a form that a stub
2779
resolver can now understand. (2001.06.25)
2784
After much tinkering with the code, I have managed to make it so that
2785
a CNAME record in the cache returns the corresponding A record (note: only
2786
one A record!) along with the CNAME record. This should allow hosts like
2787
www.yahoo.com to work when this is used as a stub resolver. (2001.06.24)
2792
More work done on plugging memory leaks. Working on code that will
2793
determine the ip for a given CNAME record, since stub resolvers are not
2794
smart enough to do a second A query themselves when they see a CNAME
2795
record. Also some minor cleanups that Franky Van Liedekerke
2796
suggested. (2001.06.22)
2801
Finished work on the custodian. Now, I need to make sure the custodian
2802
works. Also fixed CNAME support so it now works, plugged a couple more
2803
memory leaks, and revised the offline testbed to have a CNAME record.
2809
Bigfixes: I have plugged some memory leaks, and added code which will
2810
(hopefully) allow recursive queries to cname records to work.
2811
I have also done some more work on the "custodian" code.
2817
Bugfix release: MaraDNS now closes the sockets that she opens when
2818
performing recursive queries. This stops the open sockets from piling
2819
up. Also, I have begun work on the "custodian" code: Code the reduces
2820
the number of elements in the cache when the user-defined cache runs
2821
low on space. (2001.06.20)
2826
I have made the RNG truly random, and I have added code to the resolution
2827
algorithm which allows it to perform recursive queries when the only
2828
authoritative records are NS delegation records. Also, updates to the
2829
todo list. Changed cc to gcc in all the makefiles to make
2830
MaraDNS more Solaris-friendly. (2001.06.20)
2835
I have added ACLs which limit who is allowed to make recursive queries.
2836
I have also begun work on making the random number seed truly random.
2842
I have updated the non-recursive code to use code from MaraDNS 0.5.25,
2843
which adds a number of features from there (round robin rotation, etc.)
2844
I have alos made a list of things which need to be done before I can
2845
make this a beta candidate for a 1.0 release. In addition, the code now
2846
makes sure that the query ID we receive is the same one we sent out.
2847
I have also started work on a CREDITS file, updated the FAQ, and added
2848
a couple of interesting (if not MaraDNS-specific) Perl scripts to the
2855
The DNS server now has a psudo-random number generator which uses the
2856
Rijndael algorithm. This PRNG randomizes both the query ID and (I believe)
2857
the source port of any and all DNS queries. This PNRG now needs to become
2858
secure (by setting up either a random or a user-defined Rijndael key)
2864
There were some bugs in the RR expire code. I have found those bugs,
2865
fixed them, and now cache expirery should work. (2001.06.12)
2870
This release has implemented the ability to expire records from the cache.
2871
All Name server records have a fixed expire of 1 day (this can be changed
2872
by changing one #define in recursive.c), but all other records have an
2873
expire time based on the TTL of the record. <b>I have not yet tested
2881
Milestone: This is the first release of MaraDNS that works as a recursive
2882
nameserver with the real root nameservers. Fix: Changing only the case of
2883
the first nameserver, add negative caching, then start adding security
2884
(good RNG for the query ID and source port, recursive ACL), then start
2885
making the root servers customizable (including being able to have different
2886
TLDs have different root servers). (2001.06.11)
2892
Beginning work on making MaraDNS both case-insensitive and able to preserve
2899
Albert Prats kindly provided Spanish translations for various text files.
2900
To get MaraDNS to compile in Spanish instead of English, type in
2901
<tt>./locale.es</tt> before compiling MaraDNS.
2905
MaraDNS now can handle gluelessness. I am bumping up the minor version
2906
number to reflect that MaraDNS now has recursive nameserving capabilities,
2907
albeit without some security features. Next: Work on cache flushing and
2916
Now, if one of the IP nameservers is bad, we will try the next nameserver
2917
in the chain. Next: Add the code to handle out-of-bailiwick nameservers
2925
Two big improvments: 1) The recursive resolver can now handle multiple
2926
A records (MaraDNS deliberately ignores NS and AR records. Note that it is
2927
a good idea to give out the corresponding A record for a CNAME record
2928
[To do]) 2) There is now code which makes a local copy of the chain
2929
of NS records in an authoritative-only section, which will allow me to
2930
make thread-safe code which will query other nameservers, should a given
2931
nameserver not function (e.g. Someone changed a computer's IP. In the
2932
three weeks it can take Network Solutions to update the records on the
2933
root nameservers, we still want to be able to reach the domain in question
2934
by using the other listed nameserver for the domain)
2940
Not only did I get to spend some time with my family this memorial day
2941
weekend, I also was able to get Linux up and going on my new laptop. Took
2942
two installs, but everything except SSL in Konqueror now works.
2943
I also, now that the new laptop is (mostly) up and going, have gotten
2944
a chance to work on MaraDNS. This new laptop, since it has a working battery,
2945
should speed up MaraDNS development--I can now work on MaraDNS on the train.
2946
The latest version is able to go to a remote server and give us an
2947
incomplete answer (only one RR) based on what the remote server tells us.
2952
Some minor bugfixes and tweaks: The nameserver will now query name servers
2953
until it is able to find an answer, then it will go in a loop.
2959
A fairly significant milestone: This version of MaraDNS is able to read data
2960
from an authoritative nameserver, and, based on that data, determine the IP
2961
of a nameserver closer to the answer we are looking for. (2001.05.21)
2966
Two minor bug fixes: The erre-con-erre-cigarro.maradns.org query will work,
2967
even if authoritative nameservers for the root are set up; MaraDNS now
2968
will run on systems which do not support the setrlimit system call, such
2969
as the GNU Hurd. (2001.05.21)
2974
Three bug fixes: MaraDNS now works with RRs for the root namserver (MaraDNS,
2975
in fact, can now be a nameserver for the root), the askmara tool now has
2976
a timeout (and can ask questions about the root nameserver), and the output
2977
that MaraDNS generates is unbuffered. (2001.05.19)
2982
I have added a lot more debugging stuff as I hunt down why it is RRs are
2983
not being added to the dns RR cache. I think I am pretty close to pinning
2984
it down, and hope tomorrow's release can add RRs to the big cache.
2990
I added a simple interactive debugger which lets me see the state of
2991
the DNS cache hash table. Looks like the data from the server is not
2992
being added to the cache. Next: FInd out why not. (2001.05.17)
2997
An unexpected event forcing me to go home late yesterday caused there
2998
not to be a release of MaraDNS yesterday.<p>
2999
Fixed bug where it was not correctly appending the class to the server
3000
that it was querying. Temporarily disabled the actual threading while
3001
development work on the recurseor continues. Next: Make sure that
3002
the cache is properly seeded from data from authoritative nameservers.
3008
Fixed bug where it was choosing the wrong IP to query. Automated
3009
the process of setting up a testbed (which is completely self-contained),
3010
so I can debug this on a variety of machines. Next: Fix the timeout bug.
3016
MaraDNS compiles again. Now, I need to go through all the code and
3017
iron out all of the bugs. Testbed of MaraDNS configuration files
3023
More work on the recursive stuff done. (2001.05.13)
3027
More work on the recursive stuff done. (2001.05.12)
3032
Bugfix release: non-0 opcodes now correctly return a "NOT IMPLEMENTED" error
3033
message. Also, some minor cleanup in the documentation: star records
3034
(*.example.com, etc.) are now documented. (2001.05.10)
3039
add_closer_jsddip, add_closer_js, and add_closer_jsip now have a third
3040
argument: Whether to overwrite or append to already existing data in the
3041
cache. Since the autoconf stuff doesn't work with the development
3042
branch, I got rid of it for now. Once this code gets stable, one of the
3043
Debian packagers can feel free to add the autoconf stuff again.
3049
Added in_bailiwick and cmp_dnames functions to recursive.c
3055
Feature enhancment: Added round-robin rotation of records and limits to the
3056
number of records that can be displayed for a given answer to MaraDNS.
3057
This will be the last feature enhancment for the 0.5.xx tree. All changes
3058
in the 0.5.xx tree will now be bug fixes. Now, back to work
3059
on the 0.6.xx series, starting off with integrating the 0.5.xx
3060
changes. (2001.05.07)
3065
Feature enhancment: We now make sure that the same AR record does not
3066
show up twice in the AR section. Thanks to Phil Homewood for pointing
3067
out this problem. (2001.05.06)
3072
Bugfix release: We now follow chains of records in the AR section.
3073
The authoritative bit for an "RR_ALL" request is now determined by
3074
the authoritative bit in the first RR found. Thanks to Phil Homewood
3075
for finding these bugs. (2001.05.06)
3080
The askmara tool now uses select() to time out after three seconds.
3081
Added a lot of code to the recursive lookup. I now send a query to
3082
the remote server, and receive the reponse. Next: Code to process the
3083
response and add the data to the local cache. (2001.05.06)
3088
The recursive code now sucessfully seeds a root nameserver in to the cache.
3089
Next: Code to query and get the response form that nameserver.
3095
Heavy debugging of the recursive stuff going on. It is not fixed, but I
3096
wanted to post something, however miniscule, before going to bed.
3102
Addded new feature: default_rrany_set, which is used to change the
3103
RRs returned when a RR_ANY query is sent to the MaraDNS server. Thanks
3104
to Phil Homewood who pointed out that this is sometimes needed.
3110
recursive text documented updated to reflect changes I made on the train.
3111
Some other cleanup. (2001.05.02)
3116
Wrote up document detailing the recursive algorithm that MaraDNS'
3117
recursive resolver will use. Integrated the 0.5.17 bugfixes in to the
3118
development tree. (2001.05.01)
3123
Fixed bug in MaraDNS' handling of zone transfers where the response
3124
is a single big RR instead of multiple small RRs. Some other small
3125
bugfixes. (2001.04.30)
3130
I have the general structure of how I want to do the recursive name
3131
serving in place. The devil, however, is in the details.
3137
Fixes in MaraDNS-0.5.16 incorporated in to development branch. Slowly
3138
making progress on the recursive code. (2001.04.26)
3143
Fixed bug in the zoneserver's handling of replies longer than 255 octets in
3144
length. Fixed problem in manpage and updated man page. Special thanks to
3145
Phil Homewood for finding problems the zone server was having.
3151
Work on making MaraDNS recursive begins. (2001.04.26)
3155
Fatal error messages caused by failed system calls now show the user the
3156
error message that the system gave, in addition to MaraDNS' error
3157
message. (2001.04.26)
3161
Added "no_fingerprint" feature which minimizes the
3162
MaraDNS-specific features, making it more difficult
3163
to determine which DNS server one is running. (2001.04.23)
3167
<blockquote><p>Manpage for maradns added. (2001.04.22)</blockquote><p>
3171
Added better support for CNAME records: If the CNAME record
3172
points to an A record, and we have the A record "on file",
3173
MaraDNS will add the CNAME record to the ar section of the
3174
reply. Also added support for getting the version number
3175
for maradns via a 'erre-con-erre-cigarro.maradns.org.'
3176
TXT query. Set things up so we can both a autoconf-based
3177
and a non-autoconf-based build process, and we can switch
3179
Next: Branch off to development again, because I need to
3180
get the zone server multithreaded. (2001.04.22)
3183
maradns-0.5.11: <blockquote><p>Tollef Fog Heen generously ran autoconf for MaraDNS. The
3184
build process now consists of './configure;make'".
3188
<blockquote><p>Code cleanup: I added -Wall as an option in the libs, dns,
3189
and server directories. Cleanup of all the warnings that
3190
-Wall generated. Added /etc/mararc and
3191
/var/maradns/db.example.com to RPM file. (2001.04.20)
3196
The server crashes were causes by pointers that were
3197
not correctly initialized to zero. The pointers causing
3198
the crash have been initialized, and hopefully this one
3199
will be crashproof. Next: Look for other incorrectly
3200
initialized variables. (2001.04.20)
3205
Begin a "stable" brach for the only-authoritative
3206
non-threaded nameserver. Changed compiler option from
3207
-g to -O2. Made RPM of MaraDNS-0.5.08. (2001.04.19)
3212
Plugged some memory leaks in the zoneserver which, while
3213
not currently a problem, could have been a problem if
3214
I had started coding threads before plugging the memory
3215
leaks. Some of the leaks were is the js_string library,
3216
so that code base is a lot cleaner now. Made the
3217
functions in ParseCsv1.c thread-safe. My friend Fatma
3218
generously supplied a German translation of the error
3219
strings in MaraDNS_en.h--we now have a MaraDNS_de.h which,
3220
while not perfect, will be appreciated by the Germans.
3226
The zone server for MaraDNS can now be run from inetd.
3227
Due to the security implications of this (MaraDNS' IP-based
3228
ACLs stop working when run from inetd), this will be an
3229
undocumented feature. (2001.04.18)
3234
Phil Homewood generously supplied a patch that makes this
3235
compile on FreeBSD. In addition, he fixed a bug in the
3236
Makefile in dns/Makefile which made it so bobbit.c
3237
compiles instead of using the Linux-specific object file
3238
(Which I didn't catch, since make clean didn't remove it
3239
and make didn't recreate it). I also fixed a bug in
3240
getzone.c which was introduced when I put the string
3241
literals in a language-specific file. (2001.04.17)
3246
<BLOCKQUOTE><p> Added more support for dotted decimal IPs in NS, CNAME, and
3247
MX records. Added handles for code which will warn the user
3248
of the presence of these dotted-decimal IP records. Fixed
3249
bug where js_copy was not returning an appropriate value on
3250
success (2001.04.17)
3254
If a "give me all records for a given hostname" query appears,
3255
MaraDNS will now look for a CNAME with the same hostname,
3256
returning only that if found (and she will only look for a
3257
CNAME if an A and MX were not found), and if A, MX, and
3258
CNAME records are not found, MaraDNS will see if the person
3259
entered a dotted decimal ip and respond appropriately.
3264
Most of the text messages that MaraDNS' various utilities
3265
generate have been moved to separate files, which will make
3266
localization easier. (2001.04.16)
3269
maradns-0.5.01: Bugfix: Since mail exchangers routinely ask for "all records"
3270
queries (to get both A and MX records), I have hacked MaraDNS
3271
to deliver A and MX records if a request for all records
3272
is received. I still need to code the case of a request for
3273
"all records" pointing to a CNAME, though. Also, I have
3274
added a benchmark tool which times a DNS server by sending
3275
50,000 queries to the server in question as quickly as
3276
possible. (2001.04.13)
3279
maradns-0.5.00: The UDP server no longer fork()s off processes to process
3280
queries. I performed a mild stress test, where MaraDNS was
3281
processing 81 queries a second for over an hour--MaraDNS
3282
performed beautifully--memory usage did not increase, and
3283
queries were fast during this test. I am making this
3284
release the stable branch. Next: Get string literals out
3285
of the code. (2001.04.12)
3288
maradns-0.4.04: More bug fixes: Plugged potential memory leaks in
3289
js_buf_getline. Fixed bug where the last line of a
3290
csv1 file was not read. Fixed makefile so that it cleans
3291
files in new location of the zonefile stuff--it's now in
3292
a directory called "tuzona". Next: Go from a multi-process
3293
model to a single process model. (2001.04.12)
3296
maradns-0.4.03: Bugfix: The zone server is now hacked up to give a
3297
plausable-looking answer to a SOA request on the TCP port.
3298
As a result, BIND 4 and BIND 8 will now transfer zones from
3299
the maradns zoneserver. (2001.04.12)
3302
maradns-0.4.02: Bigfix: Hacked zoneserver so that it can work as a zone server
3303
in cases where the zone transfer client asks for the SOA
3304
record before downloading the zone. Also: Added the ability
3305
to verbosely log invalid queries sent to the DNS server,
3306
and to have a log level of 0 make MaraDNS give out no logs
3307
whatsoever. Next: Fix bug where the last line of a csv1
3308
file is not parsed. (2001.04.12)
3311
maradns-0.4.01: Bugfix: Fixed bug where SOA records were not properly loaded
3312
when we have multiple zones. (2001.04.11)
3315
maradns-0.4.00: Stable branch: This is the stable branch of MaraDNS, which
3316
will only be updated with security fixes. Made zoneserver
3317
check the query type, and drop connection on anything
3318
besides AXFR and IXFR (Hack: The zone server treats an IXFR
3319
exactly like an AXFR). Also cleaned up the error
3320
handling in the zone and udp server code in preparation to
3321
make maradns multithreaded. (2001.04.11)
3324
maradns-0.3.06: Security fix: The zone transfer client now checks for and
3325
disables any out-of-baliwick records it finds when performing
3326
a zone transfer. Feature enhancment: Maradns now has a
3327
working zone transfer server. (2001.04.10)
3330
maradns-0.3.05: An entire parsing engine which processes ip-based ACLs has
3331
been created, complete with recursive aliases. Zoneserver
3332
now only needs the code that reads the client's request
3333
and send them the zone they ask for (as long as they have
3334
access). (2001.04.08)
3337
maradns-0.3.04: TXT, A, and MX records are now "pretty printed" when downloaded
3338
from a foreign zone. All seven RR types supported by MaraDNS
3339
are now pretty printed. Fixed bug with the handling of
3340
"umbrella" NS records. Fixed bug with the handling of high
3341
serial numbers and extra-long TTL values. Next: the AXFR
3342
server. (2001.04.04)
3345
maradns-0.3.03: The getzone program in tcp now generates working, albeit
3346
ugly (too many RR types are still marked 'U'), MaraDNS zone
3347
files based on the data from a zone transfer. Also found and
3348
fixed other bugs the popped up when stressing the various
3349
queries routines with a full Zone transfer. Unreleated
3350
to MaraDNS per se, MaraDNS now has a `real' web page. (Thanks,
3354
maradns-0.3.02: Added support for truncating headers. Began work on getzone
3355
zone transfer client. (2001.04.03)
3358
maradns-0.3.01: Fixed bug where the MX preference changed on DNS compressing
3359
and DNS decompressing. (2001.04.01)
3362
maradns-0.3.00: The DNS compression routines now work. Also set up the server
3363
to return "Not implemented" to the unimplemented requests for
3364
zone transfers and the unimplemented requests for all RRs
3365
attached to a hostname. (2001.04.01)
3368
maradns-0.2.10: My theory is that they made DNS comprssion so difficult to
3369
implement out of fear that anyone would be crazy enough to
3370
write their own DNS server. Continued work on the compression
3371
routines. (2001.03.31)
3374
maradns-0.2.09: Moved check for star records attached to CNAME or to NS RRs
3375
in the CSV1 parser, where it belongs. Added support for
3376
"notfound" reply. Next: RFC1035 compression (ugh).
3380
maradns-0.2.08: Added support for ddip addresses (An IP query for '127.1.1.1'
3381
gives the IP '127.1.1.1'). Added almost full support for
3382
star records. Only these somewhat silly star record cases are
3383
not supported: Star records pointing to CNAMEs and to NSs
3384
records. Added code that warns the user if they try to add
3385
an unsupported star record type. Next: The code to give
3386
out a "notfound" reply. (2001.03.28)
3389
maradns-0.2.07: Fixed bug in MaraDNS' handling of case folding. Added some
3390
support for star records. (2001.03.27)
3393
maradns-0.2.06: A and CNAME queries are now case-insensitive. Changed
3394
the bs_process routine to have domain-labels converted to
3395
their lower-case format before octal processing is done
3396
(so we can still have 'A' in a domain label with '\101')
3397
Returns NS delegation if we asked for a host in a
3398
sub-delegated domain. (2001.03.27)
3401
maradns-0.2.05: Cleaned up the makefile so that we don't have compiled
3402
binaries in any of the directories after a "make clean" is
3403
performed. Added support for CNAME and limited NS record
3404
support. (2001.03.26)
3407
maradns-0.2.04: New security feature: Maxprocs, which is a mandatory way
3408
of limiting the resources MaraDNS uses. Added fix.perms
3412
maradns-0.2.03: I have made the directory structure a little cleaner. The
3413
only problem I have now is that multiple Makefiles have to
3414
be changed if I add a new object file. I also have improved
3415
the way MaraDNS cleans up after her children. (2001.03.26)
3418
maradns-0.2.02: Now, MaraDNS correctly returns NS records and AN records for
3419
every query where it has NS and AN records in its local
3420
database. While I wait for the clows at NSI to figure
3421
out why we can't make maradns.com and maradns.org use
3422
ns.maradns.com and ns.maradns.org as name servers for
3423
both domains, I can test things with www.z.maradns.org
3427
maradns-0.2.01: Bugfix: SOA lines can now have percent escape sequences in
3431
maradns-0.2.00: Incremented minor number in light of the fact MaraDNS now
3432
actually resolves, albeit in a very limited fashion. Added
3433
some QuickStart notes, and added the ability for uint16s and
3434
uint32s to be added directly to the end of a JS_STRING
3435
object. (2001.03.25)
3438
maradns-0.1.40: MaraDNS now resolves hosts. It doesn't handle a lot
3439
of cases where the resolution is not an exact match
3440
(NS records for stuff below us, star records, etc.) nor
3441
does it give us NS or AN records, nor the IP for a Cname
3442
record (if applicable), but at least MaraDNS is finally
3443
resolving. To do: js_string function for adding uint16s
3444
and uin32s in a single fell swoop, and real name resolution.
3448
maradns-0.1.39: At this point, MaraDNS binds to a port and listens to
3449
incoming data. Next: Actually process the data that
3450
she gets (2001.03.24)
3453
maradns-0.1.38: Added the code that adds pointers to the corresponding A
3454
records for MX, NS, and CNAME records. (2001.03.23)
3457
maradns-0.1.37: Placed the code that converts star records in a more sensible
3458
location. Added a new element in the rr answer which is
3459
a pointer to the query string (we need this so we can tell
3460
the resolver both the question and the answer with the NS
3461
records, and which IP addresses go with which answers in
3462
the AR records) (2001.03.21)
3465
maradns-0.1.36: Now we convert star records (record which start off with
3466
a * label) to an EDNS-style format MaraDNS uses for its
3467
internal hash of RRs (2001.03.19)
3470
maradns-0.1.35: Verified that records are placed in the bug hash correctly.
3471
Next: We can now start making this a working DNS server.
3472
Bind to the port, answering UDP queries using a simple
3473
forking model. (2001.03.18)
3476
maradns-0.1.34: Added some more security features: It now chroot's and
3477
changes the uid if it is run as root. Also made a function
3478
that adds a RR to the end of a chain of RRs before the first
3482
maradns-0.1.33: Plugged up some memory leaks in MaraHash.c. Added a lot
3483
of code which starts populating the big hash with data.
3487
maradns-0.1.32: More work on the the populate+bighash routine. Now, when
3488
a syntax error is encountered, MaraDNS makes a best-faith
3489
effort to continue processing zone files. (2001.03.16)
3492
maradns-0.1.31: Additional work on that routine. Now, it correctly make
3493
sure that we add the NS records for the zone before the
3494
NS records, and also fixed some other bugs in this
3495
routine. Next: Make add_rr_to_bighash really check the
3496
authority of a record and and data to the big hash
3500
maradns-0.1.30: Worked on the routine to fill up the "big hash" with the
3501
appropriate data. Now, I need to replace the "dummy"
3502
add_rr_to_bighash with a routine that adds the appropriate
3503
rr to the big hash (if appropriate). (2001.03.14)
3506
maradns-0.1.29: Installed a new verison of Linux on my Laptop (Esware 2.0r2,
3507
a Spanish RedHat clone with the 2.4 kernel). Begun work
3508
on MaraDNS.c. Next: continue work on MaraDNS.c
3512
maradns-0.1.28: Made all of the string literals in ParseMaraRc.c labels which
3513
point to entries in ParseMaraRc_en.h. Wrote and documented
3514
Perl script which automates this kind of work.
3515
I did the same with ParseCsv1.c (ParseCsv1_en.h).
3519
maradns-0.1.27: Pasted in read/write/setup kvar code from the code that
3520
parsed the kiwirc file in the kiwi2 anti-spam package.
3521
Modified mararc code so that it can parse both simple
3522
strings and dictionaries (Assosciative arrays)
3523
Next: The code that populates the DNS lookup hash based on
3524
the data read from the mararc file. (2001.03.11)
3527
maradns-0.1.26: Made the code that parses mararc lines a little more
3528
senisible. It's still hackish, but is somewhat pedantic
3529
about what kind of syntax it accepts, returning errors
3530
when wrong syntax is given to it. (2001.03.10)
3533
maradns-0.1.25: Added support for % in csv1 file. Revised csv1.format
3534
document. Next: figure out a way to store "star records"
3535
in the hash table in such a way as to not step on the
3536
EDNS standards. And implement that method. (2001.03.09)
3539
maradns-0.1.24: Added support for MX and "Unknown" (user-specified query
3540
type) data types. Added support for '\xxx'-style escape
3541
sequences, making it possible to have arbitrary data in
3542
the csv1 zone file. (2001.03.08)
3545
maradns-0.1.23: Changed js_atoi to return unsigned integers. Added support
3546
for TXT and SOA records. Tested to make sure error
3547
correction looks good. Next: PTR shorthand, more efficient
3548
Makefile. (2001.03.07)
3551
maradns-0.1.22: Split off some of the routines in other files to new .c
3552
files: ParseCsv1.c and Utf8.c. Created js_addbyte routine.
3553
Added csv1test and example_csv1 files to test the csv1
3554
parsing routines. Created js_changebyte routine.
3555
ParseCsv1 routine now parses all data types except for the
3556
SOA datatype. Next: SOA datatype, shortcut for PTR datatype.
3560
maradns-0.1.21: Wrote utf8test to test the ability to convert ISO 8859-1
3561
strings to UTF-8 strings. Found minor bug in code, fixed,
3562
and now ISO 8859-1 strings are correctly copied. I had to
3563
set up X and recompile xterm to support all this. Cleaned
3564
up the comments in the js_notmatch_offset code (they were
3565
never cleaned up from the Kiwi days). Clean up of some
3566
code in Queries.c. Wrote about half of the line parsing
3567
code for parsing csv1 lines. csv1 format doc clean
3571
maradns-0.1.20: I have decided that MaraDNS will use UTF-8 to support
3572
international characters in domain names. I have added
3573
the draft RFC for UTF8 domain names and a description of
3574
UTF8 in the docs. In terms of code, we now have code
3575
that converts ISO 8859-1 to UTF-8. In addition, I have
3576
written up a couple of documents describing the csv1
3577
non-standard Zone file format, and how MaraDNS will
3578
resolve a domain name. (2001.03.06)
3581
maradns-0.1.19: Added routines to handle getting all of the keys of a hash
3582
in series (in the semi-random order they are in the hash
3583
table). Corrected errors in parseline code, it now
3584
works with foo["bar"] = "baz" lines and no longer considers
3585
foo["bar"] = baz legal. foo["bar"] = 1 is still legal.
3589
maradns-0.1.18: More ParseMaraRC hacking (this this is a real hack.
3590
A really bad hack. At least the elegant js_string lib
3591
stops it from being a security problem). It now has
3592
routines that can fill up an assosciative array based
3593
on user-specified keys and values. Next: Routine that
3594
reads the rc file, and, based on the data there, begins
3595
reading zone files. The zone files will then be read in
3596
turn, and then populate a hash. (2001.03.03)
3599
maradns-0.1.17: More ParseMaraRC.c hacking. Now, it can parse
3600
'foo = {}', 'foo["bar"] = "baz"', and 'foo = "bar"'.
3601
Next: Write the routine to read an entire maradnsrc (maybe
3602
we should just call this mararc) and fill up the hash
3603
table with the names of all of the zones. (2001.03.03)
3606
maradns-0.1.16: Modified js_anq_chars handle just numerics. Made it
3607
correctly handle just alphabetics. Renamed 'ctest' to
3608
'askmara'. Rewrote askmara.c to have all labels in
3609
another file (askmara_labels_en.h), to make translation
3610
easier. (2001.03.02)
3613
maradns-0.1.15: Continuing the retooling of code from the KiwiSpam package
3614
to use assosciative arrays in ParseMaraRC.c. Yes, this whole
3615
parser is a hack instead of a proper parser. Right now, the
3616
single line parser groks foo["bar"] = baz. Next: get it
3617
to grok foo = {} (2001.03.01)
3620
maradns-0.1.14: Beginning the retooling of code from the KiwiSpam package
3621
to use assosciative arrays in ParseMaraRC.c. This will
3622
be a fairly extensive code rewrite, considering the code I am
3623
modding is somewhat hacky itself. (2001.03.01)
3626
maradns-0.1.13: Fixed bug where ctest resolver program did not print out SOA
3627
replies (2001.02.28)
3630
maradns-0.1.12: Added support for TXT in ctest resolver code. Made ctest code
3631
more hardy--it validates all input and returns an error if
3632
there is a problem at any point.
3636
maradns-0.1.11: Support for MX and SOA, and a number of other formats that
3637
may have compressed data in them now added to the
3638
decompression routine. ctest now can parse any RR that
3639
MaraDNS fully supports except TXT (A, NS, SOA, MX, CNAME,
3640
HINFO), and is now a rather verbose dig replacment. Got
3641
rid of the cruft variables in the decompression routine.
3642
Next: Have a routine to decode TXT data.
3646
maradns-0.1.10: You know how to handle buggy code? Rewirte the code so
3647
that it is simpler and less buggy. A lot of the overhead
3648
I had was not needed to keep things secure. The docs
3649
on how MaraDNS handles decompression have been revised
3650
also. RFC1035 decompression now works, still need to
3651
add MX and SOA, and possibly support for other data types
3652
that get compressed (SRV, the obscure RFC1035 datatypes,
3653
etc.) Also, get rid of some of the cruft variables in the
3654
decompression code. (2001.02.26)
3657
maradns-0.1.09: Had a good weekend. Got to see a friend of mine and his wife
3658
get baptised. Continued work on decompress_data. It is
3659
still buggy, but I am working out the bugs. (2001.02.26)
3662
maradns-0.1.08: Added read_rr_h. Also began work on decompress_data
3663
(Ugh. rfc1035 compression is horrible.) (2001.02.22)
3666
maradns-0.1.07: Fixed potential overflow in rtest (probably never exploitable)
3667
Discovered that DNS servers do not support QDCOUNT > 1 in DNS
3668
queries. Made notes in "doc" about this. (2001.02.21)
3671
maradns-0.1.06: ctest now sends correctly formed DNS queries to a DNS server
3675
maradns-0.1.05: Added hname_2rfc1035, which does the reverse of
3676
hname_translate. Beginning work on ctest, which is a
3677
test DNS client, to see what kind of replies we get
3678
from DNS servers. (2001.02.21)
3681
maradns-0.1.04: Debugged routines in Query.c that convert a RFC1035 question
3682
in to a query. Added routine that converts a RFC1035 domain
3683
name (with class) in to a dotted-decimal hostname.
3687
maradns-0.1.03: Began work on debugging routines in Query. Time to go to
3691
maradns-0.1.02: Wrote first (test-only) server that listens on port 53.
3692
Using this server to determine what kind of data resolvers
3693
ask for. (2001.02.20)
3696
maradns-0.1.01: Added some more RFC1035 data to MaraDns.h (2001.02.20)
3699
maradns-0.1.00: Begin work on handlers to handle various data types that
3700
RFC1035 has. (2001.02.20)
3703
maradns-0.0.08: Added js_anq_chars, js_alpha_chars, and js_an_chars to
3704
JsStrCP object. (2001.02.19)
3707
maradns-0.0.07: Good morning! Added mtuple_new, mtuple_put, and mtuple_get
3708
functions. Fixed bug where mhash_inc would allow a return
3709
value of 0. Fixed Makefile so make clean cleans up mtest
3710
binary. Added bounds testing to mhash_resize hashtable size.
3711
Time to eat breakfast. (2001.02.19)
3714
maradns-0.0.06: Added mara_tuple support and verified that hash collisions
3715
are properly handled. Time to go to evening church recital.
3719
maradns-0.0.05: Corrected mhash_resize to blank out the hash we resize to.
3720
Create mtest.c program to test the creation of hash
3721
elements. Time to get ready for church. (2001.02.18)
3724
maradns-0.0.04: We now properly handle the case of trying to add an
3725
element already there (return an error), and have
3726
more error checking to make sure we don't crash
3727
because of corrupt hash data. Added an interactive
3728
test which lets the user interactively add, delete, and
3729
view hash elements. Time to go to bed (2001.02.18)
3732
maradns-0.0.03: Some more work has been done. mhash_undef_js and
3733
mhash_resize functions written and compile. (2001.02.18)
3736
maradns-0.0.02: MaraHash functions--assosciative array methods utilizing
3737
a hash--have been set up. This has the functions
3738
mhash_create, mhash_js, mhash_inc, mhash_put,
3739
mhash_get, mhash_undef, mhash_put_js, and mhash_get_js.
3740
Debugging done--these functions can perform basic
3741
get/put operatins with elements in an assosciative
3745
maradns-0.0.01: First version of MaraDNS package. Added iso-8859-1 support
3746
to JsStr routines. Added js_qappend and js_qprepend
3747
functions there. In addition to js_qfgrep. All tested
3748
functions work and are without error. (2001.02.17)