{"record":{"id":"e78ff0a176922bc8","repo":"Pumpkin-MC/Pumpkin","slug":"failed-to-read-game-profile-properties-e78ff0","errorCode":null,"errorMessage":"Failed to read game profile properties","messagePattern":"Failed to read game profile properties","errorType":"error_code","errorClass":"VineError","httpStatus":null,"severity":"error","filePath":"crates/pumpkin/src/net/proxy/vine.rs","lineNumber":54,"sourceCode":"    #[error(\"Failed to read forward version\")]\n    FailedReadForwardVersion,\n    #[error(\"Unsupported forwarding version {0}. Expected {1}\")]\n    UnsupportedForwardVersion(i32, i32),\n    #[error(\"Vine timestamp expired or desynchronized: skew of {0}s exceeds limit of {1}s\")]\n    TimestampExpired(i64, i64),\n    #[error(\"Vine challenge nonce mismatch\")]\n    ChallengeMismatch,\n    #[error(\"Missing expected challenge from pending connection\")]\n    MissingChallenge,\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\n/// Initiates Vine modern forwarding handshake by sending a `CLoginPluginRequest`\n/// with a unique 16-byte challenge nonce to protect against replay attacks.\npub async fn vine_login(connection: &mut PendingConnection) {\n    let message_id: i32 = rand::random();\n    let challenge: [u8; 16] = rand::random();\n\n    let mut buf = BytesMut::with_capacity(17);\n    buf.put_u8(VINE_FORWARDING_VERSION as u8);\n    buf.put_slice(&challenge);\n\n    connection.vine_challenge = Some(challenge);\n\n    connection\n        .send_packet_now(&CLoginPluginRequest::new(\n            message_id.into(),","sourceCodeStart":36,"sourceCodeEnd":72,"githubUrl":"https://github.com/Pumpkin-MC/Pumpkin/blob/8d4639e25a57c15e47448ec327c780d41bbf2356/crates/pumpkin/src/net/proxy/vine.rs#L36-L72","documentation":"This is the VineProxyError::FailedReadProfileProperties variant. It means the server failed to read the game profile properties list (e.g. textures/skins data) from the Vine proxy forwarding response. The payload was truncated or malformed at the properties section, so login is rejected.","triggerScenarios":"Raised when decoding the properties array (count plus per-property name/value/signature strings) at the end of the Vine forwarding payload and the bytes are incomplete or invalid.","commonSituations":"Proxy omitting properties or writing a wrong property count; offline-mode proxies that strip skin data incorrectly; corrupted payload due to secret mismatch or tampering.","solutions":["Verify the proxy writes the properties list with a correct varint count and per-property encoding","Confirm the forwarding secret matches between proxy and server (tampered payloads corrupt decoding)","Use a maintained proxy version compatible with this Pumpkin build","If security is less of a concern, check whether the proxy intentionally strips properties and whether the server build supports that"],"exampleFix":"null","handlingStrategy":"try-catch","validationCode":"null","typeGuard":"null","tryCatchPattern":"match result { Err(VineProxyError::FailedReadProfileProperties) => { warn!(\"truncated forwarding payload: bad profile properties\"); connection.disconnect(); }, Ok(v) => v, Err(e) => return Err(e) }","preventionTips":["Confirm proxy serializes the properties count and entries correctly","Keep forwarding secrets in sync to avoid corrupted decoding","Avoid proxies that strip properties unless the server supports it"],"tags":["network","proxy","minecraft","vine-forwarding","malformed-payload"],"backgroundTag":"unexpected-response-shape","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"}