[core-dev] PATCH: ManagedDownloader bug

[email protected] (Gregorio Roper) Mon, 07 Jun 2004 13:09:07 +0200
Newsgroups gmane.network.gnutella.limewire.core.devel
Message-ID <[email protected]>
This patch contains a small fix: LimeWire wasn't remembering bad alternate locations as it
is supposed to and would retry them over and over again. It also adds a small check so
LimeWire doesn't try to send pushes for alt-locs.

mfg
gregorio

_______________________________________________
core-dev mailing list
[email protected]
http://www.limewire.org/mailman/listinfo/core-dev
ManagedDownloader.diff (text/plain, 2 KB)
Index: ManagedDownloader.java
===================================================================
RCS file: /cvs/core/com/limegroup/gnutella/downloader/ManagedDownloader.java,v
retrieving revision 1.262
diff -u -r1.262 ManagedDownloader.java
--- ManagedDownloader.java	30 May 2004 23:57:57 -0000	1.262
+++ ManagedDownloader.java	7 Jun 2004 10:56:15 -0000
@@ -1238,8 +1238,8 @@
             }
         }
 
-        if(good) {
-            synchronized(altLock) {
+        synchronized(altLock) {
+            if(good) {
                 //check if validAlts contains loc to avoid duplicate stats, and
                 //spurious count increments in the local
                 //AlternateLocationCollections
@@ -1249,7 +1249,8 @@
                     validAlts.add(loc);
                     if( ifd != null )
                         ifd.addVerified(forFD);
-                }  else {
+                }
+            }  else {
                     if( RECORD_STATS && rfd.isFromAlternateLocation() )
                         DownloadStat.ALTERNATE_NOT_ADDED.incrementStat();
                     validAlts.remove(loc);
@@ -1257,9 +1258,8 @@
                         ifd.remove(forFD);
                     invalidAlts.add(rfd.getRemoteHostData());
                     recentInvalidAlts.add(loc);
-                }
             }
-        }
+        } 
     }
 
     public boolean resume() throws AlreadyDownloadingException {
@@ -2628,13 +2628,15 @@
         // must notify that we cannot connect directly.
         informMesh(rfd, false);
 
-        try {
-            ret = connectWithPush(rfd, incFile);
-            return ret;
-        } catch(IOException e) {
-            // even the push failed :(
+        if (!rfd.isFromAlternateLocation()) {
+            try {
+                 ret = connectWithPush(rfd, incFile);
+                 return ret;
+            } catch(IOException e) {
+                // even the push failed :(
+            }
         }
-
+        
         // if we're here, everything failed.
         return null;
     }