Pumpkin-MC/Pumpkin · error · VineError
Failed to read game profile properties
Error message
Failed to read game profile properties
What it means
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.
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
Example fix
null
Defensive patterns
Strategy: try-catch
Validate before calling
null
Type guard
null
Try / catch
match result { Err(VineProxyError::FailedReadProfileProperties) => { warn!("truncated forwarding payload: bad profile properties"); connection.disconnect(); }, Ok(v) => v, Err(e) => return Err(e) } Prevention
- 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
When it happens
Trigger: 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.
Common situations: 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.
Related errors
- Failed to read game profile name
- Failed to read game profile UUID
- Failed to parse address
- Vine response data too short (minimum 89 bytes)
- Failed to read forward version
AI-assisted analysis of Pumpkin-MC/Pumpkin@8d4639e25a (2026-09-09).
Data as JSON: /api/errors/e78ff0a176922bc8.
Report an issue: GitHub.
Appendix: source
Thrown at crates/pumpkin/src/net/proxy/vine.rs:54
#[error("Failed to read forward version")]
FailedReadForwardVersion,
#[error("Unsupported forwarding version {0}. Expected {1}")]
UnsupportedForwardVersion(i32, i32),
#[error("Vine timestamp expired or desynchronized: skew of {0}s exceeds limit of {1}s")]
TimestampExpired(i64, i64),
#[error("Vine challenge nonce mismatch")]
ChallengeMismatch,
#[error("Missing expected challenge from pending connection")]
MissingChallenge,
#[error("Failed to read address")]
FailedReadAddress,
#[error("Failed to parse address")]
FailedParseAddress,
#[error("Failed to read game profile name")]
FailedReadProfileName,
#[error("Failed to read game profile UUID")]
FailedReadProfileUUID,
#[error("Failed to read game profile properties")]
FailedReadProfileProperties,
}
/// Initiates Vine modern forwarding handshake by sending a `CLoginPluginRequest`
/// with a unique 16-byte challenge nonce to protect against replay attacks.
pub async fn vine_login(connection: &mut PendingConnection) {
let message_id: i32 = rand::random();
let challenge: [u8; 16] = rand::random();
let mut buf = BytesMut::with_capacity(17);
buf.put_u8(VINE_FORWARDING_VERSION as u8);
buf.put_slice(&challenge);
connection.vine_challenge = Some(challenge);
connection
.send_packet_now(&CLoginPluginRequest::new(
message_id.into(),View on GitHub (pinned to 8d4639e25a)