Too many problems caused by bad info bytes in downstream projects.
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)
package metainfo
import (
- "fmt"
"io"
"os"
"time"
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
}
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 {
}
func TorrentSpecFromMetaInfo(mi *metainfo.MetaInfo) (spec *TorrentSpec) {
- info := mi.UnmarshalInfo()
+ info, _ := mi.UnmarshalInfo()
spec = &TorrentSpec{
Trackers: mi.AnnounceList,
InfoBytes: mi.InfoBytes,