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

Commit ac61a91

Browse files
committed
Merge remote-tracking branch 'origin/master'
2 parents 2c18988 + ce8aa6e commit ac61a91

File tree

4 files changed

+19
-9
lines changed

4 files changed

+19
-9
lines changed

build.gradle

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import org.echocat.gradle.plugins.golang.utils.Executor
33
import static org.echocat.gradle.plugins.golang.model.Platform.currentPlatform
44

55
plugins {
6-
id 'org.echocat.golang' version '0.1.11'
6+
id 'org.echocat.golang' version '0.1.16'
77
}
88

99
group 'github.com/echocat/caddy-filter'
@@ -12,7 +12,7 @@ golang {
1212
// For testing only the current platform is required.
1313
platforms = currentPlatform()
1414
dependencies {
15-
build 'github.com/mholt/caddy:v0.9.5'
15+
build 'github.com/mholt/caddy:v0.10.4'
1616
test 'github.com/stretchr/testify'
1717
tool 'github.com/mattn/goveralls'
1818
}
@@ -23,6 +23,9 @@ golang {
2323
coverProfile = "${buildDir}/testing/${name}.cover"
2424
coverProfileHtml = "${buildDir}/testing/${name}.cover.html"
2525
}
26+
toolchain {
27+
goversion = 'go1.8'
28+
}
2629
}
2730

2831
task baseBuild(type: GolangTask, overwrite: true) {

filter.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ type filterHandler struct {
1717
}
1818

1919
func (instance filterHandler) ServeHTTP(writer http.ResponseWriter, request *http.Request) (int, error) {
20-
header := writer.Header()
2120
wrapper := newResponseWriterWrapperFor(writer, func(wrapper *responseWriterWrapper) bool {
21+
header := wrapper.Header()
2222
for _, rule := range instance.rules {
2323
if rule.matches(request, &header) {
2424
return true
@@ -49,6 +49,7 @@ func (instance filterHandler) ServeHTTP(writer http.ResponseWriter, request *htt
4949
if !wrapper.isBodyAllowed() {
5050
return result, logError
5151
}
52+
header := wrapper.Header()
5253
var body []byte
5354
bodyRetrieved := false
5455
for _, rule := range instance.rules {

responseWriterWrapper.go

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,21 @@ import (
1010
)
1111

1212
func newResponseWriterWrapperFor(delegate http.ResponseWriter, beforeFirstWrite func(*responseWriterWrapper) bool) *responseWriterWrapper {
13-
return &responseWriterWrapper{
14-
skipped: false,
13+
wrapper := &responseWriterWrapper{
14+
skipped: false,
1515
delegate: delegate,
1616
beforeFirstWrite: beforeFirstWrite,
1717
statusSetAtDelegate: 0,
1818
bodyAllowed: true,
1919
maximumBufferSize: -1,
20-
header: delegate.Header(),
20+
header: http.Header{},
2121
}
22+
for key, values := range delegate.Header() {
23+
for _, value := range values {
24+
wrapper.header.Add(key, value)
25+
}
26+
}
27+
return wrapper
2228
}
2329

2430
type responseWriterWrapper struct {
@@ -136,7 +142,7 @@ func (instance *responseWriterWrapper) writeHeadersToDelegate(defStatus int) err
136142
w := instance.delegate
137143
for key, values := range instance.header {
138144
for _, value := range values {
139-
w.Header().Set(key, value)
145+
w.Header().Add(key, value)
140146
}
141147
}
142148
w.WriteHeader(instance.selectStatus(defStatus))

responseWriterWrapper_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ func (s *responseWriterWrapperTest) Test_Header(c *C) {
3838

3939
wrapper.Header().Del("a")
4040
wrapper.Header().Add("c", "3")
41-
c.Assert(original.header.Get("a"), Equals, "")
42-
c.Assert(original.header.Get("c"), Equals, "3")
41+
c.Assert(wrapper.Header().Get("a"), Equals, "")
42+
c.Assert(wrapper.Header().Get("c"), Equals, "3")
4343
}
4444

4545
func (s *responseWriterWrapperTest) Test_WriteHeader(c *C) {

0 commit comments

Comments
 (0)