Skip to content

Commit 920909d

Browse files
committed
Fix read addr
1 parent 246b446 commit 920909d

File tree

10 files changed

+15
-15
lines changed

10 files changed

+15
-15
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ go 1.23.0
55
require (
66
github.com/gofrs/uuid/v5 v5.3.2
77
github.com/sagernet/quic-go v0.52.0-beta.1
8-
github.com/sagernet/sing v0.6.7
8+
github.com/sagernet/sing v0.7.7
99
golang.org/x/crypto v0.37.0
1010
golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842
1111
)

go.sum

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,10 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
66
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
77
github.com/quic-go/qpack v0.5.1 h1:giqksBPnT/HDtZ6VhtFKgoLOWmlyo9Ei6u9PqzIMbhI=
88
github.com/quic-go/qpack v0.5.1/go.mod h1:+PC4XFrEskIVkcLzpEkbLqq1uCoxPhQuvK5rH1ZgaEg=
9-
github.com/sagernet/quic-go v0.42.1-0.20250523031117-ed6d0d51b937 h1:BKQT744IEARC/ld3O0S7p9FRaW8c/Am0cn106lKMJHE=
10-
github.com/sagernet/quic-go v0.42.1-0.20250523031117-ed6d0d51b937/go.mod h1:OV+V5kEBb8kJS7k29MzDu6oj9GyMc7HA07sE1tedxz4=
119
github.com/sagernet/quic-go v0.52.0-beta.1 h1:hWkojLg64zjV+MJOvJU/kOeWndm3tiEfBLx5foisszs=
1210
github.com/sagernet/quic-go v0.52.0-beta.1/go.mod h1:OV+V5kEBb8kJS7k29MzDu6oj9GyMc7HA07sE1tedxz4=
13-
github.com/sagernet/sing v0.6.7 h1:NIWBLZ9AUWDXAQBKGleKwsitbQrI9M0nqoheXhUKnrI=
14-
github.com/sagernet/sing v0.6.7/go.mod h1:ARkL0gM13/Iv5VCZmci/NuoOlePoIsW0m7BWfln/Hak=
11+
github.com/sagernet/sing v0.7.7 h1:o46FzVZS+wKbBMEkMEdEHoVZxyM9jvfRpKXc7pEgS/c=
12+
github.com/sagernet/sing v0.7.7/go.mod h1:ARkL0gM13/Iv5VCZmci/NuoOlePoIsW0m7BWfln/Hak=
1513
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
1614
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
1715
golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE=

hysteria/packet.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ func (c *udpPacketConn) ReadPacket(buffer *buf.Buffer) (destination M.Socksaddr,
151151
select {
152152
case p := <-c.data:
153153
_, err = buffer.ReadOnceFrom(p.data)
154-
destination = M.ParseSocksaddrHostPort(p.host, p.port)
154+
destination = M.ParseSocksaddrHostPort(p.host, p.port).Unwrap()
155155
p.releaseMessage()
156156
return
157157
case <-c.ctx.Done():
@@ -165,7 +165,7 @@ func (c *udpPacketConn) ReadFrom(p []byte) (n int, addr net.Addr, err error) {
165165
select {
166166
case pkt := <-c.data:
167167
n = copy(p, pkt.data.Bytes())
168-
destination := M.ParseSocksaddrHostPort(pkt.host, pkt.port)
168+
destination := M.ParseSocksaddrHostPort(pkt.host, pkt.port).Unwrap()
169169
if destination.IsFqdn() {
170170
addr = destination
171171
} else {

hysteria/packet_wait.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ func (c *udpPacketConn) InitializeReadWaiter(options N.ReadWaitOptions) (needCop
1717
func (c *udpPacketConn) WaitReadPacket() (buffer *buf.Buffer, destination M.Socksaddr, err error) {
1818
select {
1919
case p := <-c.data:
20-
destination = M.ParseSocksaddrHostPort(p.host, p.port)
20+
destination = M.ParseSocksaddrHostPort(p.host, p.port).Unwrap()
2121
if c.readWaitOptions.NeedHeadroom() {
2222
buffer = c.readWaitOptions.NewPacketBuffer()
2323
_, err = buffer.Write(p.data.Bytes())

hysteria/service.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ func (s *serverSession[U]) handleStream(stream quic.Stream) error {
243243
}
244244
ctx := auth.ContextWithUser(s.ctx, s.authUser)
245245
if !request.UDP {
246-
s.handler.NewConnectionEx(ctx, &serverConn{Stream: stream}, M.SocksaddrFromNet(s.quicConn.RemoteAddr()).Unwrap(), M.ParseSocksaddrHostPort(request.Host, request.Port), nil)
246+
s.handler.NewConnectionEx(ctx, &serverConn{Stream: stream}, M.SocksaddrFromNet(s.quicConn.RemoteAddr()).Unwrap(), M.ParseSocksaddrHostPort(request.Host, request.Port).Unwrap(), nil)
247247
} else {
248248
if s.udpDisabled {
249249
return WriteServerResponse(stream, ServerResponse{
@@ -274,7 +274,7 @@ func (s *serverSession[U]) handleStream(stream quic.Stream) error {
274274
return err
275275
}
276276
newCtx, newConn := canceler.NewPacketConn(udpConn.ctx, udpConn, s.udpTimeout)
277-
go s.handler.NewPacketConnectionEx(newCtx, newConn, M.SocksaddrFromNet(s.quicConn.RemoteAddr()).Unwrap(), M.ParseSocksaddrHostPort(request.Host, request.Port), nil)
277+
go s.handler.NewPacketConnectionEx(newCtx, newConn, M.SocksaddrFromNet(s.quicConn.RemoteAddr()).Unwrap(), M.ParseSocksaddrHostPort(request.Host, request.Port).Unwrap(), nil)
278278
holdBuffer := make([]byte, 1024)
279279
for {
280280
_, hErr := stream.Read(holdBuffer)

hysteria2/packet.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ func (c *udpPacketConn) ReadPacket(buffer *buf.Buffer) (destination M.Socksaddr,
148148
select {
149149
case p := <-c.data:
150150
_, err = buffer.ReadOnceFrom(p.data)
151-
destination = M.ParseSocksaddr(p.destination)
151+
destination = M.ParseSocksaddr(p.destination).Unwrap()
152152
p.releaseMessage()
153153
return
154154
case <-c.ctx.Done():
@@ -162,7 +162,7 @@ func (c *udpPacketConn) ReadFrom(p []byte) (n int, addr net.Addr, err error) {
162162
select {
163163
case pkt := <-c.data:
164164
n = copy(p, pkt.data.Bytes())
165-
destination := M.ParseSocksaddr(pkt.destination)
165+
destination := M.ParseSocksaddr(pkt.destination).Unwrap()
166166
if destination.IsFqdn() {
167167
addr = destination
168168
} else {

hysteria2/packet_wait.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ func (c *udpPacketConn) InitializeReadWaiter(options N.ReadWaitOptions) (needCop
1717
func (c *udpPacketConn) WaitReadPacket() (buffer *buf.Buffer, destination M.Socksaddr, err error) {
1818
select {
1919
case p := <-c.data:
20-
destination = M.ParseSocksaddr(p.destination)
20+
destination = M.ParseSocksaddr(p.destination).Unwrap()
2121
if c.readWaitOptions.NeedHeadroom() {
2222
buffer = c.readWaitOptions.NewPacketBuffer()
2323
_, err = buffer.Write(p.data.Bytes())

hysteria2/service.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ func (s *serverSession[U]) handleStream(stream quic.Stream) error {
270270
if err != nil {
271271
return E.New("read TCP request")
272272
}
273-
s.handler.NewConnectionEx(auth.ContextWithUser(s.ctx, s.authUser), &serverConn{Stream: stream}, M.SocksaddrFromNet(s.quicConn.RemoteAddr()).Unwrap(), M.ParseSocksaddr(destinationString), nil)
273+
s.handler.NewConnectionEx(auth.ContextWithUser(s.ctx, s.authUser), &serverConn{Stream: stream}, M.SocksaddrFromNet(s.quicConn.RemoteAddr()).Unwrap(), M.ParseSocksaddr(destinationString).Unwrap(), nil)
274274
return nil
275275
}
276276

hysteria2/service_packet.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ func (s *serverSession[U]) handleUDPMessage(message *udpMessage) {
4949
s.udpConnMap[message.sessionID] = udpConn
5050
s.udpAccess.Unlock()
5151
newCtx, newConn := canceler.NewPacketConn(udpConn.ctx, udpConn, s.udpTimeout)
52-
go s.handler.NewPacketConnectionEx(newCtx, newConn, M.SocksaddrFromNet(s.quicConn.RemoteAddr()).Unwrap(), M.ParseSocksaddr(message.destination), nil)
52+
go s.handler.NewPacketConnectionEx(newCtx, newConn, M.SocksaddrFromNet(s.quicConn.RemoteAddr()).Unwrap(), M.ParseSocksaddr(message.destination).Unwrap(), nil)
5353
}
5454
udpConn.inputPacket(message)
5555
}

tuic/packet.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -466,6 +466,7 @@ func readUDPMessage(message *udpMessage, reader io.Reader) error {
466466
if err != nil {
467467
return err
468468
}
469+
message.destination = message.destination.Unwrap()
469470
message.data = buf.NewSize(int(dataLength))
470471
_, err = message.data.ReadFullFrom(reader, message.data.FreeLen())
471472
if err != nil {
@@ -501,6 +502,7 @@ func decodeUDPMessage(message *udpMessage, data []byte) error {
501502
if err != nil {
502503
return err
503504
}
505+
message.destination = message.destination.Unwrap()
504506
if reader.Len() != int(dataLength) {
505507
return io.ErrUnexpectedEOF
506508
}

0 commit comments

Comments
 (0)