chore: Add read deadline implementation

This commit is contained in:
wwqgtxx
2023-04-09 22:58:05 +08:00
parent 20b0af9a03
commit 6c76312e5c
6 changed files with 24 additions and 7 deletions

View File

@ -6,6 +6,7 @@ import (
"github.com/sagernet/sing/common"
"github.com/sagernet/sing/common/bufio"
"github.com/sagernet/sing/common/bufio/deadline"
"github.com/sagernet/sing/common/network"
)
@ -17,6 +18,20 @@ type ExtendedConn = network.ExtendedConn
type ExtendedWriter = network.ExtendedWriter
type ExtendedReader = network.ExtendedReader
func NewDeadlineConn(conn net.Conn) ExtendedConn {
if dc, ok := conn.(*deadline.Conn); ok {
return dc
}
return deadline.NewConn(conn)
}
func NewDeadlinePacketConn(pc net.PacketConn) net.PacketConn {
if dpc, ok := pc.(*deadline.PacketConn); ok {
return dpc
}
return deadline.NewPacketConn(bufio.NewPacketConn(pc))
}
func NeedHandshake(conn any) bool {
if earlyConn, isEarlyConn := common.Cast[network.EarlyConn](conn); isEarlyConn && earlyConn.NeedHandshake() {
return true