[core-dev] Re: Requery during downloading disabled?
"Brian Fall" <[email protected]> Fri, 19 Nov 2004 18:11:41 -0500
| Newsgroups | gmane.network.gnutella.limewire.core.devel |
|---|---|
| Message-ID | <[email protected]> |
Thanks, Sam. I will then pursue the "alternate locations" and the "download mesh" approach as you suggest to avoid network congestion. I do, however, have a question about where to begin adding my own alternate locations to the mesh. I know the exact IP addresses of the sources that I want to add (they are running Limewire), and would ideally want to just specify this inside the magnet link instead of modify the code, but I've so far been unable to figure out if that's possible. Here, for example, is just one variation I've tried (I added line breaks in this email to make it easier to read, but didn't actually have the breaks in the link itself):
magnet:?xt=urn:<SHA1>&dn=SomeMusicFile&
xs=http://a.b.c.d:port/uri-res/N2R?urn:sha1:<SHA1>&
http://e.f.g.h:port/uri-res/N2R?urn:sha1:<SHA1>&
http://i.j.k.l:port/uri-res/N2R?urn:sha1:<SHA1>&
http://m.n.o.p:port/uri-res/N2R?urn:sha1:<SHA1>&
The idea is to load up the magnet with the sources I am certain will host the file, while allowing Limewire to also search for sources while these xs sources start the download. Is that possible? I've tried a lot of variations on the above theme, attempting to put multiple sources into the magnet, but no luck -- documentation I came across in the Limewire code indicate that this is possible, but is it?
If the above isn't possible, I can always modify the source code so that my sources are hard-coded (for now; early testing!) as alternate locations. I see that the MagnetDownloader constructor takes an array of URLs named defaultURLs; should I add them in the constructor (just add my sources to the defaultURLs), or is there a better place in the Limewire core code to add my own alternate sources to ensure that downloading starts from them initially while the rest of the network is being searched?
With thanks again for your advice,
Brian
> Message: 2
> Date: Fri, 19 Nov 2004 01:57:54 -0500
> From: "Sam Berlin" <[email protected]>
> Subject: RE: [core-dev] Requery during downloading disabled?
> To: <[email protected]>
> Message-ID: <[email protected]>
> Content-Type: text/plain; charset="us-ascii"
>
> 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
>
>
> End of core-dev Digest, Vol 6, Issue 6
> **************************************
>
--
___________________________________________________________
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