acceptTCP = expvar.NewInt("acceptTCP")
acceptReject = expvar.NewInt("acceptReject")
- peerExtensions = expvar.NewMap("peerExtensions")
+ peerExtensions = expvar.NewMap("peerExtensions")
+ completedHandshakeConnectionFlags = expvar.NewMap("completedHandshakeConnectionFlags")
// Count of connections to peer with same client ID.
connsToSelf = expvar.NewInt("connsToSelf")
// Number of completed connections to a client we're already connected with.
deadlineReader{c.conn, c.rw},
c.rw,
}
+ completedHandshakeConnectionFlags.Add(c.connectionFlags(), 1)
if !cl.addConnection(t, c) {
return
}
return fmt.Sprintf("%.2fs ago", time.Now().Sub(t).Seconds())
}
-// Inspired by https://trac.transmissionbt.com/wiki/PeerStatusText
-func (cn *connection) statusFlags() (ret string) {
+func (cn *connection) connectionFlags() (ret string) {
c := func(b byte) {
ret += string([]byte{b})
}
- if cn.Interested {
- c('i')
- }
- if cn.Choked {
- c('c')
- }
- c('-')
if cn.encrypted {
c('E')
}
if cn.uTP {
c('T')
}
+ return
+}
+
+// Inspired by https://trac.transmissionbt.com/wiki/PeerStatusText
+func (cn *connection) statusFlags() (ret string) {
+ c := func(b byte) {
+ ret += string([]byte{b})
+ }
+ if cn.Interested {
+ c('i')
+ }
+ if cn.Choked {
+ c('c')
+ }
+ c('-')
+ ret += cn.connectionFlags()
c('-')
if cn.PeerInterested {
c('i')