isCredentialRejection

fun MqttException.ConnectionRejected.isCredentialRejection(): Boolean(source)

true only for CONNACK reason codes where retrying can never help — the broker examined our credentials or client identity and refused them.

A MqttException.ConnectionRejected can still carry a transient broker verdict (SERVER_BUSY, SERVER_UNAVAILABLE, CONNECTION_RATE_EXCEEDED), which must stay in the retry loop rather than stop the proxy with a "check credentials" dialog. Public so MqttManagerImpl in :core:data can phrase its user-facing error from the same classification.