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);
                }


Reply via email to