From da9cbc7cf0778e5168360e5da2f25c7d51d6fdee Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Wed, 8 Nov 2017 19:57:05 +1100 Subject: [PATCH] metainfo: Omit empty Metainfo.InfoBytes --- metainfo/metainfo.go | 2 +- metainfo/nodes_test.go | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/metainfo/metainfo.go b/metainfo/metainfo.go index 55624e99..a27f4d51 100644 --- a/metainfo/metainfo.go +++ b/metainfo/metainfo.go @@ -9,7 +9,7 @@ import ( ) 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 69bb9e67..adebbb36 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 @@ func TestUnmarshalBadMetainfoNodes(t *testing.T) { 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)) +} -- 2.44.0