From 89bd9b9ee5d90d1c71de168f69785cdb9fb14fd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Tue, 11 Apr 2023 17:48:57 +0800 Subject: [PATCH] fix --- option/simple.go | 8 ++++---- outbound/http.go | 19 +++++++++---------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/option/simple.go b/option/simple.go index 2e009356..60cf074b 100644 --- a/option/simple.go +++ b/option/simple.go @@ -27,8 +27,8 @@ type SocksOutboundOptions struct { type HTTPOutboundOptions struct { DialerOptions ServerOptions - Username string `json:"username,omitempty"` - Password string `json:"password,omitempty"` - TLS *OutboundTLSOptions `json:"tls,omitempty"` - Headers map[string]Listable[string] `json:"headers,omitempty"` + Username string `json:"username,omitempty"` + Password string `json:"password,omitempty"` + TLS *OutboundTLSOptions `json:"tls,omitempty"` + Headers map[string]Listable[string] `json:"headers,omitempty"` } diff --git a/outbound/http.go b/outbound/http.go index 18056edc..075c1e53 100644 --- a/outbound/http.go +++ b/outbound/http.go @@ -3,7 +3,7 @@ package outbound import ( "context" "net" - H "net/http" + "net/http" "os" "github.com/sagernet/sing-box/adapter" @@ -15,14 +15,14 @@ import ( "github.com/sagernet/sing/common" M "github.com/sagernet/sing/common/metadata" N "github.com/sagernet/sing/common/network" - "github.com/sagernet/sing/protocol/http" + sHTTP "github.com/sagernet/sing/protocol/http" ) var _ adapter.Outbound = (*HTTP)(nil) type HTTP struct { myOutboundAdapter - client *http.Client + client *sHTTP.Client } func NewHTTP(router adapter.Router, logger log.ContextLogger, tag string, options option.HTTPOutboundOptions) (*HTTP, error) { @@ -30,12 +30,11 @@ func NewHTTP(router adapter.Router, logger log.ContextLogger, tag string, option if err != nil { return nil, err } - var headers H.Header - headers = make(H.Header) - for key, valueList := range options.Headers { - headers.Set(key, valueList[0]) - for _, value := range valueList[1:]{ - headers.Add(key, value) + var headers http.Header + if options.Headers != nil { + headers = make(http.Header) + for key, values := range options.Headers { + headers[key] = values } } return &HTTP{ @@ -46,7 +45,7 @@ func NewHTTP(router adapter.Router, logger log.ContextLogger, tag string, option logger: logger, tag: tag, }, - http.NewClient(detour, options.ServerOptions.Build(), options.Username, options.Password, headers), + sHTTP.NewClient(detour, options.ServerOptions.Build(), options.Username, options.Password, headers), }, nil }