From 2a54490895a087c7de7d489bfab95af9cc859f61 Mon Sep 17 00:00:00 2001 From: xtaci Date: Fri, 10 May 2019 13:45:34 +0800 Subject: [PATCH] socketError stored with stack --- readloop_generic.go | 6 ++++-- readloop_linux.go | 5 +++-- sess.go | 4 ++-- tx_generic.go | 6 ++++-- tx_linux.go | 5 +++-- 5 files changed, 16 insertions(+), 10 deletions(-) diff --git a/readloop_generic.go b/readloop_generic.go index 41a1c63..dd99f03 100644 --- a/readloop_generic.go +++ b/readloop_generic.go @@ -4,6 +4,8 @@ package kcp import ( "sync/atomic" + + "github.com/pkg/errors" ) func (s *UDPSession) readLoop() { @@ -25,7 +27,7 @@ func (s *UDPSession) readLoop() { atomic.AddUint64(&DefaultSnmp.InErrs, 1) } } else { - s.socketError.Store(err) + s.socketError.Store(errors.WithStack(err)) s.Close() return } @@ -42,7 +44,7 @@ func (l *Listener) monitor() { atomic.AddUint64(&DefaultSnmp.InErrs, 1) } } else { - l.socketError.Store(err) + l.socketError.Store(errors.WithStack(err)) l.Close() return } diff --git a/readloop_linux.go b/readloop_linux.go index 53732dc..80c94ca 100644 --- a/readloop_linux.go +++ b/readloop_linux.go @@ -6,6 +6,7 @@ import ( "net" "sync/atomic" + "github.com/pkg/errors" "golang.org/x/net/ipv4" "golang.org/x/net/ipv6" ) @@ -52,7 +53,7 @@ func (s *UDPSession) readLoop() { s.packetInput(msg.Buffers[0][:msg.N]) } } else { - s.socketError.Store(err) + s.socketError.Store(errors.WithStack(err)) s.Close() return } @@ -85,7 +86,7 @@ func (l *Listener) monitor() { } } } else { - l.socketError.Store(err) + s.socketError.Store(errors.WithStack(err)) l.Close() return } diff --git a/sess.go b/sess.go index 465e727..30a17e4 100644 --- a/sess.go +++ b/sess.go @@ -337,7 +337,7 @@ func (s *UDPSession) Close() error { s.l.closeSession(s.remote) } else { // client socket close if err := s.conn.Close(); err != nil { - s.socketError.Store(err) + s.socketError.Store(errors.WithStack(err)) } } close(s.die) @@ -828,7 +828,7 @@ func (l *Listener) Close() (err error) { var once bool l.dieOnce.Do(func() { if err := l.conn.Close(); err != nil { - l.socketError.Store(err) + l.socketError.Store(errors.WithStack(err)) } close(l.die) once = true diff --git a/tx_generic.go b/tx_generic.go index 647905f..daebb28 100644 --- a/tx_generic.go +++ b/tx_generic.go @@ -4,6 +4,8 @@ package kcp import ( "sync/atomic" + + "github.com/pkg/errors" ) func (s *UDPSession) txLoop() { @@ -16,7 +18,7 @@ func (s *UDPSession) txLoop() { nbytes += n xmitBuf.Put(txqueue[k].Buffers[0]) } else { - s.socketError.Store(err) + s.socketError.Store(errors.WithStack(err)) s.Close() return } @@ -39,7 +41,7 @@ func (l *Listener) txLoop() { nbytes += n xmitBuf.Put(txqueue[k].Buffers[0]) } else { - l.socketError.Store(err) + l.socketError.Store(errors.WithStack(err)) l.Close() return } diff --git a/tx_linux.go b/tx_linux.go index 1de1c38..8e63954 100644 --- a/tx_linux.go +++ b/tx_linux.go @@ -6,6 +6,7 @@ import ( "net" "sync/atomic" + "github.com/pkg/errors" "golang.org/x/net/ipv4" "golang.org/x/net/ipv6" ) @@ -30,7 +31,7 @@ func (s *UDPSession) txLoop() { if n, err := conn.WriteBatch(vec, 0); err == nil { vec = vec[n:] } else { - s.socketError.Store(err) + s.socketError.Store(errors.WithStack(err)) s.Close() return } @@ -70,7 +71,7 @@ func (l *Listener) txLoop() { if n, err := conn.WriteBatch(vec, 0); err == nil { vec = vec[n:] } else { - l.socketError.Store(err) + s.socketError.Store(errors.WithStack(err)) l.Close() return }