]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Rename connection.closed->closing
authorMatt Joiner <anacrolix@gmail.com>
Wed, 27 Aug 2014 23:31:05 +0000 (09:31 +1000)
committerMatt Joiner <anacrolix@gmail.com>
Wed, 27 Aug 2014 23:31:05 +0000 (09:31 +1000)
client.go
connection.go

index a519e0c3cda4cb6b063f7adc9c56046cf6f19a6f..bd49d9782fc030cf17a7693dbeb5c29acdf948fc 100644 (file)
--- a/client.go
+++ b/client.go
@@ -694,8 +694,11 @@ func (me *Client) connectionLoop(t *torrent, c *connection) error {
                var msg pp.Message
                err := decoder.Decode(&msg)
                me.mu.Lock()
-               if c.getClosed() {
+               c.lastMessageReceived = time.Now()
+               select {
+               case <-c.closing:
                        return nil
+               default:
                }
                if err != nil {
                        if me.stopped() || err == io.EOF {
index 99931aa255f9aa44743f25d84b04ad0fd72a1e70..323f88edb131360926e490bedc3e3064ce3b84eb 100644 (file)
@@ -28,7 +28,7 @@ const (
 type connection struct {
        Socket    net.Conn
        Discovery peerSource
-       closed    chan struct{}
+       closing   chan struct{}
        mu        sync.Mutex // Only for closing.
        post      chan pp.Message
        writeCh   chan []byte
@@ -61,7 +61,7 @@ func newConnection(sock net.Conn, peb peerExtensionBytes, peerID [20]byte) (c *c
                PeerExtensionBytes: peb,
                PeerID:             peerID,
 
-               closed:  make(chan struct{}),
+               closing: make(chan struct{}),
                writeCh: make(chan []byte),
                post:    make(chan pp.Message),
        }
@@ -146,20 +146,13 @@ func (cn *connection) WriteStatus(w io.Writer) {
 func (c *connection) Close() {
        c.mu.Lock()
        defer c.mu.Unlock()
-       if c.getClosed() {
-               return
-       }
-       close(c.closed)
-       c.Socket.Close()
-}
-
-func (c *connection) getClosed() bool {
        select {
-       case <-c.closed:
-               return true
+       case <-c.closing:
+               return
        default:
-               return false
        }
+       close(c.closing)
+       c.Socket.Close()
 }
 
 func (c *connection) PeerHasPiece(index pp.Integer) bool {
@@ -175,7 +168,7 @@ func (c *connection) PeerHasPiece(index pp.Integer) bool {
 func (c *connection) Post(msg pp.Message) {
        select {
        case c.post <- msg:
-       case <-c.closed:
+       case <-c.closing:
        }
 }
 
@@ -296,7 +289,7 @@ func (conn *connection) writer() {
                                conn.Close()
                                return
                        }
-               case <-conn.closed:
+               case <-conn.closing:
                        return
                }
        }
@@ -354,7 +347,7 @@ func (conn *connection) writeOptimizer(keepAliveDelay time.Duration) {
                        if pending.Len() == 0 {
                                timer.Reset(keepAliveDelay)
                        }
-               case <-conn.closed:
+               case <-conn.closing:
                        return
                }
        }