diff --git a/apps/mqtt/mqtt.c b/apps/mqtt/mqtt.c index 0be8e83bc..5ef4cbca3 100644 --- a/apps/mqtt/mqtt.c +++ b/apps/mqtt/mqtt.c @@ -1333,7 +1333,9 @@ mqtt_connect(struct mqtt_connection *conn, char *host, uint16_t port, conn->connect_vhdr_flags |= MQTT_VHDR_CLEAN_SESSION_FLAG; /* convert the string IPv6 address to a numeric IPv6 address */ - uiplib_ip6addrconv(host, &ip6addr); + if(uiplib_ip6addrconv(host, &ip6addr) == 0) { + return MQTT_STATUS_ERROR; + } uip_ipaddr_copy(&(conn->server_ip), ipaddr); diff --git a/examples/cc26xx/cc26xx-web-demo/mqtt-client.c b/examples/cc26xx/cc26xx-web-demo/mqtt-client.c index cf60d6c63..e45378264 100644 --- a/examples/cc26xx/cc26xx-web-demo/mqtt-client.c +++ b/examples/cc26xx/cc26xx-web-demo/mqtt-client.c @@ -698,10 +698,15 @@ static void connect_to_broker(void) { /* Connect to MQTT server */ - mqtt_connect(&conn, conf->broker_ip, conf->broker_port, - conf->pub_interval * 3); + mqtt_status_t conn_attempt_result = mqtt_connect(&conn, conf->broker_ip, + conf->broker_port, + conf->pub_interval * 3); - state = MQTT_CLIENT_STATE_CONNECTING; + if(conn_attempt_result == MQTT_STATUS_OK) { + state = MQTT_CLIENT_STATE_CONNECTING; + } else { + state = MQTT_CLIENT_STATE_CONFIG_ERROR; + } } /*---------------------------------------------------------------------------*/ static void @@ -827,8 +832,8 @@ state_machine(void) } break; case MQTT_CLIENT_STATE_NEWCONFIG: - /* Only update config after we have disconnected */ - if(conn.state == MQTT_CONN_STATE_NOT_CONNECTED) { + /* Only update config after we have disconnected or in the case of an error */ + if(conn.state == MQTT_CONN_STATE_NOT_CONNECTED || conn.state == MQTT_CONN_STATE_ERROR) { update_config(); DBG("New config\n");