Commit graph

62 commits

Author SHA1 Message Date
Eyal Birger
3b8d4b5653 libubus: nullify stale msgbuf pointer in case of ubus_connect_ctx() failure
If the ubus_reconnect() call fails in ubus_connect_ctx(), the msgbuf.data
newly allocated buffer is freed, but its pointer in the ubus_context is not
removed.

This leads to a double free error if ubus_auto_shutdown() is called for cleanup
after ubus_auto_connect() failed to connect to ubusd.

Signed-off-by: Eyal Birger <eyal.birger@gmail.com>
2016-05-15 09:39:24 +02:00
Alexandru Ardelean
85e4de4193 libubus: add null for ubus_context object in ubus_shutdown()
At the moment, we do our own null checks before calling ubus_free().
The likely-hood of 'ctx' being null (in ubus_free()) is low,
but since free() handles null, might make sense for ubus_free() to do so as well.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2015-12-19 12:29:23 +01:00
Felix Fietkau
44a62711e0 libubus: add monitor support
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
2015-11-19 22:32:25 +01:00
Hans Dedecker
95648dadba libubus: Fix reverse order processing of pending ubus notifications messages
Append ubus notification messages to the tail of the pending list
so they're processed in the order as they're put onto the pending list

Signed-off-by: Xinxing Hu <xinxing.huchn@gmail.com>
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
2015-11-02 19:02:53 +01:00
Delio Brignoli
7b79b6226e libubus: expose ubus_connect_ctx() in public API
ubus_connect_ctx() is equivalent to ubus_connect() but accepts a
pointer to a previously allocated ubus_context struct.
ubus_shutdown() is made available as an alternative to ubus_free()
to clean up contexts initialised by ubus_connect_ctx().

