Przeglądaj źródła

Support x/h2 v0.2.0 deadline

世界 2 lat temu
rodzic
commit
ce1ddc400f
2 zmienionych plików z 42 dodań i 6 usunięć
  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 {
 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 {
 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 {
 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 {
 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 {
 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 {
 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 {
 type ServerHTTPConn struct {