cmd/dht-get-peers: Fix lockup on SIGINT
This commit is contained in:
parent
727aac204f
commit
c1049d0605
|
@ -25,7 +25,8 @@ var (
|
||||||
serveAddr = flag.String("serveAddr", ":0", "local UDP address")
|
serveAddr = flag.String("serveAddr", ":0", "local UDP address")
|
||||||
infoHash = flag.String("infoHash", "", "torrent infohash")
|
infoHash = flag.String("infoHash", "", "torrent infohash")
|
||||||
|
|
||||||
s *dht.Server
|
s *dht.Server
|
||||||
|
quitting = make(chan struct{})
|
||||||
)
|
)
|
||||||
|
|
||||||
func loadTable() error {
|
func loadTable() error {
|
||||||
|
@ -94,7 +95,7 @@ func saveTable() error {
|
||||||
goodNodes := s.Nodes()
|
goodNodes := s.Nodes()
|
||||||
if *tableFileName == "" {
|
if *tableFileName == "" {
|
||||||
if len(goodNodes) != 0 {
|
if len(goodNodes) != 0 {
|
||||||
log.Printf("discarding %d good nodes!", len(goodNodes))
|
log.Print("good nodes were discarded because you didn't specify a table file")
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -123,12 +124,14 @@ func setupSignals() {
|
||||||
signal.Notify(ch, os.Interrupt)
|
signal.Notify(ch, os.Interrupt)
|
||||||
go func() {
|
go func() {
|
||||||
<-ch
|
<-ch
|
||||||
|
close(quitting)
|
||||||
s.Close()
|
s.Close()
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
seen := make(map[util.CompactPeer]struct{})
|
seen := make(map[util.CompactPeer]struct{})
|
||||||
|
getPeers:
|
||||||
for {
|
for {
|
||||||
ps, err := s.GetPeers(*infoHash)
|
ps, err := s.GetPeers(*infoHash)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -148,7 +151,11 @@ func main() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
time.Sleep(15 * time.Second)
|
select {
|
||||||
|
case <-time.After(15 * time.Second):
|
||||||
|
case <-quitting:
|
||||||
|
break getPeers
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if err := saveTable(); err != nil {
|
if err := saveTable(); err != nil {
|
||||||
log.Printf("error saving node table: %s", err)
|
log.Printf("error saving node table: %s", err)
|
||||||
|
|
Loading…
Reference in New Issue