diff --git a/bbfdmd/ubus/bbfdmd.c b/bbfdmd/ubus/bbfdmd.c index 0d57ab47..732e9918 100644 --- a/bbfdmd/ubus/bbfdmd.c +++ b/bbfdmd/ubus/bbfdmd.c @@ -167,6 +167,9 @@ static void async_complete_cb(struct uloop_process *p, __attribute__((unused)) i ubus_send_reply(r->ctx, &r->req, bb->head); INFO("pid(%d) blob data sent raw(%d)", r->process.pid, blob_raw_len(bb->head)); ubus_complete_deferred_request(r->ctx, &r->req, 0); + if (r->is_operate) { + register_instance_refresh_timer(r->ctx, 0); + } munmap(r->result, DEF_IPC_DATA_LEN); async_req_free(r); } @@ -185,7 +188,7 @@ static struct bbfdm_async_req *async_req_new(void) return r; } -static int bbfdm_start_deferred(bbfdm_data_t *data, void (*EXEC_CB)(bbfdm_data_t *data, void *d)) +static int bbfdm_start_deferred(bbfdm_data_t *data, void (*EXEC_CB)(bbfdm_data_t *data, void *d), bool is_operate) { struct bbfdm_async_req *r = NULL; pid_t child; @@ -240,6 +243,7 @@ static int bbfdm_start_deferred(bbfdm_data_t *data, void (*EXEC_CB)(bbfdm_data_t r->ctx = data->ctx; r->process.pid = child; r->process.cb = async_complete_cb; + r->is_operate = is_operate; uloop_process_add(&r->process); ubus_defer_request(data->ctx, data->req, &r->req); return 0; @@ -364,7 +368,7 @@ static int bbfdm_get_handler(struct ubus_context *ctx, struct ubus_object *obj _ if (is_subprocess_needed) { INFO("Creating subprocess for get method"); - bbfdm_start_deferred(&data, bbfdm_get_value); + bbfdm_start_deferred(&data, bbfdm_get_value, false); } else { bbfdm_get_value(&data, NULL); } @@ -648,8 +652,7 @@ static int bbfdm_operate_handler(struct ubus_context *ctx, struct ubus_object *o bbfdm_operate_cmd_sync(&data); } else { cancel_instance_refresh_timer(ctx); - bbfdm_start_deferred(&data, bbfdm_operate_cmd_async); - register_instance_refresh_timer(ctx, 0); + bbfdm_start_deferred(&data, bbfdm_operate_cmd_async, true); } FREE(str); diff --git a/bbfdmd/ubus/bbfdmd.h b/bbfdmd/ubus/bbfdmd.h index f212a983..44b6d893 100644 --- a/bbfdmd/ubus/bbfdmd.h +++ b/bbfdmd/ubus/bbfdmd.h @@ -13,6 +13,7 @@ struct bbfdm_async_req { struct ubus_context *ctx; struct ubus_request_data req; struct uloop_process process; + bool is_operate; void *result; }; diff --git a/bbfdmd/ubus/events.c b/bbfdmd/ubus/events.c index 3a8eb813..47884928 100644 --- a/bbfdmd/ubus/events.c +++ b/bbfdmd/ubus/events.c @@ -91,7 +91,7 @@ static void bbfdm_event_handler(struct ubus_context *ctx, struct ubus_event_hand blobmsg_add_string(&b, "name", param->data); strncpyt(dm_path, param->data, sizeof(dm_path)); } else { - blobmsg_add_string(&bb, param->name, param->data); + blobmsg_add_string(&b, param->name, param->data); } } @@ -100,7 +100,7 @@ static void bbfdm_event_handler(struct ubus_context *ctx, struct ubus_event_hand blobmsg_add_field(&b, BLOBMSG_TYPE_TABLE, "input", blob_data(bb.head), blob_len(bb.head)); ubus_send_event(ctx, method_name, b.head); - DEBUG("Event[%s], for [%s] sent", method_name, dm_path); + INFO("Event[%s], for [%s] sent", method_name, dm_path); blob_buf_free(&bb); blob_buf_free(&b);