dataWaits map[*torrent][]dataWait
}
+func (me *Client) PeerID() string {
+ return string(me.peerID[:])
+}
+
func (me *Client) ListenAddr() (addr net.Addr) {
for _, l := range me.listeners {
if addr != nil && l.Addr().String() != addr.String() {
cl.event.L = &cl.mu
cl.mu.Init(2)
- o := copy(cl.peerID[:], BEP20)
- _, err = rand.Read(cl.peerID[o:])
- if err != nil {
- panic("error generating peer id")
+ if cfg.PeerID != "" {
+ CopyExact(&cl.peerID, cfg.PeerID)
+ } else {
+ o := copy(cl.peerID[:], BEP20)
+ _, err = rand.Read(cl.peerID[o:])
+ if err != nil {
+ panic("error generating peer id")
+ }
}
if cl.downloadStrategy == nil {
DownloadStrategy: torrent.NewResponsiveDownloadStrategy(0),
DisableTrackers: true,
NoDHT: true,
+
+ // This can be used to check if clients can connect to other clients
+ // with the same ID.
+
+ // PeerID: seeder.PeerID(),
})
http.HandleFunc("/leecher", func(w http.ResponseWriter, req *http.Request) {
leecher.WriteStatus(w)