Update of /cvsroot/spambayes/spambayes/spambayes
In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv15971
Modified Files:
Tag: CORESVR
dnscache.py
Log Message:
Handful of changes I've been running with for quite awhile. The only truly
functional change was to make MinTTL a global and set it to one day. It was
set to 0. The other stuff:
* print messages to stderr
* use "not container" instead of "len(container) > 0"
* be a bit less aggressive in our pruning
Index: dnscache.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/spambayes/dnscache.py,v
retrieving revision 1.3
retrieving revision 1.3.2.1
diff -C2 -d -r1.3 -r1.3.2.1
*** dnscache.py 13 Aug 2006 02:05:43 -0000 1.3
--- dnscache.py 24 May 2007 03:14:41 -0000 1.3.2.1
***************
*** 23,29 ****
kCheckForPruneEvery=20
! kMaxTTL=60 * 60 * 24 * 7 # One week
! kPruneThreshold=1500 # May go over slightly; numbers chosen at random
! kPruneDownTo=1000
--- 23,32 ----
kCheckForPruneEvery=20
! kMaxTTL=60 * 60 * 24 * 7 # One week
! # Some servers always return a TTL of zero. We'll hold onto data a bit
! # longer.
! kMinTTL=24 * 60 * 60 * 1 # one day
! kPruneThreshold=5000 # May go over slightly; numbers chosen at random
! kPruneDownTo=2500
***************
*** 89,97 ****
self.dnsTimeout=10
- # Some servers always return a TTL of zero.
- # In those cases, turning this up a bit is
- # probably reasonable.
- self.minTTL=0
-
# end of user-settable attributes
--- 92,95 ----
***************
*** 160,164 ****
c=self.caches[answer.qType]
c[answer.question].remove(answer)
! if len(c[answer.question])==0:
del c[answer.question]
--- 158,162 ----
c=self.caches[answer.qType]
c[answer.question].remove(answer)
! if not c[answer.question]:
del c[answer.question]
***************
*** 180,184 ****
c=self.caches[answer.qType]
c[answer.question].remove(answer)
! if len(c[answer.question])==0:
del c[answer.question]
--- 178,182 ----
c=self.caches[answer.qType]
c[answer.question].remove(answer)
! if not c[answer.question]:
del c[answer.question]
***************
*** 218,233 ****
pass
else:
! assert len(answers)>0
! ind=0
! # No guarantee that expire has already been done
! while ind<len(answers):
! thisAnswer=answers[ind]
! if thisAnswer.expiresAt<now:
! del answers[ind]
! else:
! thisAnswer.lastUsed=now
! ind+=1
! if len(answers)==0:
del cacheToLookIn[question]
else:
--- 216,233 ----
pass
else:
! if answers:
! ind=0
! # No guarantee that expire has already been done
! while ind<len(answers):
! thisAnswer=answers[ind]
! if thisAnswer.expiresAt<now:
! del answers[ind]
! else:
! thisAnswer.lastUsed=now
! ind+=1
! else:
! print >> sys.stderr, "lookup failure:", question
! if not answers:
del cacheToLookIn[question]
else:
***************
*** 250,275 ****
except DNS.Base.DNSError,detail:
if detail.args[0]<>"Timeout":
! print "Error, fixme",detail
! print "Question was",queryQuestion
! print "Origianal question was",question
! print "Type was",qType
objs=[
lookupResult(qType,None,question,self.cacheErrorSecs+now,now) ]
cacheToLookIn[question]=objs # Add to format for return?
return self.formatForReturn(objs)
except socket.gaierror,detail:
! print "DNS connection failure:", self.queryObj.ns, detail
! print "Defaults:", DNS.defaults
objs=[]
for answer in reply.answers:
if answer["typename"]==qType:
! # PyDNS returns TTLs as longs but RFC 1035 says that the
! # TTL value is a signed 32-bit value and must be positive,
! # so it should be safe to coerce it to a Python integer.
! # And anyone who sets a time to live of more than 2^31-1
! # seconds (68 years and change) is drunk.
! # Arguably, I ought to impose a maximum rather than continuing
! # with longs (int(long) returns long in recent versions of
Python).
! ttl=max(min(int(answer["ttl"]),kMaxTTL),self.minTTL)
# RFC 2308 says that you should cache an NXDOMAIN for the
# minimum of the minimum field of the SOA record and the TTL
--- 250,275 ----
except DNS.Base.DNSError,detail:
if detail.args[0]<>"Timeout":
! print >> sys.stderr, "Error, fixme", detail
! print >> sys.stderr, "Question was", queryQuestion
! print >> sys.stderr, "Original question was", question
! print >> sys.stderr, "Type was", qType
objs=[
lookupResult(qType,None,question,self.cacheErrorSecs+now,now) ]
cacheToLookIn[question]=objs # Add to format for return?
return self.formatForReturn(objs)
except socket.gaierror,detail:
! print >> sys.stderr, "DNS connection failure:", self.queryObj.ns,
detail
! print >> sys.stderr, "Defaults:", DNS.defaults
objs=[]
for answer in reply.answers:
if answer["typename"]==qType:
! # PyDNS returns TTLs as longs but RFC 1035 says that the TTL
! # value is a signed 32-bit value and must be positive, so it
! # should be safe to coerce it to a Python integer. And
! # anyone who sets a time to live of more than 2^31-1 seconds
! # (68 years and change) is drunk. Arguably, I ought to
! # impose a maximum rather than continuing with longs
! # (int(long) returns long in recent versions of Python).
! ttl=max(min(int(answer["ttl"]),kMaxTTL),kMinTTL)
# RFC 2308 says that you should cache an NXDOMAIN for the
# minimum of the minimum field of the SOA record and the TTL
***************
*** 279,288 ****
objs.append(item)
! if len(objs)>0:
cacheToLookIn[question]=objs
return self.formatForReturn(objs)
# Probably SERVFAIL or the like
! if len(reply.authority)==0:
objs=[
lookupResult(qType,None,question,self.cacheErrorSecs+now,now) ]
cacheToLookIn[question]=objs
--- 279,288 ----
objs.append(item)
! if objs:
cacheToLookIn[question]=objs
return self.formatForReturn(objs)
# Probably SERVFAIL or the like
! if not reply.authority:
objs=[
lookupResult(qType,None,question,self.cacheErrorSecs+now,now) ]
cacheToLookIn[question]=objs
***************
*** 319,329 ****
"www.seeputofor.com", "www.completegarbage.tv",
"www.tradelinkllc.com"]:
! print "checking", host
now=time.time()
ips=c.lookup(host)
! print ips,time.time()-now
now=time.time()
ips=c.lookup(host)
! print ips,time.time()-now
if ips:
--- 319,329 ----
"www.seeputofor.com", "www.completegarbage.tv",
"www.tradelinkllc.com"]:
! print >> sys.stderr, "checking", host
now=time.time()
ips=c.lookup(host)
! print >> sys.stderr, ips,time.time()-now
now=time.time()
ips=c.lookup(host)
! print >> sys.stderr, ips,time.time()-now
if ips:
***************
*** 331,340 ****
now=time.time()
name=c.lookup(ip,qType="PTR")
! print name,time.time()-now
now=time.time()
name=c.lookup(ip,qType="PTR")
! print name,time.time()-now
else:
! print "unknown"
c.close()
--- 331,340 ----
now=time.time()
name=c.lookup(ip,qType="PTR")
! print >> sys.stderr, name,time.time()-now
now=time.time()
name=c.lookup(ip,qType="PTR")
! print >> sys.stderr, name,time.time()-now
else:
! print >> sys.stderr, "unknown"
c.close()
_______________________________________________
Spambayes-checkins mailing list
[email protected]
http://mail.python.org/mailman/listinfo/spambayes-checkins