Skip to content

Commit 4933d1d

Browse files
authored
Merge pull request #1925 from rajatjindal/golang-outbound-headers2
fix http.Headers to outboundHeaders
2 parents 2fa6785 + 4296afe commit 4933d1d

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

http/outbound_internals.go

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -111,23 +111,21 @@ func toResponse(res *C.wasi_outbound_http_response_t) (*http.Response, error) {
111111

112112
func toOutboundHeaders(hm http.Header) C.wasi_outbound_http_headers_t {
113113
var reqHeaders C.wasi_outbound_http_headers_t
114+
114115
headersLen := len(hm)
115116

116117
if headersLen > 0 {
117118
reqHeaders.len = C.ulong(headersLen)
118-
var x C.wasi_outbound_http_string_t
119-
headersPtr := C.malloc(C.size_t(headersLen) * C.size_t(unsafe.Sizeof(x)))
120-
ptr := (*[1 << 30]C.wasi_outbound_http_tuple2_string_string_t)(unsafe.Pointer(&headersPtr))[:headersLen:headersLen]
119+
var x C.wasi_outbound_http_tuple2_string_string_t
120+
reqHeaders.ptr = (*C.wasi_outbound_http_tuple2_string_string_t)(C.malloc(C.size_t(headersLen) * C.size_t(unsafe.Sizeof(x))))
121+
headers := unsafe.Slice(reqHeaders.ptr, headersLen)
121122

122123
idx := 0
123124
for k, v := range hm {
124-
ptr[idx].f0 = C.wasi_outbound_http_string_t{ptr: C.CString(k), len: C.size_t(len(k))}
125-
ptr[idx].f1 = C.wasi_outbound_http_string_t{ptr: C.CString(v[0]), len: C.size_t(len(v[0]))}
125+
headers[idx] = newOutboundHeader(k, v[0])
126126
idx++
127127
}
128-
reqHeaders.ptr = &ptr[0]
129128
}
130-
131129
return reqHeaders
132130
}
133131

@@ -188,3 +186,11 @@ func toErr(code C.uint8_t, url string) error {
188186
return nil
189187
}
190188
}
189+
190+
// newOutboundHeader creates a new outboundHeader with the given key/value.
191+
func newOutboundHeader(k, v string) C.wasi_outbound_http_tuple2_string_string_t {
192+
return C.wasi_outbound_http_tuple2_string_string_t{
193+
f0: C.wasi_outbound_http_string_t{ptr: C.CString(k), len: C.size_t(len(k))},
194+
f1: C.wasi_outbound_http_string_t{ptr: C.CString(v), len: C.size_t(len(v))},
195+
}
196+
}

0 commit comments

Comments
 (0)