Skip to content

Commit c5c8b79

Browse files
committed
Use mDNS query API on Windows (Issue #29)
1 parent 5001458 commit c5c8b79

1 file changed

Lines changed: 15 additions & 20 deletions

File tree

cups/dnssd.c

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -120,9 +120,9 @@ struct _cups_dnssd_query_s // DNS-SD query request
120120

121121
#elif _WIN32
122122
WCHAR fullname[256]; // Query full name as a UTF-16 string
123-
DNS_QUERY_REQUEST req; // Query request
123+
MDNS_QUERY_REQUEST req; // Query request
124+
MDNS_QUERY_HANDLE handle; // Query handle
124125
DNS_QUERY_RESULT res; // Query result
125-
DNS_QUERY_CANCEL cancel; // Cancellation structure
126126

127127
#else // HAVE_AVAHI
128128
AvahiRecordBrowser *browser; // Browser
@@ -209,7 +209,7 @@ static cups_dnssd_flags_t mdns_to_cups(DNSServiceFlags flags, DNSServiceErrorTyp
209209

210210
#elif _WIN32
211211
static void win32_browse_cb(DWORD status, PVOID context, PDNS_RECORD record);
212-
static void win32_query_cb(PVOID context, PDNS_QUERY_RESULT result);
212+
static void win32_query_cb(PVOID context, PMDNS_QUERY_HANDLE handle, PDNS_QUERY_RESULT result);
213213
static void win32_resolve_cb(DWORD status, PVOID context, PDNS_SERVICE_INSTANCE instance);
214214
static void win32_service_cb(DWORD status, PVOID context, PDNS_SERVICE_INSTANCE instance);
215215
static void win32_utf8cpy(char *dst, const WCHAR *src, size_t dstsize);
@@ -1050,26 +1050,20 @@ cupsDNSSDQueryNew(
10501050

10511051
win32_wstrcpy(query->fullname, fullname, sizeof(query->fullname));
10521052

1053-
query->req.Version = DNS_QUERY_REQUEST_VERSION1;
1054-
query->req.InterfaceIndex = if_index;
1055-
query->req.QueryName = query->fullname;
1056-
query->req.QueryType = rrtype;
1057-
query->req.pDnsServerList = NULL;
1058-
query->req.pQueryCompletionCallback = win32_query_cb;
1059-
query->req.pQueryContext = query;
1053+
query->req.Version = DNS_QUERY_REQUEST_VERSION1;
1054+
query->req.InterfaceIndex = if_index;
1055+
query->req.Query = query->fullname;
1056+
query->req.QueryType = rrtype;
1057+
query->req.pQueryCallback = win32_query_cb;
1058+
query->req.pQueryContext = query;
10601059

1061-
query->res.Version = DNS_QUERY_REQUEST_VERSION1;
1062-
1063-
// TODO: FIgure out why mDNS queries can't work...
1064-
# if 0
1065-
if ((status = DnsQueryEx(&query->req, &query->res, &query->cancel)) != DNS_REQUEST_PENDING)
1060+
if ((status = DnsStartMulticastQuery(&query->req, &query->handle)) != ERROR_SUCCESS)
10661061
{
1067-
report_error(dnssd, "Unable to create DNS-SD query request: %d", status);
1062+
report_error(dnssd, "Unable to start mDNS query request: %d", status);
10681063
free(query);
10691064
query = NULL;
10701065
goto done;
10711066
}
1072-
# endif // 0
10731067

10741068
#else // HAVE_AVAHI
10751069
if (!dnssd->in_callback)
@@ -1983,7 +1977,7 @@ delete_query(
19831977
DNSServiceRefDeallocate(query->ref);
19841978

19851979
#elif _WIN32
1986-
DnsCancelQuery(&query->cancel);
1980+
DnsStopMulticastQuery(&query->handle);
19871981

19881982
#else // HAVE_AVAHI
19891983
avahi_record_browser_free(query->browser);
@@ -2498,8 +2492,9 @@ win32_browse_cb(
24982492

24992493
static void
25002494
win32_query_cb(
2501-
PVOID context, // I - Pointer to query
2502-
PDNS_QUERY_RESULT result) // I - Query result
2495+
PVOID context, // I - Pointer to query
2496+
PMDNS_QUERY_HANDLE handle, // I - Query handle
2497+
PDNS_QUERY_RESULT result) // I - Query result
25032498
{
25042499
cups_dnssd_query_t *query = (cups_dnssd_query_t *)context;
25052500
// Query

0 commit comments

Comments
 (0)