diff --git a/api/src/handlers.rs b/api/src/handlers.rs index c6b1f9c59..28ea0f1f2 100644 --- a/api/src/handlers.rs +++ b/api/src/handlers.rs @@ -34,7 +34,6 @@ use self::peers_api::PeersConnectedHandler; use self::pool_api::PoolInfoHandler; use self::pool_api::PoolPushHandler; use self::server_api::IndexHandler; -use self::server_api::KernelDownloadHandler; use self::server_api::StatusHandler; use self::transactions_api::TxHashSetHandler; use self::version_api::VersionHandler; @@ -365,9 +364,6 @@ pub fn build_router( peers: Arc::downgrade(&peers), sync_state: Arc::downgrade(&sync_state), }; - let kernel_download_handler = KernelDownloadHandler { - peers: Arc::downgrade(&peers), - }; let txhashset_handler = TxHashSetHandler { chain: Arc::downgrade(&chain), }; @@ -402,7 +398,6 @@ pub fn build_router( router.add_route("/v1/chain/validate", Arc::new(chain_validation_handler))?; router.add_route("/v1/txhashset/*", Arc::new(txhashset_handler))?; router.add_route("/v1/status", Arc::new(status_handler))?; - router.add_route("/v1/kerneldownload", Arc::new(kernel_download_handler))?; router.add_route("/v1/pool", Arc::new(pool_info_handler))?; router.add_route("/v1/pool/push_tx", Arc::new(pool_push_handler))?; router.add_route("/v1/peers/all", Arc::new(peers_all_handler))?; diff --git a/api/src/handlers/server_api.rs b/api/src/handlers/server_api.rs index 7b7601d52..d4e9808f2 100644 --- a/api/src/handlers/server_api.rs +++ b/api/src/handlers/server_api.rs @@ -19,7 +19,7 @@ use crate::rest::*; use crate::router::{Handler, ResponseFuture}; use crate::types::*; use crate::web::*; -use hyper::{Body, Request, StatusCode}; +use hyper::{Body, Request}; use serde_json::json; use std::sync::Weak; @@ -37,29 +37,6 @@ impl Handler for IndexHandler { } } -pub struct KernelDownloadHandler { - pub peers: Weak, -} - -impl Handler for KernelDownloadHandler { - fn post(&self, _req: Request) -> ResponseFuture { - if let Some(peer) = w_fut!(&self.peers).most_work_peer() { - match peer.send_kernel_data_request() { - Ok(_) => response(StatusCode::OK, "{}"), - Err(e) => response( - StatusCode::INTERNAL_SERVER_ERROR, - format!("requesting kernel data from peer failed: {:?}", e), - ), - } - } else { - response( - StatusCode::INTERNAL_SERVER_ERROR, - "requesting kernel data from peer failed (no peers)".to_string(), - ) - } - } -} - /// Status handler. Post a summary of the server status /// GET /v1/status pub struct StatusHandler { diff --git a/p2p/src/msg.rs b/p2p/src/msg.rs index aa976b539..c41498281 100644 --- a/p2p/src/msg.rs +++ b/p2p/src/msg.rs @@ -65,8 +65,6 @@ enum_from_primitive! { BanReason = 18, GetTransaction = 19, TransactionKernel = 20, - KernelDataRequest = 21, - KernelDataResponse = 22, } } @@ -104,8 +102,6 @@ fn max_msg_size(msg_type: Type) -> u64 { Type::BanReason => 64, Type::GetTransaction => 32, Type::TransactionKernel => 32, - Type::KernelDataRequest => 0, - Type::KernelDataResponse => 8, } } @@ -708,30 +704,3 @@ impl Readable for TxHashSetArchive { }) } } - -pub struct KernelDataRequest {} - -impl Writeable for KernelDataRequest { - fn write(&self, _writer: &mut W) -> Result<(), ser::Error> { - Ok(()) - } -} - -pub struct KernelDataResponse { - /// Size in bytes of the attached kernel data file. - pub bytes: u64, -} - -impl Writeable for KernelDataResponse { - fn write(&self, writer: &mut W) -> Result<(), ser::Error> { - writer.write_u64(self.bytes)?; - Ok(()) - } -} - -impl Readable for KernelDataResponse { - fn read(reader: &mut dyn Reader) -> Result { - let bytes = reader.read_u64()?; - Ok(KernelDataResponse { bytes }) - } -} diff --git a/p2p/src/peer.rs b/p2p/src/peer.rs index b0bdc1f1c..416a44108 100644 --- a/p2p/src/peer.rs +++ b/p2p/src/peer.rs @@ -30,9 +30,7 @@ use crate::core::pow::Difficulty; use crate::core::ser::Writeable; use crate::core::{core, global}; use crate::handshake::Handshake; -use crate::msg::{ - self, BanReason, GetPeerAddrs, KernelDataRequest, Locator, Msg, Ping, TxHashSetRequest, Type, -}; +use crate::msg::{self, BanReason, GetPeerAddrs, Locator, Msg, Ping, TxHashSetRequest, Type}; use crate::protocol::Protocol; use crate::types::{ Capabilities, ChainAdapter, Error, NetAdapter, P2PConfig, PeerAddr, PeerInfo, ReasonForBan, @@ -402,11 +400,6 @@ impl Peer { ) } - pub fn send_kernel_data_request(&self) -> Result<(), Error> { - debug!("Asking {} for kernel data.", self.info.addr); - self.send(&KernelDataRequest {}, msg::Type::KernelDataRequest) - } - /// Stops the peer pub fn stop(&self) { debug!("Stopping peer {:?}", self.info.addr); diff --git a/p2p/src/protocol.rs b/p2p/src/protocol.rs index 7a61d5707..0345e9e5d 100644 --- a/p2p/src/protocol.rs +++ b/p2p/src/protocol.rs @@ -17,19 +17,18 @@ use crate::conn::{Message, MessageHandler, Tracker}; use crate::core::core::{self, hash::Hash, hash::Hashed, CompactBlock}; use crate::msg::{ - BanReason, GetPeerAddrs, Headers, KernelDataResponse, Locator, Msg, PeerAddrs, Ping, Pong, - TxHashSetArchive, TxHashSetRequest, Type, + BanReason, GetPeerAddrs, Headers, Locator, Msg, PeerAddrs, Ping, Pong, TxHashSetArchive, + TxHashSetRequest, Type, }; use crate::types::{Error, NetAdapter, PeerInfo}; use chrono::prelude::Utc; use rand::{thread_rng, Rng}; use std::cmp; use std::fs::{self, File, OpenOptions}; -use std::io::{BufWriter, Seek, SeekFrom}; +use std::io::BufWriter; use std::sync::atomic::{AtomicBool, Ordering}; use std::sync::Arc; use std::time::Instant; -use tempfile::tempfile; pub struct Protocol { adapter: Arc, @@ -266,57 +265,6 @@ impl MessageHandler for Protocol { Ok(None) } - Type::KernelDataRequest => { - debug!("handle_payload: kernel_data_request"); - let kernel_data = self.adapter.kernel_data_read()?; - let bytes = kernel_data.metadata()?.len(); - let kernel_data_response = KernelDataResponse { bytes }; - let mut response = Msg::new( - Type::KernelDataResponse, - &kernel_data_response, - self.peer_info.version, - )?; - response.add_attachment(kernel_data); - Ok(Some(response)) - } - - Type::KernelDataResponse => { - let response: KernelDataResponse = msg.body()?; - debug!( - "handle_payload: kernel_data_response: bytes: {}", - response.bytes - ); - - let mut writer = BufWriter::new(tempfile()?); - - let total_size = response.bytes as usize; - let mut remaining_size = total_size; - - while remaining_size > 0 { - let size = msg.copy_attachment(remaining_size, &mut writer)?; - remaining_size = remaining_size.saturating_sub(size); - - // Increase received bytes quietly (without affecting the counters). - // Otherwise we risk banning a peer as "abusive". - tracker.inc_quiet_received(size as u64); - } - - // Remember to seek back to start of the file as the caller is likely - // to read this file directly without reopening it. - writer.seek(SeekFrom::Start(0))?; - - let mut file = writer.into_inner().map_err(|_| Error::Internal)?; - - debug!( - "handle_payload: kernel_data_response: file size: {}", - file.metadata().unwrap().len() - ); - - self.adapter.kernel_data_write(&mut file)?; - - Ok(None) - } - Type::TxHashSetRequest => { let sm_req: TxHashSetRequest = msg.body()?; debug!(