From 7f0000f0784199429e61035f39d9562905e2e049 Mon Sep 17 00:00:00 2001 From: rickypfyt <90169100+rickypfyt@users.noreply.github.com> Date: Mon, 3 Feb 2025 12:13:51 +0800 Subject: [PATCH] Add sorting --- field_map.go | 9 +++++++-- message.go | 10 +++++----- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/field_map.go b/field_map.go index 4aac64b1d..50a8492d1 100644 --- a/field_map.go +++ b/field_map.go @@ -366,11 +366,16 @@ func (m *FieldMap) sortedTags() []Tag { return m.tags } -func (m FieldMap) write(buffer *bytes.Buffer) { +func (m FieldMap) write(buffer *bytes.Buffer, sorted bool) { m.rwLock.Lock() defer m.rwLock.Unlock() - for _, tag := range m.sortedTags() { + tags := m.tags + if sorted { + tags = m.sortedTags() + } + + for _, tag := range tags { if f, ok := m.tagLookup[tag]; ok { writeField(f, buffer) } diff --git a/message.go b/message.go index 3e1e7202b..bdc7ca564 100644 --- a/message.go +++ b/message.go @@ -591,9 +591,9 @@ func (m *Message) build() []byte { m.cook() var b bytes.Buffer - m.Header.write(&b) - m.Body.write(&b) - m.Trailer.write(&b) + m.Header.write(&b, true /* sorted */) + m.Body.write(&b, false /* sorted */) + m.Trailer.write(&b, true /* sorted */) return b.Bytes() } @@ -606,9 +606,9 @@ func (m *Message) buildWithBodyBytes(bodyBytes []byte) []byte { m.cook() var b bytes.Buffer - m.Header.write(&b) + m.Header.write(&b, true /* sorted */) b.Write(bodyBytes) - m.Trailer.write(&b) + m.Trailer.write(&b, true /* sorted */) return b.Bytes() }