Skip to content

Commit

Permalink
Merge: - clients: fix race introduced by commit 07db927; update tech doc
Browse files Browse the repository at this point in the history
Close #727

* commit '1fcb69d3a913dec9b53f148acab45b1f621faa24':
  - clients: fix race introduced by commit 07db927; update tech doc
  • Loading branch information
szolin committed Jun 7, 2019
2 parents 07db927 + 1fcb69d commit 1fd0f78
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 6 deletions.
2 changes: 1 addition & 1 deletion AGHTechDoc.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 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
Expand Down
8 changes: 4 additions & 4 deletions clients.go
Original file line number Diff line number Diff line change
Expand Up @@ -89,13 +89,13 @@ func clientExists(ip string) bool {
}

// Search for a client by IP
func clientFind(ip string) (*Client, bool) {
func clientFind(ip string) (Client, bool) {
clients.lock.Lock()
defer clients.lock.Unlock()

c, ok := clients.ipIndex[ip]
if ok {
return c, true
return *c, true
}

for _, c = range clients.list {
Expand All @@ -109,12 +109,12 @@ func clientFind(ip string) (*Client, bool) {
continue
}
if ip == ipAddr.String() {
return c, true
return *c, true
}
}
}

return nil, false
return Client{}, false
}

// Check if Client object's fields are correct
Expand Down
2 changes: 1 addition & 1 deletion dns.go
Original file line number Diff line number Diff line change
Expand Up @@ -216,7 +216,7 @@ func generateServerConfig() dnsforward.ServerConfig {
// If a client has his own settings, apply them
func applyClientSettings(clientAddr string, setts *dnsfilter.RequestFilteringSettings) {
c, ok := clientFind(clientAddr)
if !ok || c == nil || !c.UseOwnSettings {
if !ok || !c.UseOwnSettings {
return
}

Expand Down

0 comments on commit 1fd0f78

Please sign in to comment.