{"record":{"id":"a53b054d0b3f93cb","repo":"nats-io/nats-server","slug":"processroutedheadermsgargs-bad-or-missing-reply-in","errorCode":null,"errorMessage":"processRoutedHeaderMsgArgs Bad or Missing Reply Indicator: '%s'","messagePattern":"processRoutedHeaderMsgArgs Bad or Missing Reply Indicator: '(.+?)'","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"server/route.go","lineNumber":332,"sourceCode":"\t\treturn fmt.Errorf(\"processRoutedHeaderMsgArgs Parse Error: '%s'\", args)\n\tcase 4:\n\t\tc.pa.reply = nil\n\t\tc.pa.queues = nil\n\t\tc.pa.hdb = args[2]\n\t\tc.pa.hdr = parseSize(args[2])\n\t\tc.pa.szb = args[3]\n\t\tc.pa.size = parseSize(args[3])\n\tcase 5:\n\t\tc.pa.reply = args[2]\n\t\tc.pa.queues = nil\n\t\tc.pa.hdb = args[3]\n\t\tc.pa.hdr = parseSize(args[3])\n\t\tc.pa.szb = args[4]\n\t\tc.pa.size = parseSize(args[4])\n\tdefault:\n\t\t// args[2] is our reply indicator. Should be + or | normally.\n\t\tif len(args[2]) != 1 {\n\t\t\treturn fmt.Errorf(\"processRoutedHeaderMsgArgs Bad or Missing Reply Indicator: '%s'\", args[2])\n\t\t}\n\t\tswitch args[2][0] {\n\t\tcase '+':\n\t\t\tc.pa.reply = args[3]\n\t\tcase '|':\n\t\t\tc.pa.reply = nil\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\"processRoutedHeaderMsgArgs Bad or Missing Reply Indicator: '%s'\", args[2])\n\t\t}\n\n\t\t// Grab header size.\n\t\tc.pa.hdb = args[len(args)-2]\n\t\tc.pa.hdr = parseSize(c.pa.hdb)\n\n\t\t// Grab size.\n\t\tc.pa.szb = args[len(args)-1]\n\t\tc.pa.size = parseSize(c.pa.szb)\n","sourceCodeStart":314,"sourceCodeEnd":350,"githubUrl":"https://github.com/nats-io/nats-server/blob/3a66a489d262bf89b71a71c955c94920394532f3/server/route.go#L314-L350","documentation":"In the >5-token branch of processRoutedHeaderMsgArgs, args[2] must be the single-character reply indicator ('+' or '|'); the check len(args[2]) != 1 failed, so the token layout is misaligned — an optional reply subject or queue-name list was present/absent inconsistently with what the sender encoded.","triggerScenarios":"Thrown at server/route.go:332 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Verify the sender emits a one-byte reply indicator token","Match nats-server versions across the cluster","Inspect the raw argument line for shifted optional fields"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"3a66a489d262bf89b71a71c955c94920394532f3","analyzedAt":"2026-09-02T04:41:54.247Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}