summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-12-27 17:11:02 +0100
committerDimitri Sokolyuk <demon@dim13.org>2016-12-27 17:11:02 +0100
commite144aa0bc9a66b2314f57b9344697d429049944f (patch)
tree2693287ba7d60f7f6ddcd75fe5f5e7bee4ccc54d
parent5d506643a6b543d46d18f3ec832f84f094a4f438 (diff)
wip
-rw-r--r--main.go2
-rw-r--r--rate.go11
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]++
}