{"record":{"id":"ad3b48e58aa8af3b","repo":"nats-io/nats-server","slug":"mqttconnackrcqos2willrejected","errorCode":"mqttConnAckRCQoS2WillRejected","errorMessage":"server does not accept QoS2 for Will messages","messagePattern":"server does not accept QoS2 for Will messages","errorType":"error_code","errorClass":null,"httpStatus":null,"severity":"error","filePath":"server/mqtt.go","lineNumber":3847,"sourceCode":"\tif cp.flags&mqttConnFlagWillFlag == 0 {\n\t\t// Spec [MQTT-3.1.2-13]\n\t\tif wqos != 0 {\n\t\t\treturn 0, nil, fmt.Errorf(\"if Will flag is set to 0, Will QoS must be 0 too, got %v\", wqos)\n\t\t}\n\t\t// Spec [MQTT-3.1.2-15]\n\t\tif wretain {\n\t\t\treturn 0, nil, errMQTTWillAndRetainFlag\n\t\t}\n\t} else {\n\t\t// Spec [MQTT-3.1.2-14]\n\t\tif wqos == 3 {\n\t\t\treturn 0, nil, fmt.Errorf(\"if Will flag is set to 1, Will QoS can be 0, 1 or 2, got %v\", wqos)\n\t\t}\n\t\thasWill = true\n\t}\n\n\tif c.mqtt.rejectQoS2Pub && hasWill && wqos == 2 {\n\t\treturn mqttConnAckRCQoS2WillRejected, nil, fmt.Errorf(\"server does not accept QoS2 for Will messages\")\n\t}\n\n\t// Spec [MQTT-3.1.2-19]\n\thasUser := cp.flags&mqttConnFlagUsernameFlag != 0\n\t// Spec [MQTT-3.1.2-21]\n\thasPassword := cp.flags&mqttConnFlagPasswordFlag != 0\n\t// Spec [MQTT-3.1.2-22]\n\tif !hasUser && hasPassword {\n\t\treturn 0, nil, errMQTTPasswordFlagAndNoUser\n\t}\n\n\t// Keep alive\n\tvar ka uint16\n\tka, err = r.readUint16(\"keep alive\")\n\tif err != nil {\n\t\treturn 0, nil, err\n\t}\n\t// Spec [MQTT-3.1.2-24]","sourceCodeStart":3829,"sourceCodeEnd":3865,"githubUrl":"https://github.com/nats-io/nats-server/blob/3a66a489d262bf89b71a71c955c94920394532f3/server/mqtt.go#L3829-L3865","documentation":"Server policy check in mqttParseConnect: the server is configured with rejectQoS2Pub and the client's Will message requests QoS 2. The CONNACK return code mqttConnAckRCQoS2WillRejected is returned to the client along with this error.","triggerScenarios":"Thrown at server/mqtt.go:3847 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Lower the Will message QoS to 0 or 1","Disable the server's QoS 2 rejection policy if Will messages need QoS 2"],"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"}