]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Add ReadExtendedHandshake callback
authorMatt Joiner <anacrolix@gmail.com>
Wed, 15 Jul 2020 06:16:09 +0000 (16:16 +1000)
committerMatt Joiner <anacrolix@gmail.com>
Wed, 15 Jul 2020 06:16:14 +0000 (16:16 +1000)
callbacks.go
peerconn.go

index e6039971521c07a8298297bc29c457561f58b5ee..0e73d80993e0d207a52a43769358ac1bc7971084 100644 (file)
@@ -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)
 }
index 85443ee2711643d4d32b6488eaee47efd317a0d0..d344556c1c4c021cba75f2166e4f37380e63a921 100644 (file)
@@ -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