()
| 135 | } |
| 136 | |
| 137 | func (bk *Block) TouchBrook() { |
| 138 | f := brook.Resolve |
| 139 | brook.Resolve = func(network string, addr string) (net.Addr, error) { |
| 140 | var ds map[string]byte |
| 141 | var c4 []*net.IPNet |
| 142 | var c6 []*net.IPNet |
| 143 | if bk.Lock != nil { |
| 144 | bk.Lock.RLock() |
| 145 | } |
| 146 | ds = bk.Domain |
| 147 | c4 = bk.CIDR4 |
| 148 | c6 = bk.CIDR6 |
| 149 | if bk.Lock != nil { |
| 150 | bk.Lock.RUnlock() |
| 151 | } |
| 152 | h, _, err := net.SplitHostPort(addr) |
| 153 | if err != nil { |
| 154 | return nil, err |
| 155 | } |
| 156 | var a net.Addr |
| 157 | ip := net.ParseIP(h) |
| 158 | if ip == nil { |
| 159 | if brook.ListHasDomain(ds, strings.ToLower(h), bk.Cache) { |
| 160 | return nil, errors.New("block " + addr) |
| 161 | } |
| 162 | a, err = f(network, addr) |
| 163 | if err != nil { |
| 164 | return nil, err |
| 165 | } |
| 166 | v, ok := a.(*net.TCPAddr) |
| 167 | if ok { |
| 168 | ip = v.IP |
| 169 | } |
| 170 | if !ok { |
| 171 | ip = a.(*net.UDPAddr).IP |
| 172 | } |
| 173 | } |
| 174 | if brook.ListHasIP(c4, c6, ip, bk.Cache, bk.GeoIP) { |
| 175 | return nil, errors.New("block " + addr) |
| 176 | } |
| 177 | if a != nil { |
| 178 | return a, nil |
| 179 | } |
| 180 | return f(network, addr) |
| 181 | } |
| 182 | } |
nothing calls this directly
no test coverage detected