[freenet-cvs] r16990 - trunk/freenet/src/freenet/io/xfer
robert at freenetproject.org
robert at freenetproject.org
Thu Jan 10 00:33:14 UTC 2008
Author: robert
Date: 2008-01-10 00:33:13 +0000 (Thu, 10 Jan 2008)
New Revision: 16990
Modified:
trunk/freenet/src/freenet/io/xfer/BlockReceiver.java
Log:
tell the transmitter if we are not listening anymore, and why
Modified: trunk/freenet/src/freenet/io/xfer/BlockReceiver.java
===================================================================
--- trunk/freenet/src/freenet/io/xfer/BlockReceiver.java 2008-01-10 00:15:37 UTC (rev 16989)
+++ trunk/freenet/src/freenet/io/xfer/BlockReceiver.java 2008-01-10 00:33:13 UTC (rev 16990)
@@ -51,6 +51,7 @@
/** packet : Integer -> reportTime : Long * */
HashMap _recentlyReportedMissingPackets = new HashMap();
ByteCounter _ctr;
+ boolean sentAborted;
public BlockReceiver(MessageCore usm, PeerContext sender, long uid, PartiallyReceivedBlock prb, ByteCounter ctr) {
_sender = sender;
@@ -62,6 +63,7 @@
public void sendAborted(int reason, String desc) throws NotConnectedException {
_usm.send(_sender, DMT.createSendAborted(_uid, reason, desc), _ctr);
+ sentAborted=true;
}
public byte[] receive() throws RetrievalException {
@@ -153,6 +155,14 @@
// We didn't cause it?!
Logger.error(this, "Caught in receive - probably a bug as receive sets it: "+e);
throw new RetrievalException(RetrievalException.UNKNOWN, "Aborted?");
+ } finally {
+ try {
+ if (_prb.isAborted() && !sentAborted) {
+ sendAborted(_prb.getAbortReason(), _prb.getAbortDescription());
+ }
+ } catch (NotConnectedException e) {
+ //ignore
+ }
}
}
}
More information about the cvs
mailing list