Author: bback
Date: 2007-02-06 08:44:50 +0000 (Tue, 06 Feb 2007)
New Revision: 11680
Modified:
trunk/freenet/src/freenet/node/fcp/ClientGet.java
trunk/freenet/src/freenet/node/fcp/ClientPutBase.java
trunk/freenet/src/freenet/node/fcp/ClientRequest.java
Log:
fixes for PersistentRequestRemoved
Modified: trunk/freenet/src/freenet/node/fcp/ClientGet.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientGet.java 2007-02-05 11:52:15 UTC
(rev 11679)
+++ trunk/freenet/src/freenet/node/fcp/ClientGet.java 2007-02-06 08:44:50 UTC
(rev 11680)
@@ -360,7 +360,6 @@
}
private void trySendDataFoundOrGetFailed(FCPConnectionOutputHandler
handler) {
-
FCPMessage msg;
// Don't need to lock. succeeded is only ever set, never unset.
@@ -452,7 +451,26 @@
public void onGeneratedURI(FreenetURI uri, BaseClientPutter state) {
// Ignore
}
+
+ public void requestWasRemoved() {
+ // if request is still running, send a GetFailed with code=cancelled
+ if( !finished ) {
+ synchronized(this) {
+ succeeded = false;
+ finished = true;
+ FetchException cancelled = new
FetchException(FetchException.CANCELLED);
+ getFailedMessage = new GetFailedMessage(cancelled, identifier,
global);
+ }
+ trySendDataFoundOrGetFailed(null);
+ }
+ // notify client that request was removed
+ FCPMessage msg = new PersistentRequestRemovedMessage(getIdentifier(),
global);
+ client.queueClientRequestMessage(msg, 0);
+ freeData();
+ finish();
+ }
+
public void receive(ClientEvent ce) {
// Don't need to lock, verbosity is final and finished is never
unset.
if(finished) return;
Modified: trunk/freenet/src/freenet/node/fcp/ClientPutBase.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientPutBase.java 2007-02-05
11:52:15 UTC (rev 11679)
+++ trunk/freenet/src/freenet/node/fcp/ClientPutBase.java 2007-02-06
08:44:50 UTC (rev 11680)
@@ -2,8 +2,7 @@
import java.net.MalformedURLException;
-import freenet.client.InserterContext;
-import freenet.client.InserterException;
+import freenet.client.*;
import freenet.client.async.BaseClientPutter;
import freenet.client.async.ClientCallback;
import freenet.client.events.ClientEvent;
@@ -134,7 +133,25 @@
}
trySendGeneratedURIMessage(null);
}
+
+ public void requestWasRemoved() {
+ // if request is still running, send a PutFailed with code=cancelled
+ if( !finished ) {
+ synchronized(this) {
+ finished = true;
+ InserterException cancelled = new
InserterException(InserterException.CANCELLED);
+ putFailedMessage = new PutFailedMessage(cancelled, identifier,
global);
+ }
+ trySendFinalMessage(null);
+ }
+ // notify client that request was removed
+ FCPMessage msg = new PersistentRequestRemovedMessage(getIdentifier(),
global);
+ client.queueClientRequestMessage(msg, 0);
+ freeData();
+ finish();
+ }
+
public void receive(ClientEvent ce) {
if(finished) return;
if(ce instanceof SplitfileProgressEvent) {
Modified: trunk/freenet/src/freenet/node/fcp/ClientRequest.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientRequest.java 2007-02-05
11:52:15 UTC (rev 11679)
+++ trunk/freenet/src/freenet/node/fcp/ClientRequest.java 2007-02-06
08:44:50 UTC (rev 11680)
@@ -304,15 +304,11 @@
/**
* Called after a RemovePersistentRequest. Send a PersistentRequestRemoved
to the clients.
*/
- public void requestWasRemoved() {
- FCPMessage msg = new PersistentRequestRemovedMessage(getIdentifier(),
global);
- client.queueClientRequestMessage(msg, 0);
- }
-
+ public abstract void requestWasRemoved();
+
/** Utility method for storing details of a possibly encrypted bucket.
*/
protected void bucketToFS(SimpleFieldSet fs, String name, boolean
includeSize, Bucket data) {
SerializableToFieldSetBucket bucket =
(SerializableToFieldSetBucket) data;
fs.put(name, bucket.toFieldSet());
}
-
}