瀏覽代碼

Support x/h2 v0.2.0 deadline

世界 2 年之前
父節點
當前提交
ce1ddc400f
共有 2 個文件被更改,包括 42 次插入6 次删除
  1. 21 3
      transport/v2raygrpclite/conn.go
  2. 21 3
      transport/v2rayhttp/conn.go

+ 21 - 3
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)
 }

+ 21 - 3
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 {