A methodology for operating a data sharing application in a peer-to-peer
network is presented. After a first peer node receives a request for a
copy of a specified file from a second peer node, the first peer node may
either return a copy of the specified file or a response message
containing an alternate node list associated with the specified file. The
alternate node list contains a set of node identifiers indicating a set
of alternate peer nodes within the peer-to-peer network that may have a
copy of the specified file. The alternate node list is dynamically
maintained at each peer node. The response provided by the first peer
node, i.e. either a copy of the specified file or the alternate node
list, can be determined based on an operational condition of the first
peer node, e.g., whether or not the first peer node is experiencing an
overload condition.