Merge: - clients: fix race introduced by commit 07db927; update tech doc
Close #727 * commit '1fcb69d3a913dec9b53f148acab45b1f621faa24': - clients: fix race introduced by commit 07db927; update tech doc
This commit is contained in:
commit
1fd0f78612
|
@ -526,7 +526,7 @@ Notes:
|
||||||
|
|
||||||
* If `use_global_settings` is true, then DNS responses for this client are processed and filtered using global settings.
|
* If `use_global_settings` is true, then DNS responses for this client are processed and filtered using global settings.
|
||||||
|
|
||||||
* If `use_global_settings` is false, then the client-specific settings are used to override (disable) global settings. For example, if global setting `parental_enabled` is true, then per-client setting `parental_enabled:false` can disable Parental Control for this specific client.
|
* If `use_global_settings` is false, then the client-specific settings are used to override (enable or disable) global settings.
|
||||||
|
|
||||||
|
|
||||||
### Get list of clients
|
### Get list of clients
|
||||||
|
|
|
@ -89,13 +89,13 @@ func clientExists(ip string) bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Search for a client by IP
|
// Search for a client by IP
|
||||||
func clientFind(ip string) (*Client, bool) {
|
func clientFind(ip string) (Client, bool) {
|
||||||
clients.lock.Lock()
|
clients.lock.Lock()
|
||||||
defer clients.lock.Unlock()
|
defer clients.lock.Unlock()
|
||||||
|
|
||||||
c, ok := clients.ipIndex[ip]
|
c, ok := clients.ipIndex[ip]
|
||||||
if ok {
|
if ok {
|
||||||
return c, true
|
return *c, true
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, c = range clients.list {
|
for _, c = range clients.list {
|
||||||
|
@ -109,12 +109,12 @@ func clientFind(ip string) (*Client, bool) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if ip == ipAddr.String() {
|
if ip == ipAddr.String() {
|
||||||
return c, true
|
return *c, true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil, false
|
return Client{}, false
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if Client object's fields are correct
|
// Check if Client object's fields are correct
|
||||||
|
|
2
dns.go
2
dns.go
|
@ -216,7 +216,7 @@ func generateServerConfig() dnsforward.ServerConfig {
|
||||||
// If a client has his own settings, apply them
|
// If a client has his own settings, apply them
|
||||||
func applyClientSettings(clientAddr string, setts *dnsfilter.RequestFilteringSettings) {
|
func applyClientSettings(clientAddr string, setts *dnsfilter.RequestFilteringSettings) {
|
||||||
c, ok := clientFind(clientAddr)
|
c, ok := clientFind(clientAddr)
|
||||||
if !ok || c == nil || !c.UseOwnSettings {
|
if !ok || !c.UseOwnSettings {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue