package console // claim_geoip.go is the claim runtime's half of GeoIP. newGeoipPublisher keeps // the Releases handle it is given, and NewServer gives it the raw bucket, so // without a rebind every publish, off, sweep, expiry and feed-status write // would reach the bucket past the mutation boundary. // rebindGeoipStore points the publisher (and so the feed, which reads its // store from the publisher) at the Releases handle now in s.cfg. It is called // by ConfigureClaimRuntime right after s.cfg.Releases becomes the boundary and // before any handler or worker can run, so nothing holds the publish slot. func (s *Server) rebindGeoipStore() { if s.geoip == nil { return } s.geoip.mu.Lock() defer s.geoip.mu.Unlock() s.geoip.store = s.cfg.Releases }