Author: toad
Date: 2007-05-25 22:18:41 +0000 (Fri, 25 May 2007)
New Revision: 13378
Modified:
trunk/freenet/src/freenet/client/async/BinaryBlobInserter.java
trunk/freenet/src/freenet/client/async/ClientPutter.java
trunk/freenet/src/freenet/keys/Key.java
trunk/freenet/src/freenet/node/fcp/ClientPutMessage.java
Log:
Binary blob insert: Seems to be working...
Modified: trunk/freenet/src/freenet/client/async/BinaryBlobInserter.java
===================================================================
--- trunk/freenet/src/freenet/client/async/BinaryBlobInserter.java
2007-05-25 21:43:46 UTC (rev 13377)
+++ trunk/freenet/src/freenet/client/async/BinaryBlobInserter.java
2007-05-25 22:18:41 UTC (rev 13378)
@@ -75,11 +75,12 @@
throw new
BinaryBlobFormatException("Block blob too short");
short keyType = dis.readShort();
int keyLen = dis.readUnsignedByte();
- short headersLen = dis.readShort();
- short dataLen = dis.readShort();
- short pubkeyLen = dis.readShort();
- if(blobLength != 9 + keyLen + headersLen +
dataLen + pubkeyLen)
- throw new
BinaryBlobFormatException("Binary blob too short for data lengths");
+ int headersLen = dis.readUnsignedShort();
+ int dataLen = dis.readUnsignedShort();
+ int pubkeyLen = dis.readUnsignedShort();
+ int total = 9 + keyLen + headersLen + dataLen +
pubkeyLen;
+ if(blobLength != total)
+ throw new
BinaryBlobFormatException("Binary blob not same length as data:
blobLength="+blobLength+" total="+total);
byte[] keyBytes = new byte[keyLen];
byte[] headersBytes = new byte[headersLen];
byte[] dataBytes = new byte[dataLen];
@@ -111,6 +112,7 @@
}
inserters = (MySendableInsert[]) myInserters.toArray(new
MySendableInsert[myInserters.size()]);
parent.addMustSucceedBlocks(inserters.length);
+ parent.notifyClients();
}
private ClientRequestScheduler getScheduler(KeyBlock block) {
Modified: trunk/freenet/src/freenet/client/async/ClientPutter.java
===================================================================
--- trunk/freenet/src/freenet/client/async/ClientPutter.java 2007-05-25
21:43:46 UTC (rev 13377)
+++ trunk/freenet/src/freenet/client/async/ClientPutter.java 2007-05-25
22:18:41 UTC (rev 13378)
@@ -115,7 +115,10 @@
oldProgress = null;
return false;
}
- ((SingleFileInserter)currentState).start(oldProgress);
+ if(currentState instanceof SingleFileInserter)
+
((SingleFileInserter)currentState).start(oldProgress);
+ else
+ currentState.schedule();
synchronized(this) {
oldProgress = null;
cancel = cancelled;
Modified: trunk/freenet/src/freenet/keys/Key.java
===================================================================
--- trunk/freenet/src/freenet/keys/Key.java 2007-05-25 21:43:46 UTC (rev
13377)
+++ trunk/freenet/src/freenet/keys/Key.java 2007-05-25 22:18:41 UTC (rev
13378)
@@ -78,7 +78,7 @@
byte type = (byte)(keyType >> 8);
byte subtype = (byte)(keyType & 0xFF);
if(type == NodeCHK.BASE_TYPE) {
- return CHKBlock.construct(headersBytes, dataBytes);
+ return CHKBlock.construct(dataBytes, headersBytes);
} else if(type == NodeSSK.BASE_TYPE) {
DSAPublicKey pubKey;
try {
Modified: trunk/freenet/src/freenet/node/fcp/ClientPutMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientPutMessage.java 2007-05-25
21:43:46 UTC (rev 13377)
+++ trunk/freenet/src/freenet/node/fcp/ClientPutMessage.java 2007-05-25
22:18:41 UTC (rev 13378)
@@ -78,16 +78,20 @@
if(identifier == null)
throw new
MessageInvalidException(ProtocolErrorMessage.MISSING_FIELD, "No Identifier",
null, global);
try {
- String u = fs.get("URI");
- if(u == null)
- throw new
MessageInvalidException(ProtocolErrorMessage.MISSING_FIELD, "No URI",
identifier, global);
- FreenetURI uu = new FreenetURI(fs.get("URI"));
- String[] metas = uu.getAllMetaStrings();
- if(metas != null && metas.length == 1) {
- fnam = metas[0];
- uu = uu.setMetaString(null);
- } // if >1, will fail later
- uri = uu;
+ if(binaryBlob)
+ uri = new FreenetURI("CHK@");
+ else {
+ String u = fs.get("URI");
+ if(u == null)
+ throw new
MessageInvalidException(ProtocolErrorMessage.MISSING_FIELD, "No URI",
identifier, global);
+ FreenetURI uu = new FreenetURI(fs.get("URI"));
+ String[] metas = uu.getAllMetaStrings();
+ if(metas != null && metas.length == 1) {
+ fnam = metas[0];
+ uu = uu.setMetaString(null);
+ } // if >1, will fail later
+ uri = uu;
+ }
} catch (MalformedURLException e) {
throw new
MessageInvalidException(ProtocolErrorMessage.FREENET_URI_PARSE_ERROR,
e.getMessage(), identifier, global);
}