aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bencode/bencode.go9
1 files changed, 5 insertions, 4 deletions
diff --git a/bencode/bencode.go b/bencode/bencode.go
index dd8a23c..062e980 100644
--- a/bencode/bencode.go
+++ b/bencode/bencode.go
@@ -71,14 +71,15 @@ func marshalDict(out io.Writer, v reflect.Value) {
if tag == "-" {
continue
}
- name, _ := parseTag(tag)
+ name, param := parseTag(tag)
if name == "" {
name = f.Name
}
- if !isEmpty(v.Field(i)) {
- marshalString(out, name)
- marshalField(out, v.Field(i))
+ if param == "optional" && isEmpty(v.Field(i)) {
+ continue
}
+ marshalString(out, name)
+ marshalField(out, v.Field(i))
}
io.WriteString(out, "e")
}