From 83fd749d508831db68872e7a945eb467391f7fa8 Mon Sep 17 00:00:00 2001 From: luorijun Date: Tue, 25 Feb 2025 11:39:54 +0800 Subject: [PATCH] =?UTF-8?q?utils.Close=20=E6=B3=9B=E5=9E=8B=E7=BA=A6?= =?UTF-8?q?=E6=9D=9F=EF=BC=8C=E5=BF=BD=E7=95=A5=20nil=20=E7=9A=84=E6=83=85?= =?UTF-8?q?=E5=86=B5=EF=BC=8C=E6=B7=BB=E5=8A=A0=E6=96=87=E6=A1=A3=E8=AF=B4?= =?UTF-8?q?=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/client/main.go | 11 ++++++----- pkg/utils/utils.go | 15 +++++---------- 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/cmd/client/main.go b/cmd/client/main.go index cdc835c..e9e504c 100644 --- a/cmd/client/main.go +++ b/cmd/client/main.go @@ -4,8 +4,6 @@ import ( "bufio" "encoding/binary" "fmt" - "github.com/joho/godotenv" - "github.com/pkg/errors" "io" "log/slog" "net" @@ -13,6 +11,9 @@ import ( "proxy-server/pkg/utils" "strconv" "time" + + "github.com/joho/godotenv" + "github.com/pkg/errors" ) type Config struct { @@ -53,7 +54,7 @@ func control() error { if err != nil { return errors.Wrap(err, "连接失败") } - defer utils.Close(&conn) + defer utils.Close(conn) // 请求转发端口 slog.Info("注册转发端口", "port", cfg.FwdPort) @@ -96,7 +97,7 @@ func data(tagLen byte, tagBuf []byte) error { if err != nil { return errors.Wrap(err, "连接失败") } - defer utils.Close(&src) + defer utils.Close(src) // 发送 tag slog.Info("准备代理流量") @@ -126,7 +127,7 @@ func data(tagLen byte, tagBuf []byte) error { if err != nil { return errors.Wrap(err, "连接失败") } - defer utils.Close(&dest) + defer utils.Close(dest) slog.Info("开始代理流量 " + src.RemoteAddr().String() + " <-> " + dest.RemoteAddr().String()) timer := time.Now() diff --git a/pkg/utils/utils.go b/pkg/utils/utils.go index d0ef909..c288da2 100644 --- a/pkg/utils/utils.go +++ b/pkg/utils/utils.go @@ -24,15 +24,10 @@ func ReadBuffer(reader io.Reader, size int) ([]byte, error) { return buffer, nil } -func Close[T any](v *T) { - if v == nil { - return - } - closer, ok := any(*v).(io.Closer) - if ok { - err := closer.Close() - if err != nil { - slog.Warn("对象关闭失败", "err", err) - } +// Close 关闭对象,传入值绝对不能为 nil +func Close[T io.Closer](v T) { + err := v.Close() + if err != nil { + slog.Warn("对象关闭失败", "err", err) } }