10.02.2007 Pack-feature '/' entfernt, kompatibel nun auch zu Perl < 5.6 11.02.2007 Mittels REMOVE_DELAY kann nun die Zeit angegeben werden, nach der eine Domain ohne zwischenzeitliche Anfrage erneut als greylisted markiert wird oder aus der DB entfernt wird 14.02.2007 Datensaetze periodisch in einer Datei speichern 15.02.2007 Datensaetze vor dem Speichern auf abgelaufene Eintraege ueberpruefen. Nach etlichen Versuchen, dies mittels fork() als Kind ablaufen zu lassen und somit die Empfangen-Senden- Schleife fluessig zu halten, merke ich, dass fork() zu langsam ist. Das Kopieren aller Daten (so denke ich) dauert so lange, wie das Ausblenden und Speichern als solches. Bei einem fork() hat man auch das Problem, dass man sich die bereinigte DB ja irgendwie wieder in das Hauptprogramm holen muss. Hier gibt es wieder zwei Probleme: 1) Inkonsistenzen zwischen der bereinigten und der fortgefuehrten Datenbank 2) Das Lesen verschlingt wieder Zeit cleanup() bei ca. 300.000 Timestamps dauert nun ca. 2361 ms 21.02.2007 Da cleanup() im Grunde wirklich zu lange braucht und mir im Moment keine Loesung einfaellt, um die Eintraege ohne Latenzen auszusortieren und zu speichern, soll cleanup() nun nur bei einem SIGHUP ausgefuehrt werden. Das kann man dann z.B. nachts machen, wenn mal ein paar Sekunden Luft fuer den DNS-Server ist Version 002 8.3.2007 Ich habe von Sirko Zidlewitz einen RegEx bekommen, der auf Dialup-IP-Netze matcht. Es kann nun definiert werden, dass nur diese Netze greylisted werden Version 003 Anscheinend ist es Pflicht, das Query bei der Antwort nochmal mitzusenden (ein dig auf *BSD gab "wrong query name" zurueck) Weitere Auslagerungen von pack()-Aufrufen Version 004 10.3.2007 - 13.3.2007 Aus lauter Übermut habe ich meine knapp 5 Jahre alten C Kenntnisse rausgekramt und das Teil in C implementiert. Das Ergebnis kann sich IMHO sehen lassen, das aktuelle Binary ist knapp doppelt so schnell wie die Perl Implementierung und braucht extrem wenig Speicher. 16.03.2007 Neue Version, die darauf basiert, das DNS-Query direkt zu modifizieren statt eins komplett neu aufzubauen. Die DB kommt dem Programm nicht hinterher - leider, schneller als jetzt geht es IMHO nicht. 17.03.2007 ... doch geht es. Mit dem selbst implementierten Hash ist es schneller :-) Nur fehlt so das Speichern der Daten. Ich habe mit etlichen #define Blöcken das schnelle Umschalten zwischen den beiden Speicherarten möglich gemacht