From 51518490c6da3d13136a7d79906b0febb17ba0af Mon Sep 17 00:00:00 2001 From: Audrius Butkevicius Date: Sun, 21 May 2017 19:48:34 +0100 Subject: [PATCH] lib/connections: Fix KCP from locking up the service (fixes #4072) --- lib/connections/kcp_dial.go | 3 +++ lib/connections/kcp_listen.go | 2 ++ 2 files changed, 5 insertions(+) diff --git a/lib/connections/kcp_dial.go b/lib/connections/kcp_dial.go index 280641c95..d94843f22 100644 --- a/lib/connections/kcp_dial.go +++ b/lib/connections/kcp_dial.go @@ -61,11 +61,14 @@ func (d *kcpDialer) Dial(id protocol.DeviceID, uri *url.URL) (internalConn, erro conn.Close() return internalConn{}, err } + + ses.SetDeadline(time.Now().Add(10 * time.Second)) stream, err := ses.OpenStream() if err != nil { ses.Close() return internalConn{}, err } + ses.SetDeadline(time.Time{}) tc := tls.Client(&sessionClosingStream{stream, ses}, d.tlsCfg) tc.SetDeadline(time.Now().Add(time.Second * 10)) diff --git a/lib/connections/kcp_listen.go b/lib/connections/kcp_listen.go index 99cbf7b7a..c1f4f0bc8 100644 --- a/lib/connections/kcp_listen.go +++ b/lib/connections/kcp_listen.go @@ -123,12 +123,14 @@ func (t *kcpListener) Serve() { continue } + ses.SetDeadline(time.Now().Add(10 * time.Second)) stream, err := ses.AcceptStream() if err != nil { l.Debugln("smux accept:", err) ses.Close() continue } + ses.SetDeadline(time.Time{}) tc := tls.Server(&sessionClosingStream{stream, ses}, t.tlsCfg) tc.SetDeadline(time.Now().Add(time.Second * 10))