Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormkuppe2009-02-27 13:56:20 +0000
committermkuppe2009-02-27 13:56:20 +0000
commit6370e1e31e78fdeb4ac800cb0aad997668ebd326 (patch)
tree74e73bc372d5ee350b4d0b1a6722548dc897817f /providers/bundles/org.eclipse.ecf.provider.jmdns
parent0dedf589ddfdf3f4e0d3610332aaee720a18c877 (diff)
downloadorg.eclipse.ecf-6370e1e31e78fdeb4ac800cb0aad997668ebd326.tar.gz
org.eclipse.ecf-6370e1e31e78fdeb4ac800cb0aad997668ebd326.tar.xz
org.eclipse.ecf-6370e1e31e78fdeb4ac800cb0aad997668ebd326.zip
RESOLVED - bug 265415: [Discovery][JMDNS] Dead-lock in javax.jmdns.impl.JmDNSImpl.unregisterService(ServiceInfo)
https://bugs.eclipse.org/bugs/show_bug.cgi?id=265415
Diffstat (limited to 'providers/bundles/org.eclipse.ecf.provider.jmdns')
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.jmdns/jmdns/javax/jmdns/impl/JmDNSImpl.java15
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.jmdns/jmdns/javax/jmdns/impl/tasks/Canceler.java5
2 files changed, 14 insertions, 6 deletions
diff --git a/providers/bundles/org.eclipse.ecf.provider.jmdns/jmdns/javax/jmdns/impl/JmDNSImpl.java b/providers/bundles/org.eclipse.ecf.provider.jmdns/jmdns/javax/jmdns/impl/JmDNSImpl.java
index ed3b1a879..83ad1c47b 100644
--- a/providers/bundles/org.eclipse.ecf.provider.jmdns/jmdns/javax/jmdns/impl/JmDNSImpl.java
+++ b/providers/bundles/org.eclipse.ecf.provider.jmdns/jmdns/javax/jmdns/impl/JmDNSImpl.java
@@ -1133,17 +1133,20 @@ public class JmDNSImpl extends JmDNS
public void startAnnouncer()
{
- new Announcer(this).start(timer);
+ if(getState() != DNSState.CANCELED)
+ new Announcer(this).start(timer);
}
public void startRenewer()
{
- new Renewer(this).start(timer);
+ if(getState() != DNSState.CANCELED)
+ new Renewer(this).start(timer);
}
public void schedule(TimerTask task, int delay)
{
- timer.schedule(task, delay);
+ if(getState() != DNSState.CANCELED)
+ timer.schedule(task, delay);
}
// REMIND: Why is this not an anonymous inner class?
@@ -1222,15 +1225,15 @@ public class JmDNSImpl extends JmDNS
setState(DNSState.CANCELED); // This protects against recursive
// calls
+ // Stop the timer
+ timer.cancel();
+
unregisterAllServices();
disposeServiceCollectors();
// close socket
closeMulticastSocket();
- // Stop the timer
- timer.cancel();
-
// remove the shutdown hook
if (shutdown != null)
{
diff --git a/providers/bundles/org.eclipse.ecf.provider.jmdns/jmdns/javax/jmdns/impl/tasks/Canceler.java b/providers/bundles/org.eclipse.ecf.provider.jmdns/jmdns/javax/jmdns/impl/tasks/Canceler.java
index f832eb9dc..23997281f 100644
--- a/providers/bundles/org.eclipse.ecf.provider.jmdns/jmdns/javax/jmdns/impl/tasks/Canceler.java
+++ b/providers/bundles/org.eclipse.ecf.provider.jmdns/jmdns/javax/jmdns/impl/tasks/Canceler.java
@@ -111,6 +111,11 @@ public class Canceler extends TimerTask
catch (Throwable e)
{
// logger.log(Level.WARNING, "run() exception ", e);
+ synchronized (lock)
+ {
+ lock.notifyAll();
+ }
+ this.cancel();
this.jmDNSImpl.recover();
}
}

Back to the top