Signed-off-by: Delio Brignoli <dbrignoli@audioscience.com>
2014-10-14 09:57:11 +02:00
Felix Fietkau
3e45a782b2 libubus: remove ubus_msghdr_data() by passing in the right data structure pointer
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
2014-09-15 15:33:27 +02:00
Felix Fietkau
7c25c119a5 libubus: use calloc_a for queued msgs to reduce the number of allocations
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
2014-09-15 15:21:40 +02:00
Felix Fietkau
73cbb94b48 libubus: fix a small memleak in ubus_register_event_handler()
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
2014-09-04 20:01:13 +02:00
Alexandru Ardelean
6d24ad71f6 ubus: increase message size limit and make it configurable at build-time 2014-07-03 12:44:19 +02:00
Alexandru Ardelean
7e746e5a85 libubus: refactor ubus_context msgbuf data to be dynamically allocated 2014-07-03 12:42:42 +02:00
Felix Fietkau
3869e0ca07 libubus: fix deferring invoke processing for non-uloop usage
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
2014-06-25 10:24:27 +02:00
Felix Fietkau
bbd3fbc9cc libubus: always defer processing incoming invoke/unsubscribe/notify if there is a request pending
This fixes recursion problems on config reload in netifd and simplifies
application handling of requests

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
2014-06-24 22:34:53 +02:00
Felix Fietkau
47a9ab0c64 libubus: implement file descriptor passing support
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
2014-02-18 15:03:53 +01:00
John Crispin
29d7092252 add auto (re)connect logic to libubus
Signed-off-by: John Crispin <blogic@openwrt.org>
2014-01-22 13:53:11 +00:00
Felix Fietkau
a9ee3ef0cf libubus: pull the variable length data array out of struct ubus_msghdr to fix builds with clang
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
2013-10-29 17:28:37 +01:00
Felix Fietkau
7c140855d9 libubus: free internal blob_buf memory when freeing an ubus context
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
2012-12-30 14:14:22 +01:00
Felix Fietkau
f3fabd45a7 libubus: implement notify handling
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
2012-12-15 00:37:09 +01:00
Felix Fietkau
2224658580 move ubus_start_request to libubus-req.c
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
2012-12-14 19:48:26 +01:00
Felix Fietkau
2cae3fb422 libubus: refactor code, move request handling to libubus-req.c
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
2012-12-14 14:13:27 +01:00
Felix Fietkau
7cd33a8e3a libubus: reduce code duplication and add stack depth protection for unsubscribe/notify callbacks
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
2012-12-14 13:42:10 +01:00
Felix Fietkau
a69f062cbd ubus: add notification for subscribers present/gone
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
2012-12-14 13:00:57 +01:00
Felix Fietkau
d366a6de83 watch add/remove -> subscribe/unsubscribe:
rename the ADD_WATCH/REMOVE_WATCH messages to SUBSCRIBE/UNSUBSCRIBE and change
the message format and libubus API in preparation for adding object notifications

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
2012-12-13 19:35:38 +01:00
Felix Fietkau
a6f52f058e libubus: split out some code into separate source files 2012-10-24 15:07:35 +02:00
Felix Fietkau
7864896a1b add support for deferring a reply to a method invoke call 2012-10-01 14:09:19 +02:00
Felix Fietkau
34161692fa libubus: add support for reconnecting (and re-publishing objects) 2012-05-29 00:56:37 +02:00
Felix Fietkau
c6f7054515 ubusd: add support for watching objects to get notified when they go away 2012-05-19 21:09:35 +02:00
Felix Fietkau
8e5a6af1db libubus: limit stack depth for incoming invoke requests 2011-10-27 14:03:19 +02:00
Felix Fietkau
f07b02b560 libubus: fix recursive synchrnonous invoke commands 2011-10-27 13:46:05 +02:00
Felix Fietkau
1ad3493658 fix invalid message reuse in ubus_process_invoke 2011-10-10 16:47:49 +02:00
Felix Fietkau
7c59d4069c make the socket non-blocking, explicitly wait for data using poll() 2011-09-09 17:53:22 +02:00
Felix Fietkau
cc82d89995 add an error message for "unknown error" 2011-09-05 03:20:07 +02:00
Felix Fietkau
24505f172a add an error code for "operation not supported" 2011-09-05 03:16:59 +02:00
Felix Fietkau
42bc27ae38 add copyright/license information 2011-06-17 16:35:11 +02:00
Felix Fietkau
e49b34f912 simplify object signatures by reusing the parser policy to define them 2011-03-27 20:03:18 +02:00
Felix Fietkau
f2ee96c51d add support for timeouts on synchronous requests 2011-02-11 02:40:39 +01:00
Felix Fietkau
fb45e383c2 remove separate catch all list, always require a pattern argument for registering events, even if it is just * 2011-02-11 01:21:07 +01:00
Felix Fietkau
756d284a0a add writev_retry to avoid incomplete writes 2011-02-11 00:36:10 +01:00
Felix Fietkau
12a8f978cb add sender side length checks 2011-02-07 02:35:24 +01:00
Felix Fietkau
4ab6155577 remove unnecessary debug stuff 2011-02-07 02:09:37 +01:00
Felix Fietkau
b0755698c1 fix max message length handling - exclude the header 2011-02-07 01:52:40 +01:00
Felix Fietkau
f9f602533a add code for sending events and fix the code for receiving events 2011-02-07 01:25:28 +01:00
Felix Fietkau
a93b044d6a make ubus_default_connection_lost static 2011-02-07 00:07:59 +01:00
Felix Fietkau
d2f1a01d9f add ubus_remove_object to libubus 2011-02-06 21:46:45 +01:00
Felix Fietkau
cb1feedb5e follow blob_get_int* -> blob_get_u* rename 2011-02-06 21:37:37 +01:00
Felix Fietkau
f8d55af76b rename publish to add_object 2011-02-06 21:33:03 +01:00
Felix Fietkau
2e83a5fab2 fix SIGINT handling 2011-02-06 02:19:54 +01:00
Felix Fietkau
ed4b742f3f implement code for receiving events 2011-02-05 23:23:44 +01:00
Felix Fietkau
f6a6b0d492 add functionality for registering anonymous objects as event listeners 2011-02-05 19:53:14 +01:00
Felix Fietkau
4f8b3c8d46 remove obsolete debug msgs 2011-01-31 19:55:07 +01:00
Felix Fietkau
768d282ae9 make ubus_parse_msg static 2011-01-31 18:28:14 +01:00