mirror of
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake.git
synced 2025-10-13 20:11:19 -04:00
add confirmation to ReadWriteCloser should preserve message boundary
This commit is contained in:
parent
0d9bef7794
commit
3a2b2fc969
2 changed files with 21 additions and 6 deletions
|
@ -7,18 +7,33 @@ import (
|
||||||
"time"
|
"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")
|
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{
|
return &packetConnWrapper{
|
||||||
ReadWriteCloser: rwc,
|
ReadWriteCloserPreservesBoundary: rwc,
|
||||||
remoteAddr: remoteAddr,
|
remoteAddr: remoteAddr,
|
||||||
localAddr: localAddr,
|
localAddr: localAddr,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
type packetConnWrapper struct {
|
type packetConnWrapper struct {
|
||||||
io.ReadWriteCloser
|
ReadWriteCloserPreservesBoundary
|
||||||
remoteAddr net.Addr
|
remoteAddr net.Addr
|
||||||
localAddr net.Addr
|
localAddr net.Addr
|
||||||
}
|
}
|
||||||
|
|
|
@ -345,7 +345,7 @@ func newSession(snowflakes SnowflakeCollector, clientIDCandid turbotunnel.Client
|
||||||
}
|
}
|
||||||
log.Println("---- Handler: snowflake assigned ----")
|
log.Println("---- Handler: snowflake assigned ----")
|
||||||
|
|
||||||
packetConnWrapper := newPacketConnWrapper(dummyAddr{}, dummyAddr{}, conn)
|
packetConnWrapper := newPacketConnWrapper(dummyAddr{}, dummyAddr{}, ConfirmsReadWriteCloserPreservesMessageBoundary(conn))
|
||||||
return packetConnWrapper, nil
|
return packetConnWrapper, nil
|
||||||
}
|
}
|
||||||
pconn := turbotunnel.NewRedialPacketConn(dummyAddr{}, dummyAddr{}, dialContext)
|
pconn := turbotunnel.NewRedialPacketConn(dummyAddr{}, dummyAddr{}, dialContext)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue