peer-conn-msg-writer.go | 3 +++ tests/issue-798/main.go | 18 ++++++++++++++++++ diff --git a/peer-conn-msg-writer.go b/peer-conn-msg-writer.go index 0dbc4ead45c4ee27c73e5edf1a3ccee9878cdb48..1bacc59d188c59ceb726abf4911939092ac9f574 100644 --- a/peer-conn-msg-writer.go +++ b/peer-conn-msg-writer.go @@ -104,6 +104,9 @@ n, err = cn.w.Write(next) if err == nil && n != len(next) { panic("expected full write") } + if err != nil { + break + } } if err != nil { cn.logger.WithDefaultLevel(log.Debug).Printf("error writing: %v", err) diff --git a/tests/issue-798/main.go b/tests/issue-798/main.go new file mode 100644 index 0000000000000000000000000000000000000000..3b9ad6456ae3ff033dbbd6876142d8f279b4cdd8 --- /dev/null +++ b/tests/issue-798/main.go @@ -0,0 +1,18 @@ +package main + +import ( + "fmt" + "github.com/anacrolix/torrent" +) + +func main() { + config := torrent.NewDefaultClientConfig() + config.DataDir = "./output" + c, _ := torrent.NewClient(config) + defer c.Close() + t, _ := c.AddMagnet("magnet:?xt=urn:btih:99c82bb73505a3c0b453f9fa0e881d6e5a32a0c1&tr=https%3A%2F%2Ftorrent.ubuntu.com%2Fannounce&tr=https%3A%2F%2Fipv6.torrent.ubuntu.com%2Fannounce") + <-t.GotInfo() + fmt.Println("start downloading") + t.DownloadAll() + c.WaitAll() +} \ No newline at end of file