diff --git a/plugins/mqtt/mqtt_plugin_intf.c b/plugins/mqtt/mqtt_plugin_intf.c index b9fa7fa64..61435a653 100644 --- a/plugins/mqtt/mqtt_plugin_intf.c +++ b/plugins/mqtt/mqtt_plugin_intf.c @@ -167,6 +167,7 @@ int mqtt_plugin_uninit(neu_plugin_t *plugin) mqtt_config_fini(&plugin->config); if (plugin->client) { + neu_mqtt_client_remove_cache_db(plugin->client); neu_mqtt_client_close(plugin->client); neu_mqtt_client_free(plugin->client); plugin->client = NULL; @@ -395,6 +396,7 @@ int mqtt_plugin_config(neu_plugin_t *plugin, const char *setting) } if (plugin->client != NULL) { + neu_mqtt_client_remove_cache_db(plugin->client); neu_mqtt_client_close(plugin->client); neu_mqtt_client_free(plugin->client); } diff --git a/plugins/restful/global_config_handle.c b/plugins/restful/global_config_handle.c index c701924d9..03c67ca8b 100644 --- a/plugins/restful/global_config_handle.c +++ b/plugins/restful/global_config_handle.c @@ -733,7 +733,6 @@ static void put_apps_context_next(context_t *ctx, neu_reqresp_type_e type, for (; ctx->idx < (size_t) apps->n_app; ++ctx->idx) { neu_json_app_t *app = &apps->apps[ctx->idx]; if (is_default_app_node(app->node.name, app->node.plugin)) { - NEXT(ctx, add_app_tags, app); if (NULL == app->node.setting) { continue; } @@ -764,6 +763,7 @@ static void put_apps_context_next(context_t *ctx, neu_reqresp_type_e type, for (; ctx->idx < (size_t) apps->n_app; ++ctx->idx) { neu_json_app_t *app = &apps->apps[ctx->idx]; NEXT(ctx, add_app_tags, app); + ++ctx->idx; goto done; } @@ -1798,10 +1798,11 @@ static int add_app_node(context_t *ctx, neu_json_app_t *app) neu_req_add_node_t cmd = { 0 }; strcpy(cmd.node, app->node.name); strcpy(cmd.plugin, app->node.plugin); - cmd.setting = app->node.setting; - cmd.tags = app->node.tags; + cmd.setting = app->node.setting; + if (app->node.tags != NULL) { + cmd.tags = strdup(app->node.tags); + } app->node.setting = NULL; - app->node.tags = NULL; if (0 != neu_plugin_op(plugin, header, &cmd)) { return NEU_ERR_IS_BUSY; diff --git a/src/connection/connection.c b/src/connection/connection.c index b37041e3a..62a10ae06 100644 --- a/src/connection/connection.c +++ b/src/connection/connection.c @@ -751,6 +751,7 @@ static void conn_tcp_server_listen(neu_conn_t *conn) }; fd = socket(AF_INET, SOCK_STREAM | SOCK_NONBLOCK, IPPROTO_TCP); + setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &(int) { 1 }, sizeof(int)); ret = bind(fd, (struct sockaddr *) &local, sizeof(local)); } else if (is_ipv6(conn->param.params.tcp_server.ip)) { @@ -761,7 +762,7 @@ static void conn_tcp_server_listen(neu_conn_t *conn) &local.sin6_addr); fd = socket(AF_INET6, SOCK_STREAM | SOCK_NONBLOCK, IPPROTO_TCP); - + setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &(int) { 1 }, sizeof(int)); ret = bind(fd, (struct sockaddr *) &local, sizeof(local)); } else { zlog_error(conn->param.log, "invalid ip: %s",