lib/connections: Fix KCP from locking up the service (fixes #4072)

This commit is contained in:
Audrius Butkevicius 2017-05-21 19:48:34 +01:00 committed by Jakob Borg
parent 2c10beed0b
commit 51518490c6
2 changed files with 5 additions and 0 deletions

View File

@ -61,11 +61,14 @@ func (d *kcpDialer) Dial(id protocol.DeviceID, uri *url.URL) (internalConn, erro
conn.Close() conn.Close()
return internalConn{}, err return internalConn{}, err
} }
ses.SetDeadline(time.Now().Add(10 * time.Second))
stream, err := ses.OpenStream() stream, err := ses.OpenStream()
if err != nil { if err != nil {
ses.Close() ses.Close()
return internalConn{}, err return internalConn{}, err
} }
ses.SetDeadline(time.Time{})
tc := tls.Client(&sessionClosingStream{stream, ses}, d.tlsCfg) tc := tls.Client(&sessionClosingStream{stream, ses}, d.tlsCfg)
tc.SetDeadline(time.Now().Add(time.Second * 10)) tc.SetDeadline(time.Now().Add(time.Second * 10))

View File

@ -123,12 +123,14 @@ func (t *kcpListener) Serve() {
continue continue
} }
ses.SetDeadline(time.Now().Add(10 * time.Second))
stream, err := ses.AcceptStream() stream, err := ses.AcceptStream()
if err != nil { if err != nil {
l.Debugln("smux accept:", err) l.Debugln("smux accept:", err)
ses.Close() ses.Close()
continue continue
} }
ses.SetDeadline(time.Time{})
tc := tls.Server(&sessionClosingStream{stream, ses}, t.tlsCfg) tc := tls.Server(&sessionClosingStream{stream, ses}, t.tlsCfg)
tc.SetDeadline(time.Now().Add(time.Second * 10)) tc.SetDeadline(time.Now().Add(time.Second * 10))