From d4576a56d9b75252583f04faf6f0180b6b242db2 Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Fri, 15 Sep 2017 12:56:15 +1000 Subject: [PATCH] Add some expvars to track uTP/TCP and PHE fallbacks for outgoing connections --- client.go | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/client.go b/client.go index b87ce4ea..dc3b41f9 100644 --- a/client.go +++ b/client.go @@ -7,6 +7,7 @@ import ( "crypto/rand" "encoding/hex" "errors" + "expvar" "fmt" "io" "log" @@ -534,6 +535,11 @@ func (cl *Client) dialUTP(ctx context.Context, addr string) (c net.Conn, err err return } +var ( + dialledFirstUtp = expvar.NewInt("dialledFirstUtp") + dialledFirstNotUtp = expvar.NewInt("dialledFirstNotUtp") +) + // Returns a connection over UTP or TCP, whichever is first to connect. func (cl *Client) dialFirst(ctx context.Context, addr string) (conn net.Conn, utp bool) { ctx, cancel := context.WithCancel(ctx) @@ -573,6 +579,13 @@ func (cl *Client) dialFirst(ctx context.Context, addr string) (conn net.Conn, ut } conn = res.Conn utp = res.UTP + if conn != nil { + if utp { + dialledFirstUtp.Add(1) + } else { + dialledFirstNotUtp.Add(1) + } + } return } @@ -607,6 +620,11 @@ func (cl *Client) handshakesConnection(ctx context.Context, nc net.Conn, t *Torr return } +var ( + initiatedConnWithPreferredHeaderEncryption = expvar.NewInt("initiatedConnWithPreferredHeaderEncryption") + initiatedConnWithFallbackHeaderEncryption = expvar.NewInt("initiatedConnWithFallbackHeaderEncryption") +) + // Returns nil connection and nil error if no connection could be established // for valid reasons. func (cl *Client) establishOutgoingConn(t *Torrent, addr string) (c *connection, err error) { @@ -622,6 +640,7 @@ func (cl *Client) establishOutgoingConn(t *Torrent, addr string) (c *connection, nc.Close() return } else if c != nil { + initiatedConnWithPreferredHeaderEncryption.Add(1) return } nc.Close() @@ -648,6 +667,9 @@ func (cl *Client) establishOutgoingConn(t *Torrent, addr string) (c *connection, if err != nil || c == nil { nc.Close() } + if err == nil && c != nil { + initiatedConnWithFallbackHeaderEncryption.Add(1) + } return }