From ff4a5bef9b935e9310181e3b0d4a4b16c13b7139 Mon Sep 17 00:00:00 2001 From: Skyxim Date: Tue, 14 Jun 2022 20:23:36 +0800 Subject: [PATCH] fix: up/down of hysteria must be a valid value --- adapter/outbound/hysteria.go | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/adapter/outbound/hysteria.go b/adapter/outbound/hysteria.go index e411528e..a3eca0eb 100644 --- a/adapter/outbound/hysteria.go +++ b/adapter/outbound/hysteria.go @@ -88,7 +88,15 @@ type HysteriaOption struct { func (c *HysteriaOption) Speed() (uint64, uint64, error) { var up, down uint64 up = stringToBps(c.Up) + if up == 0 { + return 0, 0, fmt.Errorf("invaild upload speed: %s", c.Up) + } + down = stringToBps(c.Down) + if up == 0 { + return 0, 0, fmt.Errorf("invaild download speed: %s", c.Down) + } + return up, down, nil } @@ -160,7 +168,12 @@ func NewHysteria(option HysteriaOption) (*Hysteria, error) { if len(option.Obfs) > 0 { obfuscator = obfs.NewXPlusObfuscator([]byte(option.Obfs)) } - up, down, _ := option.Speed() + + up, down, err := option.Speed() + if err != nil { + return nil, err + } + client, err := core.NewClient( addr, option.Protocol, auth, tlsConfig, quicConfig, clientTransport, up, down, func(refBPS uint64) congestion.CongestionControl { return hyCongestion.NewBrutalSender(congestion.ByteCount(refBPS))