From be2fdb6af6bab03d83839a4b3ea0e01da74ae498 Mon Sep 17 00:00:00 2001 From: Adil H <1284255+didil@users.noreply.github.com> Date: Tue, 8 Oct 2019 16:49:40 +0100 Subject: [PATCH] httpserver: no SetKeepAlivePeriod in openbsd (#2787) * no SetKeepAlivePeriod on openbsd * fix tcpKeepAliveListener.Accept signature --- caddyhttp/httpserver/server.go | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/caddyhttp/httpserver/server.go b/caddyhttp/httpserver/server.go index 3bd434c2f..1fc86fc8d 100644 --- a/caddyhttp/httpserver/server.go +++ b/caddyhttp/httpserver/server.go @@ -554,16 +554,20 @@ type tcpKeepAliveListener struct { } // Accept accepts the connection with a keep-alive enabled. -func (ln tcpKeepAliveListener) Accept() (c net.Conn, err error) { +func (ln tcpKeepAliveListener) Accept() (net.Conn, error) { tc, err := ln.AcceptTCP() if err != nil { - return + return nil, err } if err = tc.SetKeepAlive(true); err != nil { - return + return nil, err } - if err = tc.SetKeepAlivePeriod(3 * time.Minute); err != nil { - return + // OpenBSD has no user-settable per-socket TCP keepalive + // https://github.com/caddyserver/caddy/pull/2787 + if runtime.GOOS != "openbsd" { + if err = tc.SetKeepAlivePeriod(3 * time.Minute); err != nil { + return nil, err + } } return tc, nil }