From 47b6eb170044175608c19ab79287cca3ff5f08ff Mon Sep 17 00:00:00 2001 From: Dreamacro <8615343+Dreamacro@users.noreply.github.com> Date: Thu, 3 Aug 2023 22:51:12 +0800 Subject: [PATCH] Fix: vmess http method may empty --- common/util/manipulation.go | 8 ++++++++ transport/vmess/http.go | 4 +++- 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 common/util/manipulation.go diff --git a/common/util/manipulation.go b/common/util/manipulation.go new file mode 100644 index 0000000..d2c861e --- /dev/null +++ b/common/util/manipulation.go @@ -0,0 +1,8 @@ +package util + +import "github.com/samber/lo" + +func EmptyOr[T comparable](v T, def T) T { + ret, _ := lo.Coalesce(v, def) + return ret +} diff --git a/transport/vmess/http.go b/transport/vmess/http.go index 74ca682..2b53d26 100644 --- a/transport/vmess/http.go +++ b/transport/vmess/http.go @@ -8,6 +8,8 @@ import ( "net" "net/http" "net/textproto" + + "github.com/Dreamacro/clash/common/util" ) type httpConn struct { @@ -58,7 +60,7 @@ func (hc *httpConn) Write(b []byte) (int, error) { } u := fmt.Sprintf("http://%s%s", host, path) - req, _ := http.NewRequest(hc.cfg.Method, u, bytes.NewBuffer(b)) + req, _ := http.NewRequest(util.EmptyOr(hc.cfg.Method, http.MethodGet), u, bytes.NewBuffer(b)) for key, list := range hc.cfg.Headers { req.Header.Set(key, list[rand.Intn(len(list))]) }