From dd906f8fa72e57adec3ad1a071fec29a55891895 Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Wed, 15 Jul 2020 16:16:09 +1000 Subject: [PATCH] Add ReadExtendedHandshake callback --- callbacks.go | 5 +++-- peerconn.go | 3 +++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/callbacks.go b/callbacks.go index e6039971..0e73d809 100644 --- a/callbacks.go +++ b/callbacks.go @@ -7,6 +7,7 @@ import ( // These are called synchronously, and do not pass ownership. The Client and other locks may still // be held. nil functions are not called. type Callbacks struct { - CompletedHandshake func(_ *PeerConn, infoHash InfoHash) - ReadMessage func(*PeerConn, *pp.Message) + CompletedHandshake func(_ *PeerConn, infoHash InfoHash) + ReadMessage func(*PeerConn, *pp.Message) + ReadExtendedHandshake func(*PeerConn, *pp.ExtendedHandshakeMessage) } diff --git a/peerconn.go b/peerconn.go index 85443ee2..d344556c 100644 --- a/peerconn.go +++ b/peerconn.go @@ -1195,6 +1195,9 @@ func (c *PeerConn) onReadExtendedMsg(id pp.ExtensionNumber, payload []byte) (err c.logger.Printf("error parsing extended handshake message %q: %s", payload, err) return errors.Wrap(err, "unmarshalling extended handshake payload") } + if cb := cl.config.Callbacks.ReadExtendedHandshake; cb != nil { + cb(c, &d) + } //c.logger.WithDefaultLevel(log.Debug).Printf("received extended handshake message:\n%s", spew.Sdump(d)) if d.Reqq != 0 { c.PeerMaxRequests = d.Reqq -- 2.44.0