diff --git a/.gometalinter.json b/.gometalinter.json index 2c3f557e..10de7f42 100644 --- a/.gometalinter.json +++ b/.gometalinter.json @@ -20,7 +20,8 @@ "DisableAll": false, "Disable": [ "maligned", - "goconst" + "goconst", + "vetshadow" ], "Cyclo": 20, diff --git a/control.go b/control.go index fffb2d27..35373c2c 100644 --- a/control.go +++ b/control.go @@ -198,7 +198,7 @@ func handleStatsTop(w http.ResponseWriter, r *http.Request) { // handleStatsReset resets the stats caches func handleStatsReset(w http.ResponseWriter, r *http.Request) { - dnsServer.ResetStats() + dnsServer.PurgeStats() _, err := fmt.Fprintf(w, "OK\n") if err != nil { errorText := fmt.Sprintf("Couldn't write body: %s", err) diff --git a/dhcp.go b/dhcp.go index f2f8201d..a67b0ef6 100644 --- a/dhcp.go +++ b/dhcp.go @@ -85,8 +85,8 @@ func handleDHCPInterfaces(w http.ResponseWriter, r *http.Request) { // this interface doesn't support broadcast, skip it continue } - addrs, e := iface.Addrs() - if e != nil { + addrs, err := iface.Addrs() + if err != nil { httpError(w, http.StatusInternalServerError, "Failed to get addresses for interface %s: %s", iface.Name, err) return } diff --git a/dnsforward/dnsforward.go b/dnsforward/dnsforward.go index 862c37b1..e1006f83 100644 --- a/dnsforward/dnsforward.go +++ b/dnsforward/dnsforward.go @@ -116,6 +116,14 @@ func (s *Server) startInternal(config *ServerConfig) error { return errors.New("DNS server is already started") } + if s.queryLog == nil { + s.queryLog = newQueryLog(".") + } + + if s.stats == nil { + s.stats = newStats() + } + err := s.initDNSFilter() if err != nil { return err @@ -200,7 +208,7 @@ func (s *Server) stopInternal() error { } // flush remainder to file - return s.queryLog.clearLogBuffer() + return s.queryLog.flushLogBuffer() } // IsRunning returns true if the DNS server is running @@ -242,8 +250,8 @@ func (s *Server) GetStatsTop() *StatsTop { return s.queryLog.runningTop.getStatsTop() } -// ResetStats purges current server stats -func (s *Server) ResetStats() { +// PurgeStats purges current server stats +func (s *Server) PurgeStats() { // TODO: Locks? s.stats.purgeStats() } diff --git a/dnsforward/querylog_file.go b/dnsforward/querylog_file.go index 8aff26ae..8aadd5ae 100644 --- a/dnsforward/querylog_file.go +++ b/dnsforward/querylog_file.go @@ -19,8 +19,8 @@ var ( const enableGzip = false -// clearLogBuffer flushes the current buffer to file and resets the current buffer -func (l *queryLog) clearLogBuffer() error { +// flushLogBuffer flushes the current buffer to file and resets the current buffer +func (l *queryLog) flushLogBuffer() error { // flush remainder to file l.logBufferLock.Lock() flushBuffer := l.logBuffer diff --git a/filter.go b/filter.go index 735a1036..dcdd40be 100644 --- a/filter.go +++ b/filter.go @@ -95,13 +95,10 @@ func refreshFiltersIfNecessary(force bool) int { filter.ID = assignUniqueFilterID() } - // Re-load it from the disk before updating if len(filter.Rules) == 0 { - err := filter.load() - if err != nil { - log.Printf("Failed to reload filter %s: %s", filter.URL, err) - continue - } + // Try reloading filter from the disk before updating + // This is useful for the case when we simply enable a previously downloaded filter + _ = filter.load() } updated, err := filter.update(force)