diff --git a/transport/v2raygrpclite/conn.go b/transport/v2raygrpclite/conn.go index 9d361e4b..4a599447 100644 --- a/transport/v2raygrpclite/conn.go +++ b/transport/v2raygrpclite/conn.go @@ -153,13 +153,31 @@ func (c *GunConn) RemoteAddr() net.Addr { } func (c *GunConn) SetDeadline(t time.Time) error { - return os.ErrInvalid + responseWriter, loaded := c.writer.(interface { + SetWriteDeadline(time.Time) error + }) + if !loaded { + return os.ErrInvalid + } + return responseWriter.SetWriteDeadline(t) } func (c *GunConn) SetReadDeadline(t time.Time) error { - return os.ErrInvalid + responseWriter, loaded := c.writer.(interface { + SetReadDeadline(time.Time) error + }) + if !loaded { + return os.ErrInvalid + } + return responseWriter.SetReadDeadline(t) } func (c *GunConn) SetWriteDeadline(t time.Time) error { - return os.ErrInvalid + responseWriter, loaded := c.writer.(interface { + SetWriteDeadline(time.Time) error + }) + if !loaded { + return os.ErrInvalid + } + return responseWriter.SetWriteDeadline(t) } diff --git a/transport/v2rayhttp/conn.go b/transport/v2rayhttp/conn.go index 9bd1a5de..67f4cd1f 100644 --- a/transport/v2rayhttp/conn.go +++ b/transport/v2rayhttp/conn.go @@ -67,15 +67,33 @@ func (c *HTTPConn) RemoteAddr() net.Addr { } func (c *HTTPConn) SetDeadline(t time.Time) error { - return os.ErrInvalid + responseWriter, loaded := c.writer.(interface { + SetWriteDeadline(time.Time) error + }) + if !loaded { + return os.ErrInvalid + } + return responseWriter.SetWriteDeadline(t) } func (c *HTTPConn) SetReadDeadline(t time.Time) error { - return os.ErrInvalid + responseWriter, loaded := c.writer.(interface { + SetReadDeadline(time.Time) error + }) + if !loaded { + return os.ErrInvalid + } + return responseWriter.SetReadDeadline(t) } func (c *HTTPConn) SetWriteDeadline(t time.Time) error { - return os.ErrInvalid + responseWriter, loaded := c.writer.(interface { + SetWriteDeadline(time.Time) error + }) + if !loaded { + return os.ErrInvalid + } + return responseWriter.SetWriteDeadline(t) } type ServerHTTPConn struct {