stammen / dnssd-uwp

This project is no longer being supported. It is sample code only.
MIT License
6 stars 5 forks source link

Service does not seem to get unregistered on finish #1

Open ewmailing opened 6 years ago

ewmailing commented 6 years ago

When I quit the test app, the service being advertised does not seem to go away.

I am using a Bonjour browser to monitor the status of my network (this one here: http://www.tildesoft.com).

I kind of expect that the advertised service should go away fairly quickly, but I can still see many services advertised from previous runs I did hours ago.

ewmailing commented 6 years ago

I've seen from other internet comments about the underlying Microsoft DNS-SD service, that unregistering doesn't seem to work for anybody else either. Is there somebody that this issue can get forwarded to so it can be fixed?

stammen commented 6 years ago

@ewmailing What version of WIndows 10 are you using? This might be fixed in the 17134 SDK (RS4)

ewmailing commented 6 years ago

I am running Windows 10 Pro Version 1709 OS Build 16299.371

stammen commented 6 years ago

@ewmailing The fix for this issue is in RS4 (plus the fix for spurious crashes)

Version 1803 Windows SDK Version 17134

You will need to upgrade to get this working

ewmailing commented 6 years ago

I just upgraded to Windows 10 Version 1803 OS build 17134.

Upon some initial testing, things seem very much improved, but I'm still not seeing services unregistered completely...I'll explain.

So before this update, when I ran the test program, the advertised service would seem to stick around and none of my diagnostic tools or test code would show a callback of the service becoming unregistered. This is easy to see with tools like Bonjour Browser (renamed Discovery in the Apple App Store), or command line tools like dns-sd (built-in on Mac) and avahi-browse (on Linux). When Bonjour, Avahi, or Android unregister a service, all these tools detect the going away status. But with Windows, this doesn't happen.

Additionally, when I ran the test program again, Windows would detect that the service name was in use, and automatically rename my service to something that didn't conflict, e.g. renamed "My Service" to "My Service(1)". So after 30 test runs, I would have 30 stuck services on the network going up to (29).

Now with 1803, I am still missing the unregister notification. The service doesn't trigger a going away notification on the network so none of the aforementioned tools/test code see the Windows service going away and everything thinks the service is still alive.

However, the improvement in 1803 is that when I re-run the test program again, Windows manages to detect that the service name is no longer in use, so it can re-use the name "My Service" without it appending "(1)". So over the course of my testing, I do not keep accumulating zombie service names.

However this is still a bug in that the Windows implementation should send that going away notification.

stammen commented 6 years ago

Thanks for your feedback. I will forward it to the team working on the dnssd api.

butteredmonkey commented 5 years ago

Any news on this? Its a bit of a blocker to using this as you can't be confident there is a service there to use if it can't be unregistered. I am seeing the same behaviour as @ewmailing and am using Windows 10 1803 SDK 17134.