// 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)
}
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