Author: toad
Date: 2005-12-05 17:35:36 +0000 (Mon, 05 Dec 2005)
New Revision: 7670

Modified:
   trunk/freenet/src/freenet/node/InsertHandler.java
   trunk/freenet/src/freenet/node/InsertSender.java
   trunk/freenet/src/freenet/node/Version.java
Log:
271: (mandatory)
Fix more bugs in new insert code.
Inserts seem to work now.

Modified: trunk/freenet/src/freenet/node/InsertHandler.java
===================================================================
--- trunk/freenet/src/freenet/node/InsertHandler.java   2005-12-05 16:43:51 UTC 
(rev 7669)
+++ trunk/freenet/src/freenet/node/InsertHandler.java   2005-12-05 17:35:36 UTC 
(rev 7670)
@@ -258,9 +258,11 @@
                                }
                        }
                }
-               Message m = DMT.createFNPInsertTransfersCompleted(uid, 
sender.anyTransfersFailed());
+               boolean failed = sender.anyTransfersFailed();
+               Message m = DMT.createFNPInsertTransfersCompleted(uid, failed);
                try {
                        source.sendAsync(m, null);
+                       Logger.minor(this, "Sent completion: "+failed+" for 
"+this);
                } catch (NotConnectedException e1) {
                        Logger.minor(this, "Not connected: "+source+" for 
"+this);
                        // May need to commit anyway...

Modified: trunk/freenet/src/freenet/node/InsertSender.java
===================================================================
--- trunk/freenet/src/freenet/node/InsertSender.java    2005-12-05 16:43:51 UTC 
(rev 7669)
+++ trunk/freenet/src/freenet/node/InsertSender.java    2005-12-05 17:35:36 UTC 
(rev 7670)
@@ -498,12 +498,17 @@
         // Now wait for transfers, or for downstream transfer notifications.

         synchronized(this) {
-               while(!allTransfersCompleted) {
-                       try {
-                                       wait(10*1000);
-                               } catch (InterruptedException e) {
-                                       // Try again
-                               }
+               if(cw != null) {
+                       while(!allTransfersCompleted) {
+                               try {
+                                       wait(10*1000);
+                               } catch (InterruptedException e) {
+                                       // Try again
+                               }
+                       }
+               } else {
+                       // There weren't any transfers
+                       allTransfersCompleted = true;
                }
         }

@@ -606,20 +611,23 @@
                                                mf = m;
                                        else
                                                mf = m.or(mf);
+                                       Logger.minor(this, "Waiting for 
"+awc.pn.getPeer());
                                }
                        }

                        if(mf == null) {
                                if(status != NOT_FINISHED) {
-                                       if(noTimeLeft) {
-                                               // All done!
-                                               Logger.minor(this, "Completed, 
status="+getStatusString()+", nothing left to wait for.");
-                                               synchronized(InsertSender.this) 
{
-                                                       allTransfersCompleted = 
true;
-                                                       
InsertSender.this.notifyAll();
-                                               }
-                                               return;
+                                       if(nodesWaitingForCompletion.size() != 
waiters.length) {
+                                               // Added another one
+                                               Logger.minor(this, "Looping 
(mf==null): waiters="+waiters.length+" but 
waiting="+nodesWaitingForCompletion.size());
                                        }
+                                       // All done!
+                                       Logger.minor(this, "Completed, 
status="+getStatusString()+", nothing left to wait for.");
+                                       synchronized(InsertSender.this) {
+                                               allTransfersCompleted = true;
+                                               InsertSender.this.notifyAll();
+                                       }
+                                       return;
                                }
                                synchronized(nodesWaitingForCompletion) {
                                        try {

Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2005-12-05 16:43:51 UTC (rev 
7669)
+++ trunk/freenet/src/freenet/node/Version.java 2005-12-05 17:35:36 UTC (rev 
7670)
@@ -20,10 +20,10 @@
        public static final String protocolVersion = "1.0";

        /** The build number of the current revision */
-       public static final int buildNumber = 270;
+       public static final int buildNumber = 271;

        /** Oldest build of Fred we will talk to */
-       public static final int lastGoodBuild = 270;
+       public static final int lastGoodBuild = 271;

        /** The highest reported build of fred */
        public static int highestSeenBuild = buildNumber;


Reply via email to