PEX: Announce support and message definition
This commit is contained in:
parent
c758d0022d
commit
bbc951733f
7 changed files with 213 additions and 35 deletions
|
|
@ -14,10 +14,7 @@ use librqbit_core::{
|
|||
};
|
||||
use parking_lot::RwLock;
|
||||
use peer_binary_protocol::{
|
||||
extended::{
|
||||
handshake::{ExtendedHandshake, YourIP},
|
||||
ExtendedMessage,
|
||||
},
|
||||
extended::{handshake::ExtendedHandshake, ExtendedMessage},
|
||||
serialize_piece_preamble, Handshake, Message, MessageOwned, PIECE_MESSAGE_DEFAULT_LEN,
|
||||
};
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
|
@ -248,14 +245,14 @@ impl<H: PeerConnectionHandler> PeerConnection<H> {
|
|||
let supports_extended = handshake_supports_extended;
|
||||
|
||||
if supports_extended {
|
||||
let your_ip = self.addr.ip();
|
||||
let mut my_extended = ExtendedHandshake::new();
|
||||
my_extended.yourip = Some(YourIP(your_ip));
|
||||
self.handler
|
||||
.update_my_extended_handshake(&mut my_extended)?;
|
||||
let my_extended = Message::Extended(ExtendedMessage::Handshake(my_extended));
|
||||
trace!("sending extended handshake: {:?}", &my_extended);
|
||||
my_extended.serialize(&mut write_buf, &|| None).unwrap();
|
||||
my_extended
|
||||
.serialize(&mut write_buf, &|| Default::default())
|
||||
.unwrap();
|
||||
with_timeout(rwtimeout, conn.write_all(&write_buf))
|
||||
.await
|
||||
.context("error writing extended handshake")?;
|
||||
|
|
@ -318,7 +315,8 @@ impl<H: PeerConnectionHandler> PeerConnection<H> {
|
|||
extended_handshake_ref
|
||||
.read()
|
||||
.as_ref()
|
||||
.and_then(|e| e.ut_metadata())
|
||||
.map(|e| e.peer_extended_messages())
|
||||
.unwrap_or_default()
|
||||
})?,
|
||||
WriterRequest::ReadChunkRequest(chunk) => {
|
||||
#[allow(unused_mut)]
|
||||
|
|
@ -397,7 +395,6 @@ impl<H: PeerConnectionHandler> PeerConnection<H> {
|
|||
if let Message::Extended(ExtendedMessage::Handshake(h)) = &message {
|
||||
*extended_handshake_ref.write() = Some(h.clone_to_owned(None));
|
||||
self.handler.on_extended_handshake(h)?;
|
||||
trace!("remembered extended handshake for future serializing");
|
||||
} else {
|
||||
self.handler
|
||||
.on_received_message(message)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue