{"record":{"id":"79589fdfce969b86","repo":"Pumpkin-MC/Pumpkin","slug":"unsupported-forwarding-version-0-maximum-suppor","errorCode":null,"errorMessage":"Unsupported forwarding version {0}. Maximum supported version is {1}","messagePattern":"Unsupported forwarding version (.+?)\\. Maximum supported version is (.+?)","errorType":"error_code","errorClass":"VelocityError","httpStatus":null,"severity":"error","filePath":"crates/pumpkin/src/net/proxy/velocity.rs","lineNumber":37,"sourceCode":"use thiserror::Error;\nuse tracing::debug;\n\nuse crate::net::{GameProfile, java::pending::PendingConnection};\n\ntype HmacSha256 = Hmac<Sha256>;\n\nconst MAX_SUPPORTED_FORWARDING_VERSION: u8 = 4;\nconst PLAYER_INFO_CHANNEL: &str = \"velocity:player_info\";\n\n#[derive(Error, Debug)]\npub enum VelocityError {\n    #[error(\"No response data received\")]\n    NoData,\n    #[error(\"Unable to verify player details\")]\n    FailedVerifyIntegrity,\n    #[error(\"Failed to read forward version\")]\n    FailedReadForwardVersion,\n    #[error(\"Unsupported forwarding version {0}. Maximum supported version is {1}\")]\n    UnsupportedForwardVersion(u8, u8),\n    #[error(\"Failed to read address\")]\n    FailedReadAddress,\n    #[error(\"Failed to parse address\")]\n    FailedParseAddress,\n    #[error(\"Failed to read game profile name\")]\n    FailedReadProfileName,\n    #[error(\"Failed to read game profile UUID\")]\n    FailedReadProfileUUID,\n    #[error(\"Failed to read game profile properties\")]\n    FailedReadProfileProperties,\n}\n\npub async fn velocity_login(connection: &mut PendingConnection) {\n    // TODO: Validate the packet transaction id from the plugin response with this\n    let velocity_message_id: i32 = rand::rng().random();\n\n    let mut buf = BytesMut::new();","sourceCodeStart":19,"sourceCodeEnd":55,"githubUrl":"https://github.com/Pumpkin-MC/Pumpkin/blob/8d4639e25a57c15e47448ec327c780d41bbf2356/crates/pumpkin/src/net/proxy/velocity.rs#L19-L55","documentation":"VelocityError validation guard over the modern forwarding version byte: the proxy forwarded a version newer than MAX_SUPPORTED_FORWARDING_VERSION (4), so this server cannot trust or parse the payload. Fires when upgrading Velocity before the Pumpkin server supports its forwarding format. The offending input is the version byte at the head of the forwarding data.","triggerScenarios":"Thrown at crates/pumpkin/src/net/proxy/velocity.rs:37 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Reject the connection citing the version range","Update the server to support the newer forwarding version","Log both the received and maximum supported versions"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"8d4639e25a57c15e47448ec327c780d41bbf2356","analyzedAt":"2026-09-09T15:32:22.916Z","contentChangedAt":"2026-09-09T15:32:22.916Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}