diff --git a/src/core/manager_internal.c b/src/core/manager_internal.c index 3e10dc15..0f9353f4 100644 --- a/src/core/manager_internal.c +++ b/src/core/manager_internal.c @@ -243,9 +243,11 @@ int neu_manager_subscribe(neu_manager_t *manager, const char *app, // guard against empty mqtt topic parameter // this is not an elegant solution due to the current architecture if (params && 0 == strcmp(adapter->module->module_name, "MQTT")) { - neu_json_elem_t elem = { .name = "topic", .t = NEU_JSON_STR }; - neu_parse_param(params, NULL, 1, &elem); - if (elem.v.val_str && 0 == strlen(elem.v.val_str)) { + neu_json_elem_t elem = { .name = "topic", + .t = NEU_JSON_STR, + .v.val_str = NULL }; + int ret = neu_parse_param(params, NULL, 1, &elem); + if (ret != 0 || (elem.v.val_str && 0 == strlen(elem.v.val_str))) { free(elem.v.val_str); return NEU_ERR_MQTT_SUBSCRIBE_FAILURE; } diff --git a/tests/ft/neuron/api.py b/tests/ft/neuron/api.py index 23f1bf9e..6616ee76 100644 --- a/tests/ft/neuron/api.py +++ b/tests/ft/neuron/api.py @@ -247,12 +247,12 @@ def get_subscribe_group(app, driver=None, group=None): @gen_check -def subscribe_group(app, driver, group, params={}): +def subscribe_group(app, driver, group, params={"topic": "/neuron/mqtt/test"}): return requests.post(url=config.BASE_URL + "/api/v2/subscribe", headers={"Authorization": config.default_jwt}, json={"app": app, "driver": driver, "group": group, "params": params}) @gen_check -def subscribe_group_update(app, driver, group, params={}): +def subscribe_group_update(app, driver, group, params={"topic": "/neuron/mqtt/test"}): return requests.put(url=config.BASE_URL + "/api/v2/subscribe", headers={"Authorization": config.default_jwt}, json={"app": app, "driver": driver, "group": group, "params": params})