The 'ALT' GGEP Extension
========================

Name: ALT
Where: Query Hit (per File Entry)
Status: Production
Date: Mon Jul 14 20:05:36 MEST 2003
Format: Array of <ip> <port>
COBS-Encoding: Maybe
Deflate: Maybe
Revision: $Id$

[Those specs written by Raphael Manfredi after a proposal from BearShare]

The "ALT" extension is used to carry alternate locations on a file entry
basis.  It is used only for servers that can understand
"/uri-res/N2R?" requests, and for files that have a known hash,
so that the servent may construct the URLs manually.

The hash is given in the query hit, either as a HUGE urn: or via a GGEP "H"
extension.  The issuer of the entry in the "ALT" extension MUST ensure that
the server will understand the request for the hash given: if a SHA1 hash is
given, then the server must understand "/uri-res/N2R?urn:sha1:" requests.
When a bitprint hash is given, the downloader may specify a SHA1 URN in the
request, since a bitprint contains the SHA1.

In case multiple hashes were handed out for the file entry, the SHA1 hash is
preferred, then the bitprint.  If neither is handed out, then the recipient
can try the N2R resolver with the supplied URN, as given in the query hit.

The payload is an array of 6-byte entries.  The first 4 bytes encode
the IP of the server (in big-endian, as usual), and the remaining
2 bytes encode the port (in little-endian).

There is no size indication for the array.  The length of the payload
must be a multiple of 6 bytes (after COBS decoding, or course).
