add confirmation to ReadWriteCloser should preserve message boundary

This commit is contained in:
Shelikhoo 2024-09-11 14:24:26 +01:00 committed by WofWca
parent 0d9bef7794
commit 3a2b2fc969
2 changed files with 21 additions and 6 deletions

View file

@ -7,18 +7,33 @@ import (
"time"
)
type ReadWriteCloserPreservesBoundary interface {
io.ReadWriteCloser
MessageBoundaryPreserved()
}
func ConfirmsReadWriteCloserPreservesMessageBoundary(rwc io.ReadWriteCloser) ReadWriteCloserPreservesBoundary {
return &messageBoundaryPreservedReadWriteCloser{rwc}
}
type messageBoundaryPreservedReadWriteCloser struct {
io.ReadWriteCloser
}
func (m *messageBoundaryPreservedReadWriteCloser) MessageBoundaryPreserved() {}
var errENOSYS = errors.New("not implemented")
func newPacketConnWrapper(localAddr, remoteAddr net.Addr, rwc io.ReadWriteCloser) net.PacketConn {
func newPacketConnWrapper(localAddr, remoteAddr net.Addr, rwc ReadWriteCloserPreservesBoundary) net.PacketConn {
return &packetConnWrapper{
ReadWriteCloser: rwc,
remoteAddr: remoteAddr,
localAddr: localAddr,
ReadWriteCloserPreservesBoundary: rwc,
remoteAddr: remoteAddr,
localAddr: localAddr,
}
}
type packetConnWrapper struct {
io.ReadWriteCloser
ReadWriteCloserPreservesBoundary
remoteAddr net.Addr
localAddr net.Addr
}

View file

@ -345,7 +345,7 @@ func newSession(snowflakes SnowflakeCollector, clientIDCandid turbotunnel.Client
}
log.Println("---- Handler: snowflake assigned ----")
packetConnWrapper := newPacketConnWrapper(dummyAddr{}, dummyAddr{}, conn)
packetConnWrapper := newPacketConnWrapper(dummyAddr{}, dummyAddr{}, ConfirmsReadWriteCloserPreservesMessageBoundary(conn))
return packetConnWrapper, nil
}
pconn := turbotunnel.NewRedialPacketConn(dummyAddr{}, dummyAddr{}, dialContext)