{"record":{"id":"c82754a5b36609c5","repo":"Pumpkin-MC/Pumpkin","slug":"failed-to-parse-address-c82754","errorCode":null,"errorMessage":"Failed to parse address","messagePattern":"Failed to parse address","errorType":"error_code","errorClass":"VineError","httpStatus":null,"severity":"error","filePath":"crates/pumpkin/src/net/proxy/vine.rs","lineNumber":48,"sourceCode":"    #[error(\"No public key or secret configured for Vine proxy\")]\n    MissingKeyConfig,\n    #[error(\"Invalid Ed25519 public key\")]\n    InvalidPublicKey,\n    #[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);","sourceCodeStart":30,"sourceCodeEnd":66,"githubUrl":"https://github.com/Pumpkin-MC/Pumpkin/blob/8d4639e25a57c15e47448ec327c780d41bbf2356/crates/pumpkin/src/net/proxy/vine.rs#L30-L66","documentation":"This is the VineProxyError::FailedParseAddress variant from the Vine (Velocity-style modern) proxy forwarding handshake. It means the server received the proxy's login plugin response but could not parse the forwarded address field out of it. The library throws it because a malformed or corrupted forwarding payload cannot be trusted to identify the real client address.","triggerScenarios":"Raised during vine_login / handshake processing when the address portion of the Vine forwarding response fails to decode as a valid socket address (e.g. truncated bytes or an unparseable host:port string).","commonSituations":"Proxy and server running mismatched/modified forwarding protocol versions; a middlebox or misconfigured proxy sending malformed login plugin responses; custom proxy implementations writing the payload incorrectly.","solutions":["Verify the proxy (e.g. Velocity/Vine-compatible) and Pumpkin server use the same modern forwarding protocol version","Confirm modern/secret-based forwarding is enabled on the proxy and its secret matches the server config","Check the network path for anything rewriting or truncating login plugin messages","If you wrote a custom proxy, validate the address encoding matches the Vine specification"],"exampleFix":"null","handlingStrategy":"try-catch","validationCode":"null","typeGuard":"null","tryCatchPattern":"match result { Err(VineProxyError::FailedParseAddress) => { warn!(\"proxy sent unparseable address; disconnecting client\"); connection.disconnect(); }, Ok(v) => v, Err(e) => return Err(e) }","preventionTips":["Pin proxy and server to compatible forwarding protocol versions","Keep the forwarding secret identical on both sides","Test forwarding after any proxy upgrade"],"tags":["network","proxy","minecraft","vine-forwarding","address-parsing"],"backgroundTag":"invalid-argument-format","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"}