{"record":{"id":"f4cb3b10e69ea176","repo":"slackhq/nebula","slug":"errmultimessageunsupported","errorCode":"ErrMultiMessageUnsupported","errorMessage":"multi-message handshake patterns are not yet supported by the manager","messagePattern":"multi-message handshake patterns are not yet supported by the manager","errorType":"error_code","errorClass":null,"httpStatus":null,"severity":"error","filePath":"handshake/errors.go","lineNumber":20,"sourceCode":"\nimport \"errors\"\n\nvar (\n\tErrInitiateOnResponder     = errors.New(\"initiate called on responder\")\n\tErrInitiateAlreadyCalled   = errors.New(\"initiate already called\")\n\tErrInitiateNotCalled       = errors.New(\"initiate must be called before ProcessPacket for initiators\")\n\tErrPacketTooShort          = errors.New(\"packet too short\")\n\tErrPublicKeyMismatch       = errors.New(\"public key mismatch between certificate and handshake\")\n\tErrIncompleteHandshake     = errors.New(\"handshake completed without receiving required content\")\n\tErrMachineFailed           = errors.New(\"handshake machine has failed\")\n\tErrUnknownSubtype          = errors.New(\"unknown handshake subtype\")\n\tErrMissingContent          = errors.New(\"expected handshake content but message was empty\")\n\tErrUnexpectedContent       = errors.New(\"received unexpected handshake content\")\n\tErrInvalidRemoteIndex      = errors.New(\"peer sent an invalid index in handshake payload\")\n\tErrIndexAllocation         = errors.New(\"failed to allocate local index\")\n\tErrNoCredential            = errors.New(\"no handshake credential available for cert version\")\n\tErrAsymmetricCipherKeys    = errors.New(\"noise produced only one cipher key\")\n\tErrMultiMessageUnsupported = errors.New(\"multi-message handshake patterns are not yet supported by the manager\")\n\tErrSubtypeMismatch         = errors.New(\"packet subtype does not match handshake machine subtype\")\n)\n","sourceCodeStart":2,"sourceCodeEnd":23,"githubUrl":"https://github.com/slackhq/nebula/blob/dd8f660c0ac37903ec4080ca4d3c861ba9342ceb/handshake/errors.go#L2-L23","documentation":"ErrMultiMessageUnsupported indicates the handshake manager received a handshake whose Noise pattern requires multiple messages (e.g. XX or multi-stage patterns), which the manager does not implement. Only single-message IX-style handshake patterns are supported. The manager logs the error and abandons the handshake instead of attempting it.","triggerScenarios":"Calling beginHandshake (or a peer initiating one) with a handshake pattern configured to a multi-message pattern; the manager's responder path detects it at handshake_manager.go:736 and logs 'multi-message handshake responder is not supported'.","commonSituations":"Mixing node versions or configs where one side uses an XX/PSK multi-message pattern while the manager only supports IX-style; copying a cipher/handshake config from another Nebula-like deployment; upgrading tunnel configs without checking handshake pattern support.","solutions":["Change the handshake pattern configuration to a supported single-message pattern (IX/IX-PSK style)","Ensure both peers run versions/configs that agree on the supported handshake pattern","If multi-message support is required, update the library or extend the manager, since it is explicitly not yet implemented"],"exampleFix":"// before (config)\nhandshake:\n  pattern: xx_psk0\n// after\nhandshake:\n  pattern: ix_psk0","handlingStrategy":"validation","validationCode":"if !supportedPatterns[pattern] {\n    return fmt.Errorf(\"handshake pattern %v unsupported by manager: %w\", pattern, handshake.ErrMultiMessageUnsupported)\n}","typeGuard":null,"tryCatchPattern":"_, err := beginHandshake(...)\nif errors.Is(err, handshake.ErrMultiMessageUnsupported) {\n    // log and abandon; do not retry — it cannot succeed\n    return\n}","preventionTips":["Configure only IX-style single-message handshake patterns","Keep both peers on configs/versions with matching pattern support","Fail fast at config-load time if an unsupported pattern is set"],"tags":["handshake","unsupported-feature","noise-protocol"],"backgroundTag":"handshake-pattern-unsupported","analyzedSha":"dd8f660c0ac37903ec4080ca4d3c861ba9342ceb","analyzedAt":"2026-09-03T11:13:55.444Z","contentChangedAt":"2026-09-03T11:13:55.444Z","schemaVersion":2},"datasetVersion":"2026-09-10T17:17:09.494Z"}