mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
fix: use header flags in wsproxy server (#10985)
This commit is contained in:
@@ -530,3 +530,33 @@ func WithQueryParam(key, value string) RequestOption {
|
||||
r.URL.RawQuery = q.Encode()
|
||||
}
|
||||
}
|
||||
|
||||
// HeaderTransport is a http.RoundTripper that adds some headers to all requests.
|
||||
// @typescript-ignore HeaderTransport
|
||||
type HeaderTransport struct {
|
||||
Transport http.RoundTripper
|
||||
Header http.Header
|
||||
}
|
||||
|
||||
var _ http.RoundTripper = &HeaderTransport{}
|
||||
|
||||
func (h *HeaderTransport) RoundTrip(req *http.Request) (*http.Response, error) {
|
||||
for k, v := range h.Header {
|
||||
for _, vv := range v {
|
||||
req.Header.Add(k, vv)
|
||||
}
|
||||
}
|
||||
if h.Transport == nil {
|
||||
h.Transport = http.DefaultTransport
|
||||
}
|
||||
return h.Transport.RoundTrip(req)
|
||||
}
|
||||
|
||||
func (h *HeaderTransport) CloseIdleConnections() {
|
||||
type closeIdler interface {
|
||||
CloseIdleConnections()
|
||||
}
|
||||
if tr, ok := h.Transport.(closeIdler); ok {
|
||||
tr.CloseIdleConnections()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -273,11 +273,8 @@ func (c *Client) DialWorkspaceAgent(dialCtx context.Context, agentID uuid.UUID,
|
||||
|
||||
ip := tailnet.IP()
|
||||
var header http.Header
|
||||
headerTransport, ok := c.HTTPClient.Transport.(interface {
|
||||
Header() http.Header
|
||||
})
|
||||
if ok {
|
||||
header = headerTransport.Header()
|
||||
if headerTransport, ok := c.HTTPClient.Transport.(*HeaderTransport); ok {
|
||||
header = headerTransport.Header
|
||||
}
|
||||
conn, err := tailnet.NewConn(&tailnet.Options{
|
||||
Addresses: []netip.Prefix{netip.PrefixFrom(ip, 128)},
|
||||
|
||||
Reference in New Issue
Block a user