Skip to content

Commit 1367b96

Browse files
committed
TUN-9849: Add cf-proxy-* to control response headers
These headers will not be returned to the eyeball
1 parent 114683f commit 1367b96

File tree

2 files changed

+17
-16
lines changed

2 files changed

+17
-16
lines changed

connection/header.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ var headerEncoding = base64.RawStdEncoding
5353
func IsControlResponseHeader(headerName string) bool {
5454
return strings.HasPrefix(headerName, ":") ||
5555
strings.HasPrefix(headerName, "cf-int-") ||
56-
strings.HasPrefix(headerName, "cf-cloudflared-")
56+
strings.HasPrefix(headerName, "cf-cloudflared-") ||
57+
strings.HasPrefix(headerName, "cf-proxy-")
5758
}
5859

5960
// isWebsocketClientHeader returns true if the header name is required by the client to upgrade properly

connection/header_test.go

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
11
package connection
22

33
import (
4-
"fmt"
54
"net/http"
65
"reflect"
76
"sort"
87
"testing"
98

10-
"github.com/stretchr/testify/assert"
9+
"github.com/stretchr/testify/require"
1110
)
1211

1312
func TestSerializeHeaders(t *testing.T) {
1413
request, err := http.NewRequest(http.MethodGet, "http://example.com", nil)
15-
assert.NoError(t, err)
14+
require.NoError(t, err)
1615

1716
mockHeaders := http.Header{
1817
"Mock-Header-One": {"Mock header one value", "three"},
@@ -39,22 +38,22 @@ func TestSerializeHeaders(t *testing.T) {
3938
serializedHeaders := SerializeHeaders(request.Header)
4039

4140
// Sanity check: the headers serialized to something that's not an empty string
42-
assert.NotEqual(t, "", serializedHeaders)
41+
require.NotEqual(t, "", serializedHeaders)
4342

4443
// Deserialize back, and ensure we get the same set of headers
4544
deserializedHeaders, err := DeserializeHeaders(serializedHeaders)
46-
assert.NoError(t, err)
45+
require.NoError(t, err)
4746

48-
assert.Equal(t, 13, len(deserializedHeaders))
47+
require.Len(t, deserializedHeaders, 13)
4948
expectedHeaders := headerToReqHeader(mockHeaders)
5049

5150
sort.Sort(ByName(deserializedHeaders))
5251
sort.Sort(ByName(expectedHeaders))
5352

54-
assert.True(
53+
require.True(
5554
t,
5655
reflect.DeepEqual(expectedHeaders, deserializedHeaders),
57-
fmt.Sprintf("got = %#v, want = %#v\n", deserializedHeaders, expectedHeaders),
56+
"got = %#v, want = %#v\n", deserializedHeaders, expectedHeaders,
5857
)
5958
}
6059

@@ -82,12 +81,12 @@ func headerToReqHeader(headers http.Header) (reqHeaders []HTTPHeader) {
8281

8382
func TestSerializeNoHeaders(t *testing.T) {
8483
request, err := http.NewRequest(http.MethodGet, "http://example.com", nil)
85-
assert.NoError(t, err)
84+
require.NoError(t, err)
8685

8786
serializedHeaders := SerializeHeaders(request.Header)
8887
deserializedHeaders, err := DeserializeHeaders(serializedHeaders)
89-
assert.NoError(t, err)
90-
assert.Equal(t, 0, len(deserializedHeaders))
88+
require.NoError(t, err)
89+
require.Empty(t, deserializedHeaders)
9190
}
9291

9392
func TestDeserializeMalformed(t *testing.T) {
@@ -102,21 +101,22 @@ func TestDeserializeMalformed(t *testing.T) {
102101

103102
for _, malformedValue := range malformedData {
104103
_, err = DeserializeHeaders(malformedValue)
105-
assert.Error(t, err)
104+
require.Error(t, err)
106105
}
107106
}
108107

109108
func TestIsControlResponseHeader(t *testing.T) {
110109
controlResponseHeaders := []string{
111-
// Anything that begins with cf-int- or cf-cloudflared-
110+
// Anything that begins with cf-int-, cf-cloudflared- or cf-proxy-
112111
"cf-int-sample-header",
113112
"cf-cloudflared-sample-header",
113+
"cf-proxy-sample-header",
114114
// Any http2 pseudoheader
115115
":sample-pseudo-header",
116116
}
117117

118118
for _, header := range controlResponseHeaders {
119-
assert.True(t, IsControlResponseHeader(header))
119+
require.True(t, IsControlResponseHeader(header))
120120
}
121121
}
122122

@@ -130,6 +130,6 @@ func TestIsNotControlResponseHeader(t *testing.T) {
130130
}
131131

132132
for _, header := range notControlResponseHeaders {
133-
assert.False(t, IsControlResponseHeader(header))
133+
require.False(t, IsControlResponseHeader(header))
134134
}
135135
}

0 commit comments

Comments
 (0)