@@ -14,8 +14,10 @@ import (
14
14
)
15
15
16
16
const (
17
- headerSeparator = ": "
18
- headerDelimiter = "\r \n "
17
+ // HeaderSeparator is used to separate header name and value
18
+ HeaderSeparator = ": "
19
+ // HeaderDelimiter marks then end of a header (CRLF)
20
+ HeaderDelimiter = "\r \n "
19
21
)
20
22
21
23
// Header is a representation of the HTTP header section.
@@ -45,7 +47,7 @@ func NewHeader() *Header {
45
47
// This is a convenience and legacy fallback method. In the future,
46
48
// headers should be specified as a list, in order to guarantee order
47
49
// and to allow requests to contain the same header multiple times,
48
- // potentially, but not necessarily, with different values.
50
+ // potentially with different values.
49
51
func NewHeaderFromMap (headerMap map [string ]string ) * Header {
50
52
header := NewHeader ()
51
53
keys := make ([]string , 0 , len (headerMap ))
@@ -121,20 +123,11 @@ func (h *Header) GetAll(name string) []HeaderTuple {
121
123
// Write writes the header to the provided writer
122
124
func (h * Header ) Write (writer io.Writer ) error {
123
125
buf := bufio .NewWriter (writer )
124
- for _ , tuple := range h .entries {
126
+ for index , tuple := range h .entries {
125
127
if log .Trace ().Enabled () {
126
- log .Trace ().Msgf ("Writing header: %s: %s" , tuple .Name , tuple .Value )
127
- }
128
- if _ , err := buf .WriteString (tuple .Name ); err != nil {
129
- return err
130
- }
131
- if _ , err := buf .WriteString (headerSeparator ); err != nil {
132
- return err
133
- }
134
- if _ , err := buf .WriteString (tuple .Value ); err != nil {
135
- return err
128
+ log .Trace ().Msgf ("Writing header %d: %s: %s" , index , tuple .Name , tuple .Value )
136
129
}
137
- if _ , err := buf .WriteString (headerDelimiter ); err != nil {
130
+ if _ , err := buf .WriteString (tuple . Name + HeaderSeparator + tuple . Value + HeaderDelimiter ); err != nil {
138
131
return err
139
132
}
140
133
0 commit comments