Author: toad
Date: 2008-01-05 21:38:49 +0000 (Sat, 05 Jan 2008)
New Revision: 16924

Modified:
   trunk/freenet/src/freenet/io/comm/UdpSocketHandler.java
Log:
Fix a bug causing a shutdown timeout when exiting before we have started the 
UDP loop.

Modified: trunk/freenet/src/freenet/io/comm/UdpSocketHandler.java
===================================================================
--- trunk/freenet/src/freenet/io/comm/UdpSocketHandler.java     2008-01-05 
21:26:37 UTC (rev 16923)
+++ trunk/freenet/src/freenet/io/comm/UdpSocketHandler.java     2008-01-05 
21:38:49 UTC (rev 16924)
@@ -40,6 +40,7 @@
        private boolean _active = true;
        private final int listenPort;
        private final String title;
+       private boolean _started;

        public UdpSocketHandler(int listenPort, InetAddress bindto, Node node, 
long startupTime, String title) throws SocketException {
                super("UDP packet receiver for "+title);
@@ -290,6 +291,10 @@
                lastTimeInSeconds = (int) (System.currentTimeMillis() / 1000);
                setDaemon(true);
                setPriority(Thread.MAX_PRIORITY);
+               synchronized(this) {
+                       if(!_active) return;
+                       _started = true;
+               }
                super.start();
                if(!disableHangChecker) {
                        Thread checker = new Thread(new USMChecker(), 
"MessageCore$USMChecker");
@@ -364,6 +369,7 @@
        Logger.normal(this, "Closing.", new Exception("error"));
                synchronized (this) {
                        _active = false;
+                       if(!_started) return;
                        while (!_isDone) {
                                try {
                                        wait(2000);


Reply via email to