RE: [core-dev] Requery during downloading disabled?
"Sam Berlin" <[email protected]> Fri, 19 Nov 2004 01:57:54 -0500
| Newsgroups | gmane.network.gnutella.limewire.core.devel |
|---|---|
| Organization | LimeWire |
| Message-ID | <[email protected]> |
Hi Brian, What you're noticing is LimeWire's refusal to do automated requerying. If a download is active, then there is no need to burden the network with a search for additional sources. Network resources are the most precious commodity LimeWire has. If queries were injected into the network for existing downloads (or even automatically for failed downloads) then each node would be forced to flow control its traffic, dropping user-driven searches & results. The network-conscious way to have LimeWire attempt additional sources after a download begins is by using "alternate locations" and the "download mesh". The download mesh is a collection of alternate locations that are hosting the given file. HTTP responses can contain a header: "X-Alt: a.b.c.d:port, a.b.c.d:port, etc.." that tell LimeWire to try these sources. LimeWire (and other Gnutella clients) keep track of which hosts have successfully or unsuccessfully downloaded and internally keep a list of alternate locations for each file. Locations are removed from servers via reading the 'X-NAlt' header, which is a list supplied by the downloader (in one of it's HTTP request headers) of locations that are no longer valid. The only drawback with alternate locations is that they're currently designed to only work with uri-res requests. That is, the alternate locations must be hosting the file at http://a.b.c.d:port/uri-res/N2R?urn:sha1:<SHA1> . All Gnutella clients support this, but a mod would have to be written for HTTP servers such as Apache. Thanks, Sam > -----Original Message----- > From: [email protected] [mailto:core-dev- > [email protected]] On Behalf Of Brian Fall > Sent: Friday, November 19, 2004 1:39 AM > To: [email protected] > Subject: [core-dev] Requery during downloading disabled? > > Hello everyone, I've been working with are recent Limewire CVS snapshot > and noticed that when a search and attempt to download finally enters the > tryAllDownloads3() method of the ManagedDownloader class that it actually > stops the ability to re-query (perform any more searches for that piece of > content). Specifically, it appears that when the > > while (true) { ... } > > portion of tryAllDownloads3() is entered the ability to continue > searching comes to a halt. I am attempting to optimize, if possible, the > search process so that a requery can be issued even while the download is > in progress. To do this, I tried to re-query from within the while > (true) loop of the tryAllDownloads3() method, but that caused an > exception and stopped it entirely. > > Is it possible, given the way Limewire is currently coded, to requery > while a download is in progress? > > On a similar note (possibly related), I noticed that when I use a magnet > link that has as its "xs" source a standard Web link (not a Limewire > client, but instead a web link) Limewire will only download from that web > site and won't bother to query the network. I wonder if this is related to > the fact that Limewire can start the download from the web site > immediately, and in doing so it enters tryAllDownloads3() before it > actually has a chance to query the Gnutella network? Following, for > example, is the type of magnet link that I try (not a real one) but for > which only one source is allowed (that source being the http:// web site; > nothing from the Gnutella network is available): > > > magnet:?xt=urn:sha1:EI66YQYRH47K73NNFPSQDUV&dn=SomeMusicFile&xs=http://som > where.com/path/thefile.mp3 > > Magnet's such as the above only download from the web site specified by > xs, but don't use the Gnutella network -- is that related to the issue of > re-query being disabled during downloads or do you think these are two > separate issues? > > Ideally I'd like to specify a number of sources for xs (so that the > download can start from multiple web sites), which Limewire will use to > start the download while it queries the larger Gnutell network. Is this > possible given the way Limewire is designed today? > > With thanks for any advice you might have on these two issues, > > Brian > -- > ___________________________________________________________ > Sign-up for Ads Free at Mail.com > http://promo.mail.com/adsfreejump.htm > > > _______________________________________________ > core-dev mailing list > [email protected] > http://www.limewire.org/mailman/listinfo/core-dev _______________________________________________ core-dev mailing list [email protected] http://www.limewire.org/mailman/listinfo/core-dev