fix: plugins: use deferred lock to catch all branches
This commit is contained in:
parent
5bf5fe6c1d
commit
acb4bbd002
|
@ -240,9 +240,9 @@ func (pluginsState *PluginsState) ApplyQueryPlugins(pluginsGlobals *PluginsGloba
|
||||||
}
|
}
|
||||||
pluginsState.questionMsg = &msg
|
pluginsState.questionMsg = &msg
|
||||||
pluginsGlobals.RLock()
|
pluginsGlobals.RLock()
|
||||||
|
defer pluginsGlobals.RUnlock()
|
||||||
for _, plugin := range *pluginsGlobals.queryPlugins {
|
for _, plugin := range *pluginsGlobals.queryPlugins {
|
||||||
if ret := plugin.Eval(pluginsState, &msg); ret != nil {
|
if ret := plugin.Eval(pluginsState, &msg); ret != nil {
|
||||||
pluginsGlobals.RUnlock()
|
|
||||||
pluginsState.action = PluginsActionDrop
|
pluginsState.action = PluginsActionDrop
|
||||||
return packet, ret
|
return packet, ret
|
||||||
}
|
}
|
||||||
|
@ -257,7 +257,6 @@ func (pluginsState *PluginsState) ApplyQueryPlugins(pluginsGlobals *PluginsGloba
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pluginsGlobals.RUnlock()
|
|
||||||
packet2, err := msg.PackBuffer(packet)
|
packet2, err := msg.PackBuffer(packet)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return packet, err
|
return packet, err
|
||||||
|
@ -288,9 +287,9 @@ func (pluginsState *PluginsState) ApplyResponsePlugins(pluginsGlobals *PluginsGl
|
||||||
pluginsState.returnCode = PluginsReturnCodeResponseError
|
pluginsState.returnCode = PluginsReturnCodeResponseError
|
||||||
}
|
}
|
||||||
pluginsGlobals.RLock()
|
pluginsGlobals.RLock()
|
||||||
|
defer pluginsGlobals.RUnlock()
|
||||||
for _, plugin := range *pluginsGlobals.responsePlugins {
|
for _, plugin := range *pluginsGlobals.responsePlugins {
|
||||||
if ret := plugin.Eval(pluginsState, &msg); ret != nil {
|
if ret := plugin.Eval(pluginsState, &msg); ret != nil {
|
||||||
pluginsGlobals.RUnlock()
|
|
||||||
pluginsState.action = PluginsActionDrop
|
pluginsState.action = PluginsActionDrop
|
||||||
return packet, ret
|
return packet, ret
|
||||||
}
|
}
|
||||||
|
@ -306,7 +305,6 @@ func (pluginsState *PluginsState) ApplyResponsePlugins(pluginsGlobals *PluginsGl
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pluginsGlobals.RUnlock()
|
|
||||||
if ttl != nil {
|
if ttl != nil {
|
||||||
setMaxTTL(&msg, *ttl)
|
setMaxTTL(&msg, *ttl)
|
||||||
}
|
}
|
||||||
|
@ -327,12 +325,11 @@ func (pluginsState *PluginsState) ApplyLoggingPlugins(pluginsGlobals *PluginsGlo
|
||||||
return errors.New("Unexpected number of questions")
|
return errors.New("Unexpected number of questions")
|
||||||
}
|
}
|
||||||
pluginsGlobals.RLock()
|
pluginsGlobals.RLock()
|
||||||
|
defer pluginsGlobals.RUnlock()
|
||||||
for _, plugin := range *pluginsGlobals.loggingPlugins {
|
for _, plugin := range *pluginsGlobals.loggingPlugins {
|
||||||
if ret := plugin.Eval(pluginsState, questionMsg); ret != nil {
|
if ret := plugin.Eval(pluginsState, questionMsg); ret != nil {
|
||||||
pluginsGlobals.RUnlock()
|
|
||||||
return ret
|
return ret
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pluginsGlobals.RUnlock()
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue