chore: better parseAddr

This commit is contained in:
wwqgtxx
2023-01-17 15:41:51 +08:00
parent 37eca8af24
commit ba6163574e
8 changed files with 40 additions and 33 deletions

View File

@ -361,7 +361,6 @@ func (t *clientImpl) ListenPacketWithDialer(ctx context.Context, metadata *C.Met
pc := &quicStreamPacketConn{
connId: connId,
quicConn: quicConn,
lAddr: quicConn.LocalAddr(),
inputConn: N.NewBufferedConn(pipe2),
udpRelayMode: t.UdpRelayMode,
maxUdpRelayPacketSize: t.MaxUdpRelayPacketSize,

View File

@ -109,7 +109,6 @@ var _ net.Conn = &quicStreamConn{}
type quicStreamPacketConn struct {
connId uint32
quicConn quic.Connection
lAddr net.Addr
inputConn *N.BufferedConn
udpRelayMode string
@ -251,7 +250,7 @@ func (q *quicStreamPacketConn) WriteTo(p []byte, addr net.Addr) (n int, err erro
}
func (q *quicStreamPacketConn) LocalAddr() net.Addr {
return q.lAddr
return q.quicConn.LocalAddr()
}
var _ net.PacketConn = &quicStreamPacketConn{}

View File

@ -140,7 +140,6 @@ func (s *serverHandler) parsePacket(packet Packet, udpRelayMode string) (err err
pc := &quicStreamPacketConn{
connId: assocId,
quicConn: s.quicConn,
lAddr: s.quicConn.LocalAddr(),
inputConn: nil,
udpRelayMode: udpRelayMode,
maxUdpRelayPacketSize: s.MaxUdpRelayPacketSize,
@ -152,12 +151,12 @@ func (s *serverHandler) parsePacket(packet Packet, udpRelayMode string) (err err
return s.HandleUdpFn(packet.ADDR.SocksAddr(), &serverUDPPacket{
pc: pc,
packet: &packet,
rAddr: s.genServerAssocIdAddr(assocId),
rAddr: s.genServerAssocIdAddr(assocId, s.quicConn.RemoteAddr()),
})
}
func (s *serverHandler) genServerAssocIdAddr(assocId uint32) net.Addr {
return ServerAssocIdAddr(fmt.Sprintf("tuic-%s-%d", s.uuid.String(), assocId))
func (s *serverHandler) genServerAssocIdAddr(assocId uint32, addr net.Addr) net.Addr {
return &ServerAssocIdAddr{assocId: fmt.Sprintf("tuic-%s-%d", s.uuid.String(), assocId), addr: addr}
}
func (s *serverHandler) handleStream() (err error) {
@ -274,14 +273,21 @@ func (s *serverHandler) handleUniStream() (err error) {
}
}
type ServerAssocIdAddr string
type ServerAssocIdAddr struct {
assocId string
addr net.Addr
}
func (a ServerAssocIdAddr) Network() string {
return "ServerAssocIdAddr"
}
func (a ServerAssocIdAddr) String() string {
return string(a)
return a.assocId
}
func (a ServerAssocIdAddr) RawAddr() net.Addr {
return a.addr
}
type serverUDPPacket struct {