Merge Ubus with the 2016.02.26 version.
This commit is contained in:
@@ -81,7 +81,7 @@ ubus_queue_msg(struct ubus_context *ctx, struct ubus_msghdr_buf *buf)
|
||||
pending->hdr.data = data;
|
||||
memcpy(&pending->hdr.hdr, &buf->hdr, sizeof(buf->hdr));
|
||||
memcpy(data, buf->data, blob_raw_len(buf->data));
|
||||
list_add(&pending->list, &ctx->pending);
|
||||
list_add_tail(&pending->list, &ctx->pending);
|
||||
if (ctx->sock.registered)
|
||||
uloop_timeout_set(&ctx->pending_timer, 1);
|
||||
}
|
||||
@@ -105,6 +105,10 @@ ubus_process_msg(struct ubus_context *ctx, struct ubus_msghdr_buf *buf, int fd)
|
||||
|
||||
ubus_process_obj_msg(ctx, buf);
|
||||
break;
|
||||
case UBUS_MSG_MONITOR:
|
||||
if (ctx->monitor_cb)
|
||||
ctx->monitor_cb(ctx, buf->hdr.seq, buf->data);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -192,8 +196,7 @@ int ubus_lookup_id(struct ubus_context *ctx, const char *path, uint32_t *id)
|
||||
req.raw_data_cb = ubus_lookup_id_cb;
|
||||
req.priv = id;
|
||||
|
||||
// Awox Remomve infinite timeout: return ubus_complete_request(ctx, &req, 0);
|
||||
return ubus_complete_request(ctx, &req, 5000);
|
||||
return ubus_complete_request(ctx, &req, 0);
|
||||
}
|
||||
|
||||
static int ubus_event_cb(struct ubus_context *ctx, struct ubus_object *obj,
|
||||
@@ -272,8 +275,10 @@ static void ubus_default_connection_lost(struct ubus_context *ctx)
|
||||
uloop_end();
|
||||
}
|
||||
|
||||
static int _ubus_connect(struct ubus_context *ctx, const char *path)
|
||||
int ubus_connect_ctx(struct ubus_context *ctx, const char *path)
|
||||
{
|
||||
memset(ctx, 0, sizeof(*ctx));
|
||||
|
||||
ctx->sock.fd = -1;
|
||||
ctx->sock.cb = ubus_handle_data;
|
||||
ctx->connection_lost = ubus_default_connection_lost;
|
||||
@@ -317,7 +322,7 @@ static void ubus_auto_connect_cb(struct uloop_timeout *timeout)
|
||||
{
|
||||
struct ubus_auto_conn *conn = container_of(timeout, struct ubus_auto_conn, timer);
|
||||
|
||||
if (_ubus_connect(&conn->ctx, conn->path)) {
|
||||
if (ubus_connect_ctx(&conn->ctx, conn->path)) {
|
||||
uloop_timeout_set(timeout, 1000);
|
||||
fprintf(stderr, "failed to connect to ubus\n");
|
||||
return;
|
||||
@@ -342,7 +347,7 @@ struct ubus_context *ubus_connect(const char *path)
|
||||
if (!ctx)
|
||||
return NULL;
|
||||
|
||||
if (_ubus_connect(ctx, path)) {
|
||||
if (ubus_connect_ctx(ctx, path)) {
|
||||
free(ctx);
|
||||
ctx = NULL;
|
||||
}
|
||||
@@ -350,10 +355,17 @@ struct ubus_context *ubus_connect(const char *path)
|
||||
return ctx;
|
||||
}
|
||||
|
||||
void ubus_free(struct ubus_context *ctx)
|
||||
void ubus_shutdown(struct ubus_context *ctx)
|
||||
{
|
||||
blob_buf_free(&b);
|
||||
if (!ctx)
|
||||
return;
|
||||
close(ctx->sock.fd);
|
||||
free(ctx->msgbuf.data);
|
||||
}
|
||||
|
||||
void ubus_free(struct ubus_context *ctx)
|
||||
{
|
||||
ubus_shutdown(ctx);
|
||||
free(ctx);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user