Unverified Commit 1f33b205 authored by Xin.Zh's avatar Xin.Zh Committed by GitHub

Merge pull request #72 from Mulavar/fix/timeout

fix(*): revert 17b08d to fix timeout error
parents 5b7d8d26 d711a4ba
...@@ -54,8 +54,8 @@ type gettyConn struct { ...@@ -54,8 +54,8 @@ type gettyConn struct {
active uatomic.Int64 // last active, in milliseconds active uatomic.Int64 // last active, in milliseconds
rTimeout time.Duration // network current limiting rTimeout time.Duration // network current limiting
wTimeout time.Duration wTimeout time.Duration
rLastDeadline int64 // lastest network read time rLastDeadline time.Time // last network read time
wLastDeadline int64 // lastest network write time wLastDeadline time.Time // last network write time
local string // local address local string // local address
peer string // peer address peer string // peer address
ss Session ss Session
...@@ -241,12 +241,12 @@ func (t *gettyTCPConn) recv(p []byte) (int, error) { ...@@ -241,12 +241,12 @@ func (t *gettyTCPConn) recv(p []byte) (int, error) {
// of the last read deadline exceeded. // of the last read deadline exceeded.
// See https://github.com/golang/go/issues/15133 for details. // See https://github.com/golang/go/issues/15133 for details.
currentTime = time.Now() currentTime = time.Now()
if currentTime.Unix()-t.rLastDeadline > int64(t.rTimeout>>2) { if currentTime.Sub(t.rLastDeadline) > t.rTimeout>>2 {
if err = t.conn.SetReadDeadline(currentTime.Add(t.rTimeout)); err != nil { if err = t.conn.SetReadDeadline(currentTime.Add(t.rTimeout)); err != nil {
// just a timeout error // just a timeout error
return 0, perrors.WithStack(err) return 0, perrors.WithStack(err)
} }
t.rLastDeadline = currentTime.Unix() t.rLastDeadline = currentTime
} }
} }
...@@ -271,11 +271,11 @@ func (t *gettyTCPConn) send(pkg interface{}) (int, error) { ...@@ -271,11 +271,11 @@ func (t *gettyTCPConn) send(pkg interface{}) (int, error) {
// of the last write deadline exceeded. // of the last write deadline exceeded.
// See https://github.com/golang/go/issues/15133 for details. // See https://github.com/golang/go/issues/15133 for details.
currentTime = time.Now() currentTime = time.Now()
if currentTime.Unix()-t.wLastDeadline > int64(t.wTimeout>>2) { if currentTime.Sub(t.wLastDeadline) > t.wTimeout>>2 {
if err = t.conn.SetWriteDeadline(currentTime.Add(t.wTimeout)); err != nil { if err = t.conn.SetWriteDeadline(currentTime.Add(t.wTimeout)); err != nil {
return 0, perrors.WithStack(err) return 0, perrors.WithStack(err)
} }
t.wLastDeadline = currentTime.Unix() t.wLastDeadline = currentTime
} }
} }
...@@ -392,11 +392,11 @@ func (u *gettyUDPConn) recv(p []byte) (int, *net.UDPAddr, error) { ...@@ -392,11 +392,11 @@ func (u *gettyUDPConn) recv(p []byte) (int, *net.UDPAddr, error) {
// of the last read deadline exceeded. // of the last read deadline exceeded.
// See https://github.com/golang/go/issues/15133 for details. // See https://github.com/golang/go/issues/15133 for details.
currentTime := time.Now() currentTime := time.Now()
if currentTime.Unix()-u.rLastDeadline > int64(u.rTimeout>>2) { if currentTime.Sub(u.rLastDeadline) > u.rTimeout>>2 {
if err := u.conn.SetReadDeadline(currentTime.Add(u.rTimeout)); err != nil { if err := u.conn.SetReadDeadline(currentTime.Add(u.rTimeout)); err != nil {
return 0, nil, perrors.WithStack(err) return 0, nil, perrors.WithStack(err)
} }
u.rLastDeadline = currentTime.Unix() u.rLastDeadline = currentTime
} }
} }
...@@ -439,11 +439,11 @@ func (u *gettyUDPConn) send(udpCtx interface{}) (int, error) { ...@@ -439,11 +439,11 @@ func (u *gettyUDPConn) send(udpCtx interface{}) (int, error) {
// of the last write deadline exceeded. // of the last write deadline exceeded.
// See https://github.com/golang/go/issues/15133 for details. // See https://github.com/golang/go/issues/15133 for details.
currentTime = time.Now() currentTime = time.Now()
if currentTime.Unix()-u.wLastDeadline > int64(u.wTimeout>>2) { if currentTime.Sub(u.wLastDeadline) > u.wTimeout>>2 {
if err = u.conn.SetWriteDeadline(currentTime.Add(u.wTimeout)); err != nil { if err = u.conn.SetWriteDeadline(currentTime.Add(u.wTimeout)); err != nil {
return 0, perrors.WithStack(err) return 0, perrors.WithStack(err)
} }
u.wLastDeadline = currentTime.Unix() u.wLastDeadline = currentTime
} }
} }
...@@ -564,11 +564,11 @@ func (w *gettyWSConn) updateWriteDeadline() error { ...@@ -564,11 +564,11 @@ func (w *gettyWSConn) updateWriteDeadline() error {
// of the last write deadline exceeded. // of the last write deadline exceeded.
// See https://github.com/golang/go/issues/15133 for details. // See https://github.com/golang/go/issues/15133 for details.
currentTime = time.Now() currentTime = time.Now()
if currentTime.Unix()-w.wLastDeadline > int64(w.wTimeout>>2) { if currentTime.Sub(w.wLastDeadline) > w.wTimeout>>2 {
if err = w.conn.SetWriteDeadline(currentTime.Add(w.wTimeout)); err != nil { if err = w.conn.SetWriteDeadline(currentTime.Add(w.wTimeout)); err != nil {
return perrors.WithStack(err) return perrors.WithStack(err)
} }
w.wLastDeadline = currentTime.Unix() w.wLastDeadline = currentTime
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment