From 33df6b0b1f68fb7399246ef218ffbf5685d3bf0e Mon Sep 17 00:00:00 2001 From: lukas0008 Date: Wed, 7 Aug 2024 21:16:00 +0200 Subject: [PATCH] Revert "Remove reqwest blocking feature" This reverts commit 76ce44e58d0f99ddbc76afa75331772156761c5b. --- Cargo.lock | 13 ++++++++++++- pumpkin-world/Cargo.toml | 3 +-- pumpkin/Cargo.toml | 2 +- pumpkin/src/client/authentication.rs | 5 ++--- pumpkin/src/client/client_packet.rs | 6 ++---- pumpkin/src/client/mod.rs | 12 ++++++------ pumpkin/src/main.rs | 2 +- pumpkin/src/server.rs | 8 ++++---- 8 files changed, 29 insertions(+), 22 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c9d4122f..3523957d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -455,6 +455,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ "futures-core", + "futures-sink", ] [[package]] @@ -463,6 +464,12 @@ version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +[[package]] +name = "futures-io" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" + [[package]] name = "futures-sink" version = "0.3.30" @@ -482,9 +489,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ "futures-core", + "futures-io", + "futures-sink", "futures-task", + "memchr", "pin-project-lite", "pin-utils", + "slab", ] [[package]] @@ -1225,7 +1236,6 @@ dependencies = [ "fastnbt 2.5.0 (git+https://github.com/owengage/fastnbt.git)", "fastsnbt", "pumpkin-protocol", - "tokio", ] [[package]] @@ -1285,6 +1295,7 @@ dependencies = [ "base64", "bytes", "encoding_rs", + "futures-channel", "futures-core", "futures-util", "h2", diff --git a/pumpkin-world/Cargo.toml b/pumpkin-world/Cargo.toml index c100edab..56e82b44 100644 --- a/pumpkin-world/Cargo.toml +++ b/pumpkin-world/Cargo.toml @@ -7,5 +7,4 @@ edition.workspace = true pumpkin-protocol = { path = "../pumpkin-protocol"} fastanvil = "0.31" fastnbt = { git = "https://github.com/owengage/fastnbt.git" } -fastsnbt = "0.2" -tokio.workspace = true \ No newline at end of file +fastsnbt = "0.2" \ No newline at end of file diff --git a/pumpkin/Cargo.toml b/pumpkin/Cargo.toml index 0239c0f1..2572cf18 100644 --- a/pumpkin/Cargo.toml +++ b/pumpkin/Cargo.toml @@ -28,7 +28,7 @@ rsa-der = "0.3.0" flate2 = "1.0.30" # authentication -reqwest = { version = "0.12.5", features = ["json"]} +reqwest = { version = "0.12.5", features = ["json", "blocking"]} sha1 = "0.10.6" digest = "=0.11.0-pre.9" diff --git a/pumpkin/src/client/authentication.rs b/pumpkin/src/client/authentication.rs index e8761993..eaff1611 100644 --- a/pumpkin/src/client/authentication.rs +++ b/pumpkin/src/client/authentication.rs @@ -46,7 +46,7 @@ pub struct GameProfile { pub profile_actions: Option>, } -pub async fn authenticate( +pub fn authenticate( username: &str, server_hash: &str, ip: &IpAddr, @@ -69,14 +69,13 @@ pub async fn authenticate( .unwrap() .get(address) .send() - .await .map_err(|_| AuthError::FailedResponse)?; match response.status() { StatusCode::OK => {} StatusCode::NO_CONTENT => Err(AuthError::UnverifiedUsername)?, other => Err(AuthError::UnknownStatusCode(other.as_str().to_string()))?, } - let profile: GameProfile = response.json().await.map_err(|_| AuthError::FailedParse)?; + let profile: GameProfile = response.json().map_err(|_| AuthError::FailedParse)?; Ok(profile) } diff --git a/pumpkin/src/client/client_packet.rs b/pumpkin/src/client/client_packet.rs index 52d8c072..8a82ca91 100644 --- a/pumpkin/src/client/client_packet.rs +++ b/pumpkin/src/client/client_packet.rs @@ -71,7 +71,7 @@ impl Client { self.send_packet(packet); } - pub async fn handle_encryption_response( + pub fn handle_encryption_response( &mut self, server: &mut Server, encryption_response: SEncryptionResponse, @@ -96,9 +96,7 @@ impl Client { &hash, &ip, server, - ) - .await - { + ) { Ok(p) => { // Check if player should join if let Some(p) = &p.profile_actions { diff --git a/pumpkin/src/client/mod.rs b/pumpkin/src/client/mod.rs index b7ddd230..e0359722 100644 --- a/pumpkin/src/client/mod.rs +++ b/pumpkin/src/client/mod.rs @@ -156,17 +156,17 @@ impl Client { self.send_packet(CGameEvent::new(3, gamemode.to_f32().unwrap())); } - pub async fn process_packets(&mut self, server: &mut Server) { + pub fn process_packets(&mut self, server: &mut Server) { let mut i = 0; while i < self.client_packets_queue.len() { let mut packet = self.client_packets_queue.remove(i).unwrap(); - self.handle_packet(server, &mut packet).await; + self.handle_packet(server, &mut packet); i += 1; } } /// Handles an incoming decoded Packet - pub async fn handle_packet(&mut self, server: &mut Server, packet: &mut RawPacket) { + pub fn handle_packet(&mut self, server: &mut Server, packet: &mut RawPacket) { // TODO: handle each packet's Error instead of calling .unwrap() let bytebuf = &mut packet.bytebuf; match self.connection_state { @@ -198,7 +198,7 @@ impl Client { SEncryptionResponse::PACKET_ID => self.handle_encryption_response( server, SEncryptionResponse::read(bytebuf).unwrap(), - ).await, + ), SLoginPluginResponse::PACKET_ID => self .handle_plugin_response(server, SLoginPluginResponse::read(bytebuf).unwrap()), SLoginAcknowledged::PACKET_ID => self @@ -267,7 +267,7 @@ impl Client { // Reads the connection until our buffer of len 4096 is full, then decode /// Close connection when an error occurs - pub async fn poll(&mut self, server: &mut Server, event: &Event) { + pub fn poll(&mut self, server: &mut Server, event: &Event) { if event.is_readable() { let mut received_data = vec![0; 4096]; let mut bytes_read = 0; @@ -302,7 +302,7 @@ impl Client { Ok(packet) => { if let Some(packet) = packet { self.add_packet(packet); - self.process_packets(server).await; + self.process_packets(server); } } Err(err) => self.kick(&err.to_string()), diff --git a/pumpkin/src/main.rs b/pumpkin/src/main.rs index 2746444a..84b445fb 100644 --- a/pumpkin/src/main.rs +++ b/pumpkin/src/main.rs @@ -131,7 +131,7 @@ async fn main() -> io::Result<()> { // Maybe received an event for a TCP connection. let done = if let Some(client) = connections.get_mut(&token) { let mut client = client.borrow_mut(); - client.poll(&mut server, event).await; + client.poll(&mut server, event); client.closed } else { // Sporadic events happen, we can safely ignore them. diff --git a/pumpkin/src/server.rs b/pumpkin/src/server.rs index 61066f86..c13c1b3e 100644 --- a/pumpkin/src/server.rs +++ b/pumpkin/src/server.rs @@ -56,7 +56,7 @@ pub struct Server { pub advanced_config: AdvancedConfiguration, /// Used for Authentication, None is Online mode is disabled - pub auth_client: Option, + pub auth_client: Option, } impl Server { @@ -75,7 +75,7 @@ impl Server { ) .into_boxed_slice(); let auth_client = if config.0.online_mode { - Some(reqwest::Client::new()) + Some(reqwest::blocking::Client::new()) } else { None }; @@ -99,9 +99,9 @@ impl Server { } // Returns Tokens to remove - pub async fn poll(&mut self, client: &mut Client, _poll: &Poll, event: &Event) { + pub fn poll(&mut self, client: &mut Client, _poll: &Poll, event: &Event) { // TODO: Poll players in every world - client.poll(self, event).await + client.poll(self, event) } pub fn add_client(&mut self, token: Rc, client: Rc>) {