mirror of
https://github.com/soypat/lneto.git
synced 2026-08-22 15:39:06 +00:00
Conn: fixed double mutex lock in SetDeadline
This commit is contained in:
+14
-4
@@ -246,7 +246,7 @@ func (conn *Conn) checkPipeOpen() error {
|
|||||||
if conn.abortErr != nil {
|
if conn.abortErr != nil {
|
||||||
return conn.abortErr
|
return conn.abortErr
|
||||||
}
|
}
|
||||||
state := conn.State()
|
state := conn.h.State()
|
||||||
if state.IsClosed() {
|
if state.IsClosed() {
|
||||||
return net.ErrClosed
|
return net.ErrClosed
|
||||||
}
|
}
|
||||||
@@ -332,11 +332,11 @@ func (conn *Conn) reset(h Handler) {
|
|||||||
func (conn *Conn) SetDeadline(t time.Time) error {
|
func (conn *Conn) SetDeadline(t time.Time) error {
|
||||||
conn.mu.Lock()
|
conn.mu.Lock()
|
||||||
defer conn.mu.Unlock()
|
defer conn.mu.Unlock()
|
||||||
err := conn.SetReadDeadline(t)
|
err := conn.setReadDeadline(t)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return conn.SetWriteDeadline(t)
|
return conn.setWriteDeadline(t)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetReadDeadline sets the deadline for future Read calls
|
// SetReadDeadline sets the deadline for future Read calls
|
||||||
@@ -344,7 +344,11 @@ func (conn *Conn) SetDeadline(t time.Time) error {
|
|||||||
func (conn *Conn) SetReadDeadline(t time.Time) error {
|
func (conn *Conn) SetReadDeadline(t time.Time) error {
|
||||||
conn.mu.Lock()
|
conn.mu.Lock()
|
||||||
defer conn.mu.Unlock()
|
defer conn.mu.Unlock()
|
||||||
conn.trace("TCPConn.SetReadDeadline:start")
|
return conn.setReadDeadline(t)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (conn *Conn) setReadDeadline(t time.Time) error {
|
||||||
|
conn.trace("TCPConn.setReadDeadline:start")
|
||||||
err := conn.checkPipeOpen()
|
err := conn.checkPipeOpen()
|
||||||
if err == nil {
|
if err == nil {
|
||||||
conn.rdead = t
|
conn.rdead = t
|
||||||
@@ -358,6 +362,12 @@ func (conn *Conn) SetReadDeadline(t time.Time) error {
|
|||||||
// some of the data was successfully written.
|
// some of the data was successfully written.
|
||||||
// A zero value for t means Write will not time out.
|
// A zero value for t means Write will not time out.
|
||||||
func (conn *Conn) SetWriteDeadline(t time.Time) error {
|
func (conn *Conn) SetWriteDeadline(t time.Time) error {
|
||||||
|
conn.mu.Lock()
|
||||||
|
defer conn.mu.Unlock()
|
||||||
|
return conn.setWriteDeadline(t)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (conn *Conn) setWriteDeadline(t time.Time) error {
|
||||||
conn.trace("TCPConn.SetWriteDeadline:start")
|
conn.trace("TCPConn.SetWriteDeadline:start")
|
||||||
err := conn.checkPipeOpen()
|
err := conn.checkPipeOpen()
|
||||||
if err == nil {
|
if err == nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user