Skip to content
This repository was archived by the owner on Mar 1, 2023. It is now read-only.

Commit ff88a0f

Browse files
authored
#33 Remove duplicated headers (#43)
1 parent 60ce2ee commit ff88a0f

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed

responseWriterWrapper.go

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,12 @@ func newResponseWriterWrapperFor(delegate http.ResponseWriter, beforeFirstWrite
2424
header: http.Header{},
2525
}
2626
for key, values := range delegate.Header() {
27-
for _, value := range values {
28-
wrapper.header.Add(key, value)
27+
for i, value := range values {
28+
if i == 0 {
29+
wrapper.header.Set(key, value)
30+
} else {
31+
wrapper.header.Add(key, value)
32+
}
2933
}
3034
}
3135
return wrapper
@@ -79,7 +83,9 @@ func (instance *responseWriterWrapper) Write(content []byte) (int, error) {
7983
}
8084

8185
if instance.buffer == nil {
82-
instance.writeHeadersToDelegate(200)
86+
if err := instance.writeHeadersToDelegate(200); err != nil {
87+
return 0, err
88+
}
8389
return instance.delegate.Write(content)
8490
}
8591

@@ -140,13 +146,17 @@ func (instance *responseWriterWrapper) writeToDelegateAndEncodeIfRequired(conten
140146

141147
func (instance *responseWriterWrapper) writeHeadersToDelegate(defStatus int) error {
142148
if instance.headerSetAtDelegate {
143-
return errors.New("Headers already set at response.")
149+
return errors.New("headers already set at response")
144150
}
145151
instance.headerSetAtDelegate = true
146152
w := instance.delegate
147153
for key, values := range instance.header {
148-
for _, value := range values {
149-
w.Header().Add(key, value)
154+
for i, value := range values {
155+
if i == 0 {
156+
w.Header().Set(key, value)
157+
} else {
158+
w.Header().Add(key, value)
159+
}
150160
}
151161
}
152162
w.WriteHeader(instance.selectStatus(defStatus))

0 commit comments

Comments
 (0)