Author: toad
Date: 2008-02-15 16:12:53 +0000 (Fri, 15 Feb 2008)
New Revision: 17945
Modified:
trunk/freenet/src/freenet/node/PacketSender.java
Log:
Don't run directly unless safe to do so.
Modified: trunk/freenet/src/freenet/node/PacketSender.java
===================================================================
--- trunk/freenet/src/freenet/node/PacketSender.java 2008-02-15 16:12:03 UTC
(rev 17944)
+++ trunk/freenet/src/freenet/node/PacketSender.java 2008-02-15 16:12:53 UTC
(rev 17945)
@@ -56,6 +56,7 @@
private long timeLastSentOldOpennetConnectAttempt;
private Vector rpiTemp;
private int[] rpiIntTemp;
+ private boolean started = false;
PacketSender(Node node) {
resendPackets = new LinkedList();
@@ -148,10 +149,12 @@
t1.setDaemon(true);
t1.start();
}
+ started = true;
myThread.start();
}
public void run() {
+ if(logMINOR) Logger.minor(this, "In PacketSender.run()");
freenet.support.Logger.OSThread.logPID(this);
while(true) {
lastReceivedPacketFromAnyNode = lastReportedNoPackets;
@@ -463,10 +466,13 @@
}
public void queueTimedJob(Runnable job, long offset) {
- if(offset <= 0) {
+ // Run directly *if* that won't cause any priority problems.
+ if(offset <= 0 && started && !NativeThread.usingNativeCode()) {
+ if(logMINOR) Logger.minor(this, "Running directly:
"+job);
node.executor.execute(job, "Scheduled job: " + job);
return;
}
+ if(offset < 0) offset = 0;
long now = System.currentTimeMillis();
Long l = new Long(offset + now);
synchronized(timedJobsByTime) {
@@ -483,5 +489,8 @@
timedJobsByTime.put(l, jobs);
}
}
+ if(offset < MAX_COALESCING_DELAY) {
+ wakeUp();
+ }
}
}