Author: toad
Date: 2008-03-07 17:35:15 +0000 (Fri, 07 Mar 2008)
New Revision: 18413
Modified:
trunk/freenet/src/freenet/node/KeyTracker.java
trunk/freenet/src/freenet/node/PeerNode.java
Log:
Move getThrottle() to PeerNode. Should fix NPEs.
Modified: trunk/freenet/src/freenet/node/KeyTracker.java
===================================================================
--- trunk/freenet/src/freenet/node/KeyTracker.java 2008-03-07 17:25:35 UTC
(rev 18412)
+++ trunk/freenet/src/freenet/node/KeyTracker.java 2008-03-07 17:35:15 UTC
(rev 18413)
@@ -580,7 +580,7 @@
long timeAdded = sentPacketsContents.getTime(realSeqNo);
if(sentPacketsContents.remove(realSeqNo)) {
if(buf.length > Node.PACKET_SIZE) {
- PacketThrottle throttle = getThrottle();
+ PacketThrottle throttle = pn.getThrottle();
throttle.notifyOfPacketAcknowledged();
throttle.setRoundTripTime(System.currentTimeMillis() - timeAdded);
}
@@ -600,23 +600,6 @@
Logger.minor(this, "Executed "+cbCount+" callbacks");
}
- private PacketThrottle _lastThrottle;
-
- PacketThrottle getThrottle() {
- // pn.getPeer() cannot be null as it has already connected.
- PacketThrottle newThrottle = PacketThrottle.getThrottle(pn.getPeer(),
Node.PACKET_SIZE);
- PacketThrottle prevThrottle = null;
- synchronized(this) {
- if(newThrottle != _lastThrottle) {
- prevThrottle = _lastThrottle;
- _lastThrottle = newThrottle;
- } else return newThrottle;
- }
- if(prevThrottle != null)
- prevThrottle.changedAddress(newThrottle);
- return newThrottle;
- }
-
/**
* Called when we have received a packet acknowledgement.
* @param realSeqNo
@@ -638,7 +621,7 @@
long timeAdded = sentPacketsContents.getTime(realSeqNo);
if(sentPacketsContents.remove(realSeqNo)) {
if(buf.length > Node.PACKET_SIZE) {
- PacketThrottle throttle = getThrottle();
+ PacketThrottle throttle = pn.getThrottle();
throttle.notifyOfPacketAcknowledged();
throttle.setRoundTripTime(System.currentTimeMillis() -
timeAdded);
}
@@ -670,7 +653,7 @@
byte[] resendData = sentPacketsContents.get(seqNumber);
if(resendData != null) {
if(resendData.length > Node.PACKET_SIZE)
- getThrottle().notifyOfPacketLost();
+ pn.getThrottle().notifyOfPacketLost();
synchronized(packetsToResend) {
packetsToResend.add(new Integer(seqNumber));
}
@@ -1012,11 +995,6 @@
* *** Must only be called if the KeyTracker is not to be kept. Otherwise,
we may receive some packets twice. ***
*/
public void completelyDeprecated(KeyTracker newTracker) {
- PacketThrottle throttle;
- synchronized(this) {
- throttle = _lastThrottle;
- }
- if(throttle != null) throttle.maybeDisconnected();
if(logMINOR) Logger.minor(this, "Completely deprecated: "+this+" in
favour of "+newTracker);
LimitedRangeIntByteArrayMapElement[] elements = clear();
if(elements.length == 0) return; // nothing more to do
@@ -1039,8 +1017,6 @@
* Dump all sent messages.
*/
public void disconnected() {
- if(_lastThrottle != null)
- _lastThrottle.maybeDisconnected();
// Clear everything, call the callbacks
LimitedRangeIntByteArrayMapElement[] elements = clear();
for(int i=0;i<elements.length;i++) {
Modified: trunk/freenet/src/freenet/node/PeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerNode.java 2008-03-07 17:25:35 UTC
(rev 18412)
+++ trunk/freenet/src/freenet/node/PeerNode.java 2008-03-07 17:35:15 UTC
(rev 18413)
@@ -1156,6 +1156,8 @@
if(cur != null) cur.disconnected();
if(prev != null) prev.disconnected();
if(unv != null) unv.disconnected();
+ if(_lastThrottle != null)
+ _lastThrottle.maybeDisconnected();
node.lm.lostOrRestartedNode(this);
setPeerNodeStatus(now);
if(!dumpMessageQueue) {
@@ -1849,6 +1851,11 @@
oldCur.completelyDeprecated(newTracker);
if(prev != null)
prev.deprecated();
+ PacketThrottle throttle;
+ synchronized(this) {
+ throttle = _lastThrottle;
+ }
+ if(throttle != null) throttle.maybeDisconnected();
Logger.normal(this, "Completed handshake with " + this + " on "
+ replyTo + " - current: " + currentTracker +
" old: " + previousTracker + " unverified: " +
unverifiedTracker + " bootID: " + thisBootID + " for " + shortToString());
@@ -3050,14 +3057,21 @@
return Version.getArbitraryBuildNumber(getVersion(), -1);
}
- public PacketThrottle getThrottle() {
- if(currentTracker != null)
- return currentTracker.getThrottle();
- if(unverifiedTracker != null)
- return unverifiedTracker.getThrottle();
- if(previousTracker != null)
- return previousTracker.getThrottle();
- return null;
+ private PacketThrottle _lastThrottle;
+
+ public PacketThrottle getThrottle() {
+ // pn.getPeer() cannot be null as it has already connected.
+ PacketThrottle newThrottle = PacketThrottle.getThrottle(getPeer(),
Node.PACKET_SIZE);
+ PacketThrottle prevThrottle = null;
+ synchronized(this) {
+ if(newThrottle != _lastThrottle) {
+ prevThrottle = _lastThrottle;
+ _lastThrottle = newThrottle;
+ } else return newThrottle;
+ }
+ if(prevThrottle != null)
+ prevThrottle.changedAddress(newThrottle);
+ return newThrottle;
}
/**