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) } }