metainfo/magnet_test.go | 4 +++- metainfo/metainfo.go | 8 ++------ metainfo/metainfo_test.go | 3 ++- spec.go | 2 +- diff --git a/metainfo/magnet_test.go b/metainfo/magnet_test.go index 1ad4b170395a41ff83c74601be0159763a185aa2..c90713f30579520d87daa939b80b5f00a4a234c7 100644 --- a/metainfo/magnet_test.go +++ b/metainfo/magnet_test.go @@ -74,7 +74,9 @@ func TestMagnetize(t *testing.T) { mi, err := LoadFromFile("../testdata/bootstrap.dat.torrent") require.NoError(t, err) - m := mi.Magnet(mi.UnmarshalInfo().Name, mi.HashInfoBytes()) + info, err := mi.UnmarshalInfo() + require.NoError(t, err) + m := mi.Magnet(info.Name, mi.HashInfoBytes()) assert.EqualValues(t, "bootstrap.dat", m.DisplayName) diff --git a/metainfo/metainfo.go b/metainfo/metainfo.go index 6d1d7e2efecfc44b46a51a7a4a05c6ed77d58e07..96a64cbc0b4499bfca26818c51602cfafb2a4170 100644 --- a/metainfo/metainfo.go +++ b/metainfo/metainfo.go @@ -1,7 +1,6 @@ package metainfo import ( - "fmt" "io" "os" "time" @@ -49,11 +48,8 @@ defer f.Close() return Load(f) } -func (mi MetaInfo) UnmarshalInfo() (info Info) { - err := bencode.Unmarshal(mi.InfoBytes, &info) - if err != nil { - panic(fmt.Sprintf("bad info bytes: %s", err)) - } +func (mi MetaInfo) UnmarshalInfo() (info Info, err error) { + err = bencode.Unmarshal(mi.InfoBytes, &info) return } diff --git a/metainfo/metainfo_test.go b/metainfo/metainfo_test.go index de81b8da67c0f8fc11c787084c8b67b513944320..037f8825f5a4421be15fa77d705b54c97721716b 100644 --- a/metainfo/metainfo_test.go +++ b/metainfo/metainfo_test.go @@ -18,8 +18,9 @@ func testFile(t *testing.T, filename string) { mi, err := LoadFromFile(filename) require.NoError(t, err) + info, err := mi.UnmarshalInfo() + require.NoError(t, err) - info := mi.UnmarshalInfo() if len(info.Files) == 1 { t.Logf("Single file: %s (length: %d)\n", info.Name, info.Files[0].Length) } else { diff --git a/spec.go b/spec.go index e6b58d8c11c32fd94111fd8bd90b7464900067a4..5dbd472bda965b5dbffed780ecefa3a456d13a3a 100644 --- a/spec.go +++ b/spec.go @@ -34,7 +34,7 @@ return } func TorrentSpecFromMetaInfo(mi *metainfo.MetaInfo) (spec *TorrentSpec) { - info := mi.UnmarshalInfo() + info, _ := mi.UnmarshalInfo() spec = &TorrentSpec{ Trackers: mi.AnnounceList, InfoBytes: mi.InfoBytes,