]> Sergey Matveev's repositories - btrtrc.git/commitdiff
metainfo: Omit empty Metainfo.InfoBytes
authorMatt Joiner <anacrolix@gmail.com>
Wed, 8 Nov 2017 08:57:05 +0000 (19:57 +1100)
committerMatt Joiner <anacrolix@gmail.com>
Wed, 8 Nov 2017 08:57:05 +0000 (19:57 +1100)
metainfo/metainfo.go
metainfo/nodes_test.go

index 55624e99c5db448f3ac2ed2e42df48b3f60e61bb..a27f4d515199fd6a47512ec675d45d63e9d2fdee 100644 (file)
@@ -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"`
index 69bb9e6704964088321165876cfbf9cd9743f4ed..adebbb3670371b2f96de91e61de6a76fe82a5fd2 100644 (file)
@@ -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))
+}