projects
/
project
/
ubus.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
make ubusd_get_client_by_id static
[project/ubus.git]
/
ubusd.c
diff --git
a/ubusd.c
b/ubusd.c
index
a1636aa
..
a283f59
100644
(file)
--- a/
ubusd.c
+++ b/
ubusd.c
@@
-12,7
+12,7
@@
#include "ubusd.h"
#include "ubusd.h"
-st
atic st
ruct avl_tree clients;
+struct avl_tree clients;
static struct ubus_msg_buf *ubus_msg_unshare(struct ubus_msg_buf *ub)
{
static struct ubus_msg_buf *ubus_msg_unshare(struct ubus_msg_buf *ub)
{
@@
-95,7
+95,7
@@
static void ubus_msg_enqueue(struct ubus_client *cl, struct ubus_msg_buf *ub)
if (cl->tx_queue[cl->txq_tail])
return;
if (cl->tx_queue[cl->txq_tail])
return;
- cl->tx_queue[cl->txq_tail] = ub;
+ cl->tx_queue[cl->txq_tail] = ub
us_msg_ref(ub)
;
cl->txq_tail = (cl->txq_tail + 1) % ARRAY_SIZE(cl->tx_queue);
}
cl->txq_tail = (cl->txq_tail + 1) % ARRAY_SIZE(cl->tx_queue);
}
@@
-180,8
+180,6
@@
static void client_cb(struct uloop_fd *sock, unsigned int events)
}
break;
}
}
break;
}
- if (written == 0)
- break;
cl->txq_ofs += written;
if (cl->txq_ofs < ub->len + sizeof(ub->hdr))
cl->txq_ofs += written;
if (cl->txq_ofs < ub->len + sizeof(ub->hdr))
@@
-208,7
+206,7
@@
retry:
if (cl->pending_msg_offset < sizeof(cl->hdrbuf))
goto out;
if (cl->pending_msg_offset < sizeof(cl->hdrbuf))
goto out;
- if (blob_
len(&cl->hdrbuf.data) + sizeof(cl->hdrbuf
) > UBUS_MAX_MSGLEN)
+ if (blob_
pad_len(&cl->hdrbuf.data
) > UBUS_MAX_MSGLEN)
goto disconnect;
cl->pending_msg = ubus_msg_new(NULL, blob_raw_len(&cl->hdrbuf.data), false);
goto disconnect;
cl->pending_msg = ubus_msg_new(NULL, blob_raw_len(&cl->hdrbuf.data), false);
@@
-251,17
+249,6
@@
disconnect:
handle_client_disconnect(cl);
}
handle_client_disconnect(cl);
}
-struct ubus_client *ubusd_get_client_by_id(uint32_t id)
-{
- struct ubus_id *clid;
-
- clid = ubus_find_id(&clients, id);
- if (!clid)
- return NULL;
-
- return container_of(clid, struct ubus_client, id);
-}
-
static bool get_next_connection(int fd)
{
struct ubus_client *cl;
static bool get_next_connection(int fd)
{
struct ubus_client *cl;
@@
-313,9
+300,20
@@
static struct uloop_fd server_fd = {
.cb = server_cb,
};
.cb = server_cb,
};
+static int usage(const char *progname)
+{
+ fprintf(stderr, "Usage: %s [<options>]\n"
+ "Options: \n"
+ " -s <socket>: Set the unix domain socket to listen on\n"
+ "\n", progname);
+ return 1;
+}
+
int main(int argc, char **argv)
{
int main(int argc, char **argv)
{
+ const char *ubus_socket = UBUS_UNIX_SOCKET;
int ret = 0;
int ret = 0;
+ int ch;
signal(SIGPIPE, SIG_IGN);
signal(SIGPIPE, SIG_IGN);
@@
-323,8
+321,18
@@
int main(int argc, char **argv)
uloop_init();
uloop_init();
- unlink(UBUS_UNIX_SOCKET);
- server_fd.fd = usock(USOCK_UNIX | USOCK_SERVER | USOCK_NONBLOCK, UBUS_UNIX_SOCKET, NULL);
+ while ((ch = getopt(argc, argv, "s:")) != -1) {
+ switch (ch) {
+ case 's':
+ ubus_socket = optarg;
+ break;
+ default:
+ return usage(argv[0]);
+ }
+ }
+
+ unlink(ubus_socket);
+ server_fd.fd = usock(USOCK_UNIX | USOCK_SERVER | USOCK_NONBLOCK, ubus_socket, NULL);
if (server_fd.fd < 0) {
perror("usock");
ret = -1;
if (server_fd.fd < 0) {
perror("usock");
ret = -1;
@@
-333,6
+341,7
@@
int main(int argc, char **argv)
uloop_fd_add(&server_fd, ULOOP_READ | ULOOP_EDGE_TRIGGER);
uloop_run();
uloop_fd_add(&server_fd, ULOOP_READ | ULOOP_EDGE_TRIGGER);
uloop_run();
+ unlink(ubus_socket);
out:
uloop_done();
out:
uloop_done();