From a2ec2e901b529ae4b950ab68c7bfd8dcbcbb9831 Mon Sep 17 00:00:00 2001 From: baerwang <1780285721@qq.com> Date: Tue, 28 Sep 2021 17:06:47 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix=EF=BC=9APOST=20request=20body=20is=20mi?= =?UTF-8?q?ssing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/filter/http/httpproxy/routerfilter.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/pkg/filter/http/httpproxy/routerfilter.go b/pkg/filter/http/httpproxy/routerfilter.go index 43f76d1a7..0e961e92b 100644 --- a/pkg/filter/http/httpproxy/routerfilter.go +++ b/pkg/filter/http/httpproxy/routerfilter.go @@ -51,7 +51,9 @@ type ( cfg *Config } // Config describe the config of Filter - Config struct{} + Config struct { + client *http3.Client + } ) func (p *Plugin) Kind() string { @@ -59,7 +61,7 @@ func (p *Plugin) Kind() string { } func (p *Plugin) CreateFilter() (filter.HttpFilter, error) { - return &Filter{cfg: &Config{}}, nil + return &Filter{cfg: &Config{client: &http3.Client{}}}, nil } func (f *Filter) Config() interface{} { @@ -133,7 +135,7 @@ func (f *Filter) Handle(hc *http.HttpContext) { req.Header = r.Header errPrefix = "do request" - resp, err := http3.DefaultClient.Do(req) + resp, err := f.cfg.client.Do(req) if err != nil { panic(err) } From 9a605e1ac6dff1d0031458d3609cce1a30e9951e Mon Sep 17 00:00:00 2001 From: baerwang <1780285721@qq.com> Date: Wed, 29 Sep 2021 13:42:20 +0800 Subject: [PATCH 2/2] Let users care about http.Client transport and keep a uniform code style --- pkg/filter/http/httpproxy/routerfilter.go | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/pkg/filter/http/httpproxy/routerfilter.go b/pkg/filter/http/httpproxy/routerfilter.go index 0e961e92b..c802e5edd 100644 --- a/pkg/filter/http/httpproxy/routerfilter.go +++ b/pkg/filter/http/httpproxy/routerfilter.go @@ -48,12 +48,11 @@ type ( } // Filter is http filter instance Filter struct { - cfg *Config + cfg *Config + transport http3.RoundTripper } // Config describe the config of Filter - Config struct { - client *http3.Client - } + Config struct{} ) func (p *Plugin) Kind() string { @@ -61,7 +60,7 @@ func (p *Plugin) Kind() string { } func (p *Plugin) CreateFilter() (filter.HttpFilter, error) { - return &Filter{cfg: &Config{client: &http3.Client{}}}, nil + return &Filter{cfg: &Config{}, transport: &http3.Transport{}}, nil } func (f *Filter) Config() interface{} { @@ -135,7 +134,7 @@ func (f *Filter) Handle(hc *http.HttpContext) { req.Header = r.Header errPrefix = "do request" - resp, err := f.cfg.client.Do(req) + resp, err := (&http3.Client{Transport: f.transport}).Do(req) if err != nil { panic(err) }