From ce1ddc400f88eb7cd0668715657254d7aec12c0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Fri, 11 Nov 2022 22:08:20 +0800 Subject: [PATCH] Support x/h2 v0.2.0 deadline --- transport/v2raygrpclite/conn.go | 24 +++++++++++++++++++++--- transport/v2rayhttp/conn.go | 24 +++++++++++++++++++++--- 2 files changed, 42 insertions(+), 6 deletions(-) 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 {