diff --git a/src/org/fdroid/fdroid/localrepo/LocalRepoService.java b/src/org/fdroid/fdroid/localrepo/LocalRepoService.java index fc182352d..590a3471d 100644 --- a/src/org/fdroid/fdroid/localrepo/LocalRepoService.java +++ b/src/org/fdroid/fdroid/localrepo/LocalRepoService.java @@ -216,6 +216,12 @@ public class LocalRepoService extends Service { } private void registerMDNSService() { + /* + * a ServiceInfo can only be registered with a single instance of JmDNS, + * and there is only ever a single LocalHTTPD port to advertise anyway. + */ + if (pairService != null || jmdns != null) + clearCurrentMDNSService(); String repoName = Preferences.get().getLocalRepoName(); final HashMap values = new HashMap(); values.put("path", "/fdroid/repo"); @@ -249,6 +255,10 @@ public class LocalRepoService extends Service { Preferences.get().unregisterLocalRepoBonjourListeners(localRepoBonjourChangeListener); localRepoBonjourChangeListener = null; } + clearCurrentMDNSService(); + } + + private void clearCurrentMDNSService() { if (jmdns != null) { if (pairService != null) { jmdns.unregisterService(pairService);