1
0
mirror of https://github.com/kataras/iris.git synced 2025-12-24 05:17:03 +00:00

New iris.WithKeepAlive(time.Duration) Configurator is added as a helper to enable TCP listener featured with keep-alive

This commit is contained in:
Gerasimos (Makis) Maropoulos
2021-01-31 21:24:15 +02:00
parent eec0cb8d51
commit 5994fd5d4e
9 changed files with 62 additions and 15 deletions

View File

@@ -21,6 +21,7 @@ import (
// A raw copy of standar library.
type tcpKeepAliveListener struct {
*net.TCPListener
keepAliveDur time.Duration
}
// Accept accepts tcp connections aka clients.
@@ -32,7 +33,7 @@ func (l tcpKeepAliveListener) Accept() (net.Conn, error) {
if err = tc.SetKeepAlive(true); err != nil {
return tc, err
}
if err = tc.SetKeepAlivePeriod(3 * time.Minute); err != nil {
if err = tc.SetKeepAlivePeriod(l.keepAliveDur); err != nil {
return tc, err
}
return tc, nil
@@ -49,7 +50,7 @@ func TCP(addr string, reuse bool) (net.Listener, error) {
}
// TCPKeepAlive returns a new tcp keep alive Listener and an error on failure.
func TCPKeepAlive(addr string, reuse bool) (ln net.Listener, err error) {
func TCPKeepAlive(addr string, reuse bool, keepAliveDur time.Duration) (ln net.Listener, err error) {
// if strings.HasPrefix(addr, "127.0.0.1") {
// // it's ipv4, use ipv4 tcp listener instead of the default ipv6. Don't.
// ln, err = net.Listen("tcp4", addr)
@@ -61,7 +62,7 @@ func TCPKeepAlive(addr string, reuse bool) (ln net.Listener, err error) {
if err != nil {
return nil, err
}
return tcpKeepAliveListener{ln.(*net.TCPListener)}, nil
return tcpKeepAliveListener{ln.(*net.TCPListener), keepAliveDur}, nil
}
// UNIX returns a new unix(file) Listener.