implement cache eviction
This commit is contained in:
parent
f335343759
commit
d6cc21a0aa
|
@ -48,7 +48,6 @@ func NewCache() *Cache {
|
||||||
func (c *Cache) Evict() {
|
func (c *Cache) Evict() {
|
||||||
// A bit tedious, keys() -> find() -> remove()
|
// A bit tedious, keys() -> find() -> remove()
|
||||||
for _, key := range c.Radix.Keys() {
|
for _, key := range c.Radix.Keys() {
|
||||||
log.Printf("look for key %s\n", key)
|
|
||||||
node := c.Radix.Find(key)
|
node := c.Radix.Find(key)
|
||||||
if node == nil {
|
if node == nil {
|
||||||
continue
|
continue
|
||||||
|
@ -56,7 +55,7 @@ func (c *Cache) Evict() {
|
||||||
if time.Since(node.Value.(*Packet).ttl) > TTL {
|
if time.Since(node.Value.(*Packet).ttl) > TTL {
|
||||||
c.Radix.Remove(key)
|
c.Radix.Remove(key)
|
||||||
if *flaglog {
|
if *flaglog {
|
||||||
log.Printf("fsk-shield: evicting %s\n", key)
|
log.Printf("fks-shield: evicting %s\n", key)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,9 @@ var (
|
||||||
|
|
||||||
func serve(w dns.ResponseWriter, r *dns.Msg, c *Cache) {
|
func serve(w dns.ResponseWriter, r *dns.Msg, c *Cache) {
|
||||||
// only do queries not dynamic updates
|
// only do queries not dynamic updates
|
||||||
|
if *flaglog {
|
||||||
|
log.Printf("fks-shield: query")
|
||||||
|
}
|
||||||
if p := c.Find(r); p != nil {
|
if p := c.Find(r); p != nil {
|
||||||
dns.RawSetId(p, r.MsgHdr.Id)
|
dns.RawSetId(p, r.MsgHdr.Id)
|
||||||
w.WriteBuf(p)
|
w.WriteBuf(p)
|
||||||
|
@ -26,9 +29,6 @@ func serve(w dns.ResponseWriter, r *dns.Msg, c *Cache) {
|
||||||
// Cache miss
|
// Cache miss
|
||||||
client := new(dns.Client)
|
client := new(dns.Client)
|
||||||
if p, e := client.Exchange(r, *server); e == nil {
|
if p, e := client.Exchange(r, *server); e == nil {
|
||||||
if *flaglog {
|
|
||||||
log.Printf("fks-shield: cache miss")
|
|
||||||
}
|
|
||||||
// TODO(mg): If r has edns0 and p has not we create a mismatch here
|
// TODO(mg): If r has edns0 and p has not we create a mismatch here
|
||||||
w.Write(p)
|
w.Write(p)
|
||||||
c.Insert(p)
|
c.Insert(p)
|
||||||
|
|
Loading…
Reference in New Issue