From e144aa0bc9a66b2314f57b9344697d429049944f Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Tue, 27 Dec 2016 17:11:02 +0100 Subject: wip --- main.go | 2 +- rate.go | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/main.go b/main.go index 68965b1..ea85c63 100644 --- a/main.go +++ b/main.go @@ -41,7 +41,7 @@ func kicker(conn *irc.Conn, channel string) chan string { func privmsg(note, kick chan string) irc.HandlerFunc { last := NewLast(10) links := linker(note) - wl := NewWatchList(3, 5*time.Second) + wl := NewWatchList(2, time.Second) return func(conn *irc.Conn, line *irc.Line) { switch t := line.Text(); { case isFlood(t): diff --git a/rate.go b/rate.go index a4b630e..0ab03ac 100644 --- a/rate.go +++ b/rate.go @@ -1,6 +1,7 @@ package main import ( + "log" "sync" "time" ) @@ -21,17 +22,21 @@ func NewWatchList(n int, d time.Duration) WatchList { func (w WatchList) Add(kick chan string, nick string) { w.Lock() defer w.Unlock() + if _, ok := w.list[nick]; !ok { go func() { <-time.After(w.d) w.Lock() + defer w.Unlock() + log.Println(w.list[nick], "clear", nick) delete(w.list, nick) - w.Unlock() }() } - w.list[nick]++ + + log.Println(w.list[nick], "hit", nick) if w.list[nick] > w.n { kick <- nick } - return + + w.list[nick]++ } -- cgit v1.2.3