diff --git a/include/lwmqtt.h b/include/lwmqtt.h index 0e727d1..e2c3274 100644 --- a/include/lwmqtt.h +++ b/include/lwmqtt.h @@ -223,12 +223,13 @@ typedef struct { * The available return codes transported by the connack packet. */ typedef enum { - LWMQTT_CONNACK_CONNECTION_ACCEPTED = 0, - LWMQTT_CONNACK_UNACCEPTABLE_PROTOCOL = 1, - LWMQTT_CONNACK_IDENTIFIER_REJECTED = 2, - LWMQTT_CONNACK_SERVER_UNAVAILABLE = 3, - LWMQTT_CONNACK_BAD_USERNAME_OR_PASSWORD = 4, - LWMQTT_CONNACK_NOT_AUTHORIZED = 5 + LWMQTT_CONNECTION_ACCEPTED = 0, + LWMQTT_UNACCEPTABLE_PROTOCOL = 1, + LWMQTT_IDENTIFIER_REJECTED = 2, + LWMQTT_SERVER_UNAVAILABLE = 3, + LWMQTT_BAD_USERNAME_OR_PASSWORD = 4, + LWMQTT_NOT_AUTHORIZED = 5, + LWMQTT_UNKNOWN_RETURN_CODE = 6 } lwmqtt_return_code_t; /** diff --git a/src/client.c b/src/client.c index 5c83fc5..3342e4f 100644 --- a/src/client.c +++ b/src/client.c @@ -400,7 +400,7 @@ lwmqtt_err_t lwmqtt_connect(lwmqtt_client_t *client, lwmqtt_options_t options, l } // return error if connection was not accepted - if (*return_code != LWMQTT_CONNACK_CONNECTION_ACCEPTED) { + if (*return_code != LWMQTT_CONNECTION_ACCEPTED) { return LWMQTT_CONNECTION_DENIED; } diff --git a/src/packet.c b/src/packet.c index 0d1ac48..2a35c32 100644 --- a/src/packet.c +++ b/src/packet.c @@ -271,9 +271,32 @@ lwmqtt_err_t lwmqtt_decode_connack(uint8_t *buf, size_t buf_len, bool *session_p return err; } - // set variables + // set session present *session_present = flags.bits.session_present == 1; - *return_code = (lwmqtt_return_code_t)raw_return_code; + + // set return code + switch (raw_return_code) { + case 0: + *return_code = LWMQTT_CONNECTION_ACCEPTED; + break; + case 1: + *return_code = LWMQTT_UNACCEPTABLE_PROTOCOL; + break; + case 2: + *return_code = LWMQTT_IDENTIFIER_REJECTED; + break; + case 3: + *return_code = LWMQTT_SERVER_UNAVAILABLE; + break; + case 4: + *return_code = LWMQTT_BAD_USERNAME_OR_PASSWORD; + break; + case 5: + *return_code = LWMQTT_NOT_AUTHORIZED; + break; + default: + *return_code = LWMQTT_UNKNOWN_RETURN_CODE; + } return LWMQTT_SUCCESS; } diff --git a/tests/packet.cpp b/tests/packet.cpp index 27b2de8..fef8ab6 100644 --- a/tests/packet.cpp +++ b/tests/packet.cpp @@ -197,8 +197,8 @@ TEST(ConnackTest, Decode1) { lwmqtt_err_t err = lwmqtt_decode_connack(pkt, 4, &session_present, &return_code); EXPECT_EQ(err, LWMQTT_SUCCESS); - EXPECT_EQ(session_present, 0); - EXPECT_EQ(return_code, 0); + EXPECT_EQ(session_present, false); + EXPECT_EQ(return_code, LWMQTT_CONNECTION_ACCEPTED); } TEST(ConnackTest, DecodeError1) {