From 82fad002404d109ab3de3a004c424e6ba828814c Mon Sep 17 00:00:00 2001 From: mat Date: Thu, 5 Jan 2023 18:28:35 -0600 Subject: fix auto reauthentication THANKS MOJANG --- azalea-auth/src/sessionserver.rs | 3 +++ azalea-client/src/client.rs | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/azalea-auth/src/sessionserver.rs b/azalea-auth/src/sessionserver.rs index 46d1fc48..4ead502c 100755 --- a/azalea-auth/src/sessionserver.rs +++ b/azalea-auth/src/sessionserver.rs @@ -18,6 +18,8 @@ pub enum SessionServerError { InvalidSession, #[error("Unknown sessionserver error: {0}")] Unknown(String), + #[error("Forbidden operation (expired session?)")] + ForbiddenOperation, #[error("Unexpected response from sessionserver (status code {status_code}): {body}")] UnexpectedResponse { status_code: u16, body: String }, } @@ -71,6 +73,7 @@ pub async fn join( Err(SessionServerError::AuthServersUnreachable) } "InvalidCredentialsException" => Err(SessionServerError::InvalidSession), + "ForbiddenOperationException" => Err(SessionServerError::ForbiddenOperation), _ => Err(SessionServerError::Unknown(forbidden.error)), } } diff --git a/azalea-client/src/client.rs b/azalea-client/src/client.rs index c88cfc31..f5e72839 100644 --- a/azalea-client/src/client.rs +++ b/azalea-client/src/client.rs @@ -310,7 +310,8 @@ impl Client { // both times, give up return Err(e.into()); } - if let SessionServerError::InvalidSession = e { + if matches!(e, SessionServerError::InvalidSession | ForbiddenOperation) + { // uh oh, we got an invalid session and have // to reauthenticate now account.refresh().await?; -- cgit v1.2.3