cityuni-webserver/cmd/wappcityuni/timeout-listener.go
Captain ALM a61c28bc5b
All checks were successful
continuous-integration/drone/push Build is passing
Add timeout support for FCGI TCP connections.
2022-07-15 00:45:01 +01:00

50 lines
830 B
Go

package main
import (
"net"
"time"
)
type tListener struct {
net.Listener
ReadTimeout time.Duration
WriteTimeout time.Duration
}
func (l *tListener) Accept() (net.Conn, error) {
c, err := l.Listener.Accept()
if err != nil {
return nil, err
}
tc := &tConn{
Conn: c,
ReadTimeout: l.ReadTimeout,
WriteTimeout: l.WriteTimeout,
}
return tc, nil
}
type tConn struct {
net.Conn
ReadTimeout time.Duration
WriteTimeout time.Duration
}
func (c *tConn) Read(b []byte) (n int, err error) {
err = c.Conn.SetReadDeadline(time.Now().Add(c.ReadTimeout))
if err != nil {
return 0, err
}
n, err = c.Conn.Read(b)
return
}
func (c *tConn) Write(b []byte) (n int, err error) {
err = c.Conn.SetWriteDeadline(time.Now().Add(c.WriteTimeout))
if err != nil {
return
}
n, err = c.Conn.Write(b)
return
}