Download sources from servers that don't respond to ping
Ryan Schmidt
ryandesign at macports.org
Sun Oct 4 22:32:06 PDT 2009
On Oct 4, 2009, at 23:16, Eric Hall wrote:
> Instead of using curl, why not use an internal socket
> connection on "the right port(s)" for the service used to
> deliver distfiles? That will be tcp/80 for most ports,
> some will have different ports (svn or ftp for example).
svn/git/cvs type connections need not be checked. Either the server
exists and will work or it doesn't and the port will fail to fetch.
There are no backup distfile servers for ports that check out from a
repository and thus don't use distfiles.
> Start a tcp connection, once you get the socket completed,
> check the timing.
That could be a possibility. I don't do this type of network
programming so I don't know what would be involved.
> That also lets you know if the service
> you want to use is available.
Additional checks to see if the service is available aren't strictly
needed since we already fail gracefully in the fetch phase (proceeding
to the next server in the list) if it isn't. Though detecting this
earlier would allow us to exclude those servers from the list entirely.
> In fact, if this was done "at the right place" (TM),
> the "fastest" connection could be the connection used for
> the actual download, and the other connections can be dropped.
> Note that I did not look at the code that implements the
> downloads, it may not be practical to insert timing checks
> and connection-drop logic there.
We use curl to actually download the distfile; if we wanted to re-use
the timing check connection we would have to implement the downloading
code ourselves which is probably nontrivial to get correct for all
possible HTTP/HTTPS/FTP servers...
More information about the macports-dev
mailing list