| 1856 | } |
| 1857 | |
| 1858 | static void TryResolveService(Browser* browser, BrowserService* service) |
| 1859 | { |
| 1860 | // RFC 6763 service resolution completes when browsing has yielded: |
| 1861 | // PTR -> the service instance exists |
| 1862 | // SRV -> host name + port |
| 1863 | // TXT -> metadata for the instance |
| 1864 | // A -> an IPv4 address for the SRV target host |
| 1865 | RefreshServiceAddress(browser, service); |
| 1866 | |
| 1867 | const bool complete = service->m_HasPtr && service->m_HasSrv && service->m_HasTxt && service->m_HasAddress; |
| 1868 | if (complete) |
| 1869 | { |
| 1870 | if (!service->m_Resolved) |
| 1871 | { |
| 1872 | service->m_Resolved = 1; |
| 1873 | EmitBrowserEvent(browser, *service, EVENT_RESOLVED); |
| 1874 | } |
| 1875 | } |
| 1876 | else if (service->m_Resolved) |
| 1877 | { |
| 1878 | EmitBrowserEvent(browser, *service, EVENT_REMOVED); |
| 1879 | service->m_Resolved = 0; |
| 1880 | } |
| 1881 | } |
| 1882 | |
| 1883 | static void HandleBrowserRecord(Browser* browser, const uint8_t* data, uint32_t size, uint32_t* offset) |
| 1884 | { |
no test coverage detected