Skip to content

Commit 2711c0c

Browse files
committed
Update handler usages
1 parent 320ffbe commit 2711c0c

File tree

3 files changed

+22
-24
lines changed

3 files changed

+22
-24
lines changed

Diff for: go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module github.com/sagernet/sing-shadowtls
33
go 1.20
44

55
require (
6-
github.com/sagernet/sing v0.5.0
6+
github.com/sagernet/sing v0.6.0-alpha.16
77
golang.org/x/crypto v0.29.0
88
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56
99
)

Diff for: go.sum

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
22
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
3-
github.com/sagernet/sing v0.5.0 h1:soo2wVwLcieKWWKIksFNK6CCAojUgAppqQVwyRYGkEM=
4-
github.com/sagernet/sing v0.5.0/go.mod h1:ARkL0gM13/Iv5VCZmci/NuoOlePoIsW0m7BWfln/Hak=
3+
github.com/sagernet/sing v0.6.0-alpha.16 h1:Ml+nJa8J9d+Svqv2pBvJoet+8PF302Snb6wcMUXaoy4=
4+
github.com/sagernet/sing v0.6.0-alpha.16/go.mod h1:ARkL0gM13/Iv5VCZmci/NuoOlePoIsW0m7BWfln/Hak=
55
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
66
golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ=
77
golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg=

Diff for: service.go

+19-21
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,25 @@ import (
2020
"github.com/sagernet/sing/common/task"
2121
)
2222

23+
type Service struct {
24+
version int
25+
password string
26+
users []User
27+
handshake HandshakeConfig
28+
handshakeForServerName map[string]HandshakeConfig
29+
strictMode bool
30+
handler N.TCPConnectionHandlerEx
31+
logger logger.ContextLogger
32+
}
33+
2334
type ServiceConfig struct {
2435
Version int
2536
Password string // for protocol version 2
2637
Users []User // for protocol version 3
2738
Handshake HandshakeConfig
2839
HandshakeForServerName map[string]HandshakeConfig // for protocol version 2/3
2940
StrictMode bool // for protocol version 3
30-
Handler Handler
41+
Handler N.TCPConnectionHandlerEx
3142
Logger logger.ContextLogger
3243
}
3344

@@ -41,22 +52,6 @@ type HandshakeConfig struct {
4152
Dialer N.Dialer
4253
}
4354

44-
type Handler interface {
45-
N.TCPConnectionHandler
46-
E.Handler
47-
}
48-
49-
type Service struct {
50-
version int
51-
password string
52-
users []User
53-
handshake HandshakeConfig
54-
handshakeForServerName map[string]HandshakeConfig
55-
strictMode bool
56-
handler Handler
57-
logger logger.ContextLogger
58-
}
59-
6055
func NewService(config ServiceConfig) (*Service, error) {
6156
service := &Service{
6257
version: config.Version,
@@ -99,7 +94,7 @@ func (s *Service) selectHandshake(clientHelloFrame *buf.Buffer) HandshakeConfig
9994
return s.handshake
10095
}
10196

102-
func (s *Service) NewConnection(ctx context.Context, conn net.Conn, metadata M.Metadata) error {
97+
func (s *Service) NewConnection(ctx context.Context, conn net.Conn, source M.Socksaddr, destination M.Socksaddr, onClose N.CloseHandlerFunc) error {
10398
switch s.version {
10499
default:
105100
fallthrough
@@ -125,7 +120,8 @@ func (s *Service) NewConnection(ctx context.Context, conn net.Conn, metadata M.M
125120
return err
126121
}
127122
s.logger.TraceContext(ctx, "handshake finished")
128-
return s.handler.NewConnection(ctx, conn, metadata)
123+
s.handler.NewConnectionEx(ctx, conn, source, destination, onClose)
124+
return nil
129125
case 2:
130126
clientHelloFrame, err := extractFrame(conn)
131127
if err != nil {
@@ -144,7 +140,8 @@ func (s *Service) NewConnection(ctx context.Context, conn net.Conn, metadata M.M
144140
if err == nil {
145141
s.logger.TraceContext(ctx, "handshake finished")
146142
handshakeConn.Close()
147-
return s.handler.NewConnection(ctx, bufio.NewCachedConn(newConn(conn), request), metadata)
143+
s.handler.NewConnectionEx(ctx, bufio.NewCachedConn(newConn(conn), request), source, destination, onClose)
144+
return nil
148145
} else if err == os.ErrPermission {
149146
s.logger.WarnContext(ctx, "fallback connection")
150147
hashConn.Fallback()
@@ -247,6 +244,7 @@ func (s *Service) NewConnection(ctx context.Context, conn net.Conn, metadata M.M
247244
return E.Cause(err, "handshake relay")
248245
}
249246
s.logger.TraceContext(ctx, "handshake relay finished")
250-
return s.handler.NewConnection(ctx, bufio.NewCachedConn(newVerifiedConn(conn, hmacAdd, hmacVerify, nil), clientFirstFrame), metadata)
247+
s.handler.NewConnectionEx(ctx, bufio.NewCachedConn(newVerifiedConn(conn, hmacAdd, hmacVerify, nil), clientFirstFrame), source, destination, onClose)
248+
return nil
251249
}
252250
}

0 commit comments

Comments
 (0)