metainfo/metainfo.go | 2 +- metainfo/nodes_test.go | 11 +++++++++++ diff --git a/metainfo/metainfo.go b/metainfo/metainfo.go index 55624e99c5db448f3ac2ed2e42df48b3f60e61bb..a27f4d515199fd6a47512ec675d45d63e9d2fdee 100644 --- a/metainfo/metainfo.go +++ b/metainfo/metainfo.go @@ -9,7 +9,7 @@ "github.com/anacrolix/torrent/bencode" ) type MetaInfo struct { - InfoBytes bencode.Bytes `bencode:"info"` + InfoBytes bencode.Bytes `bencode:"info,omitempty"` Announce string `bencode:"announce,omitempty"` AnnounceList AnnounceList `bencode:"announce-list,omitempty"` Nodes []Node `bencode:"nodes,omitempty"` diff --git a/metainfo/nodes_test.go b/metainfo/nodes_test.go index 69bb9e6704964088321165876cfbf9cd9743f4ed..adebbb3670371b2f96de91e61de6a76fe82a5fd2 100644 --- a/metainfo/nodes_test.go +++ b/metainfo/nodes_test.go @@ -1,6 +1,7 @@ package metainfo import ( + "bytes" "testing" "github.com/stretchr/testify/assert" @@ -61,3 +62,13 @@ // Should barf on the integer in the nodes list. err := bencode.Unmarshal([]byte("d5:nodesl1:ai42eee"), &mi) require.Error(t, err) } + +func TestMetainfoEmptyInfoBytes(t *testing.T) { + var buf bytes.Buffer + require.NoError(t, (&MetaInfo{ + // Include a non-empty field that comes after "info". + UrlList: []string{"hello"}, + }).Write(&buf)) + var mi MetaInfo + require.NoError(t, bencode.Unmarshal(buf.Bytes(), &mi)) +}