chore: better tuicV5 deFragger

This commit is contained in:
wwqgtxx
2023-08-03 23:07:30 +08:00
parent b0fed73236
commit 191243a1d2
5 changed files with 105 additions and 50 deletions

View File

@@ -103,7 +103,7 @@ func (q *quicStreamPacketConn) ReadFrom(p []byte) (n int, addr net.Addr, err err
if err != nil {
return
}
if packetPtr := q.deFragger.Feed(packet); packetPtr != nil {
if packetPtr := q.deFragger.Feed(&packet); packetPtr != nil {
n = copy(p, packet.DATA)
addr = packetPtr.ADDR.UDPAddr()
return
@@ -123,7 +123,7 @@ func (q *quicStreamPacketConn) WaitReadFrom() (data []byte, put func(), addr net
if err != nil {
return
}
if packetPtr := q.deFragger.Feed(packet); packetPtr != nil {
if packetPtr := q.deFragger.Feed(&packet); packetPtr != nil {
data = packetPtr.DATA
addr = packetPtr.ADDR.UDPAddr()
return
@@ -178,16 +178,14 @@ func (q *quicStreamPacketConn) WriteTo(p []byte, addr net.Addr) (n int, err erro
default: // native
if len(p) > q.maxUdpRelayPacketSize {
err = fragWriteNative(q.quicConn, packet, buf, q.maxUdpRelayPacketSize)
} else {
err = packet.WriteTo(buf)
if err != nil {
return
}
data := buf.Bytes()
err = q.quicConn.SendMessage(data)
}
err = packet.WriteTo(buf)
if err != nil {
return
}
data := buf.Bytes()
err = q.quicConn.SendMessage(data)
var tooLarge quic.ErrMessageTooLarge
if errors.As(err, &tooLarge) {