projects
/
project
/
ubus.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
cli: add timeout support for listen command
[project/ubus.git]
/
libubus-io.c
diff --git
a/libubus-io.c
b/libubus-io.c
index
9d3ac6c
..
9320bf3
100644
(file)
--- a/
libubus-io.c
+++ b/
libubus-io.c
@@
-54,7
+54,7
@@
static void wait_data(int fd, bool write)
struct pollfd pfd = { .fd = fd };
pfd.events = write ? POLLOUT : POLLIN;
struct pollfd pfd = { .fd = fd };
pfd.events = write ? POLLOUT : POLLIN;
- poll(&pfd, 1,
0
);
+ poll(&pfd, 1,
-1
);
}
static int writev_retry(int fd, struct iovec *iov, int iov_len, int sock_fd)
}
static int writev_retry(int fd, struct iovec *iov, int iov_len, int sock_fd)
@@
-133,8
+133,8
@@
int __hidden ubus_send_msg(struct ubus_context *ctx, uint32_t seq,
hdr.version = 0;
hdr.type = cmd;
hdr.version = 0;
hdr.type = cmd;
- hdr.seq =
seq
;
- hdr.peer =
peer
;
+ hdr.seq =
cpu_to_be16(seq)
;
+ hdr.peer =
cpu_to_be32(peer)
;
if (!msg) {
blob_buf_init(&b, 0);
if (!msg) {
blob_buf_init(&b, 0);
@@
-281,6
+281,9
@@
static bool get_next_msg(struct ubus_context *ctx, int *recv_fd)
return false;
}
return false;
}
+ hdrbuf.hdr.seq = be16_to_cpu(hdrbuf.hdr.seq);
+ hdrbuf.hdr.peer = be32_to_cpu(hdrbuf.hdr.peer);
+
if (!ubus_validate_hdr(&hdrbuf.hdr))
return false;
if (!ubus_validate_hdr(&hdrbuf.hdr))
return false;
@@
-293,7
+296,8
@@
static bool get_next_msg(struct ubus_context *ctx, int *recv_fd)
iov.iov_base = (char *)ctx->msgbuf.data + sizeof(hdrbuf.data);
iov.iov_len = blob_len(ctx->msgbuf.data);
iov.iov_base = (char *)ctx->msgbuf.data + sizeof(hdrbuf.data);
iov.iov_len = blob_len(ctx->msgbuf.data);
- if (iov.iov_len > 0 && !recv_retry(ctx->sock.fd, &iov, true, NULL))
+ if (iov.iov_len > 0 &&
+ recv_retry(ctx->sock.fd, &iov, true, NULL) <= 0)
return false;
return true;
return false;
return true;
@@
-321,7
+325,7
@@
void __hidden ubus_poll_data(struct ubus_context *ctx, int timeout)
.events = POLLIN | POLLERR,
};
.events = POLLIN | POLLERR,
};
- poll(&pfd, 1, timeout);
+ poll(&pfd, 1, timeout
? timeout : -1
);
ubus_handle_data(&ctx->sock, ULOOP_READ);
}
ubus_handle_data(&ctx->sock, ULOOP_READ);
}