{"record":{"id":"9dc81b2d988f96d4","repo":"Pumpkin-MC/Pumpkin","slug":"failed-to-read-game-profile-uuid-9dc81b","errorCode":null,"errorMessage":"Failed to read game profile UUID","messagePattern":"Failed to read game profile UUID","errorType":"error_code","errorClass":"VineError","httpStatus":null,"severity":"error","filePath":"crates/pumpkin/src/net/proxy/vine.rs","lineNumber":52,"sourceCode":"    #[error(\"Failed to verify Ed25519 signature\")]\n    InvalidSignature,\n    #[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","sourceCodeStart":34,"sourceCodeEnd":70,"githubUrl":"https://github.com/Pumpkin-MC/Pumpkin/blob/8d4639e25a57c15e47448ec327c780d41bbf2356/crates/pumpkin/src/net/proxy/vine.rs#L34-L70","documentation":"This is the VineProxyError::FailedReadProfileUUID variant. It means the server could not read the player's UUID from the Vine proxy forwarding response — the bytes ran out or were malformed at the UUID field. The UUID is required to identify the authenticated player, so decoding is aborted.","triggerScenarios":"Raised when decoding the Vine forwarding payload and the 16-byte UUID cannot be read (buffer exhausted or misaligned fields earlier in the payload).","commonSituations":"Forwarding payload written by a proxy with wrong field order/sizes; protocol version drift between proxy and server; corrupted packets over the connection.","solutions":["Match the forwarding protocol implementation on both proxy and server","Check the proxy writes fields in Vine spec order (address, then profile name, UUID, properties)","Update proxy and Pumpkin together","Enable debug logging on the proxy to confirm what it sends"],"exampleFix":"null","handlingStrategy":"try-catch","validationCode":"null","typeGuard":"null","tryCatchPattern":"match result { Err(VineProxyError::FailedReadProfileUUID) => { warn!(\"truncated forwarding payload: no profile UUID\"); connection.disconnect(); }, Ok(v) => v, Err(e) => return Err(e) }","preventionTips":["Verify proxy writes fields in Vine spec order","Match protocol versions on proxy and server","Test with a known-good proxy before deploying custom ones"],"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"}