mirror of
https://github.com/MetaCubeX/mihomo.git
synced 2026-02-26 16:57:08 +00:00
chore: dns outbound support tcp
This commit is contained in:
@@ -26,6 +26,11 @@ type Conn struct {
|
||||
resultCh chan *connReadResult
|
||||
}
|
||||
|
||||
func IsConn(conn any) bool {
|
||||
_, ok := conn.(*Conn)
|
||||
return ok
|
||||
}
|
||||
|
||||
func NewConn(conn net.Conn) *Conn {
|
||||
c := &Conn{
|
||||
ExtendedConn: bufio.NewExtendedConn(conn),
|
||||
|
||||
@@ -215,3 +215,8 @@ func (p *pipe) waitReadBuffer() (buffer *buf.Buffer, err error) {
|
||||
return nil, os.ErrDeadlineExceeded
|
||||
}
|
||||
}
|
||||
|
||||
func IsPipe(conn any) bool {
|
||||
_, ok := conn.(*pipe)
|
||||
return ok
|
||||
}
|
||||
|
||||
@@ -23,6 +23,12 @@ type ExtendedReader = network.ExtendedReader
|
||||
var WriteBuffer = bufio.WriteBuffer
|
||||
|
||||
func NewDeadlineConn(conn net.Conn) ExtendedConn {
|
||||
if deadline.IsPipe(conn) || deadline.IsPipe(network.UnwrapReader(conn)) {
|
||||
return NewExtendedConn(conn) // pipe always have correctly deadline implement
|
||||
}
|
||||
if deadline.IsConn(conn) || deadline.IsConn(network.UnwrapReader(conn)) {
|
||||
return NewExtendedConn(conn) // was a *deadline.Conn
|
||||
}
|
||||
return deadline.NewConn(conn)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user