Fix data race.
parent
8fe326d3e4
commit
25a2a1b2c2
|
@ -7,15 +7,19 @@ package bot
|
|||
import (
|
||||
"log"
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
cfg "github.com/arachnist/gorepost/config"
|
||||
"github.com/arachnist/gorepost/irc"
|
||||
)
|
||||
|
||||
var callbacks = make(map[string]map[string]func(func(irc.Message), irc.Message))
|
||||
var callbackLock sync.RWMutex
|
||||
|
||||
// addCallback registers callbacks that can be later dispatched by Dispatcher
|
||||
func addCallback(command, name string, callback func(func(irc.Message), irc.Message)) {
|
||||
callbackLock.Lock()
|
||||
defer callbackLock.Unlock()
|
||||
log.Println("adding callback", command, name)
|
||||
if _, ok := callbacks[command]; !ok {
|
||||
callbacks[command] = make(map[string]func(func(irc.Message), irc.Message))
|
||||
|
@ -33,6 +37,8 @@ func Dispatcher(output func(irc.Message), input irc.Message) {
|
|||
return
|
||||
}
|
||||
|
||||
callbackLock.RLock()
|
||||
defer callbackLock.RUnlock()
|
||||
if callbacks[input.Command] != nil {
|
||||
if len(cfg.LookupStringMap(input.Context, "WhitelistedPlugins")) > 0 {
|
||||
for i, f := range callbacks[input.Command] {
|
||||
|
|
Loading…
Reference in New Issue