@@ -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
141147func (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