| 2173 | } |
| 2174 | |
| 2175 | static void ExpireBrowserEntries(Browser* browser) |
| 2176 | { |
| 2177 | const uint64_t now = GetNow(); |
| 2178 | bool hosts_changed = false; |
| 2179 | |
| 2180 | for (uint32_t i = 0; i < browser->m_Hosts.Size();) |
| 2181 | { |
| 2182 | if (now >= browser->m_Hosts[i].m_Expires) |
| 2183 | { |
| 2184 | browser->m_Hosts.EraseSwap(i); |
| 2185 | hosts_changed = true; |
| 2186 | } |
| 2187 | else |
| 2188 | { |
| 2189 | ++i; |
| 2190 | } |
| 2191 | } |
| 2192 | |
| 2193 | for (uint32_t i = 0; i < browser->m_Services.Size();) |
| 2194 | { |
| 2195 | BrowserService& service = browser->m_Services[i]; |
| 2196 | if (service.m_HasPtr && now >= service.m_PtrExpires) |
| 2197 | { |
| 2198 | EmitBrowserRemoved(browser, &service); |
| 2199 | browser->m_Services.EraseSwap(i); |
| 2200 | } |
| 2201 | else |
| 2202 | { |
| 2203 | if (service.m_HasSrv && now >= service.m_SrvExpires) |
| 2204 | { |
| 2205 | service.m_HasSrv = 0; |
| 2206 | service.m_SrvExpires = 0; |
| 2207 | service.m_SrvRefresh = 0; |
| 2208 | service.m_SrvTtl = 0; |
| 2209 | service.m_Host[0] = 0; |
| 2210 | service.m_Port = 0; |
| 2211 | } |
| 2212 | |
| 2213 | if (service.m_HasTxt && now >= service.m_TxtExpires) |
| 2214 | { |
| 2215 | service.m_HasTxt = 0; |
| 2216 | service.m_TxtExpires = 0; |
| 2217 | service.m_TxtRefresh = 0; |
| 2218 | service.m_TxtTtl = 0; |
| 2219 | service.m_TxtCount = 0; |
| 2220 | service.m_Id[0] = 0; |
| 2221 | } |
| 2222 | |
| 2223 | if (hosts_changed || (service.m_Resolved && (!service.m_HasSrv || !service.m_HasTxt))) |
| 2224 | { |
| 2225 | TryResolveService(browser, &service); |
| 2226 | } |
| 2227 | ++i; |
| 2228 | } |
| 2229 | } |
| 2230 | } |
| 2231 | |
| 2232 | static bool ResolveCurrentHostAddress(const MDNS* mdns, dmSocket::Address* out) |
no test coverage detected