[OpenWrt-Devel] [PATCH 0/6] increase ubus message size above 64k

Alexandru Ardelean ardeleanalex at gmail.com
Fri Jun 27 12:11:38 EDT 2014


ubus has a message size limit of about 64k.
For some cases [like complex JSON config strings] this limit
can be insufficient.
Another case is when wanting to send some large base64 encoded
strings of various (including binary) data.

The following set of patches remove that limit.
Currently there is no limitation to the size of the packets.
My tests have worked stable with 10 MB strings on a 
x86_64 + MIPS with 128 MB RAM.
I've tested those strings for correctness with diff and meld.

These patches are submitted for review.

First 6 patches are the functionality update itself + fixes.

The last patch is an update to the example server-client.
It sends strings of numbers over ubus, and the server part
validates it.

The changes can also be (re)viewed here:
   https://github.com/commodo/ubus/commits/ubus_msg_size

Alexandru Ardelean (6):
  libubus: refactor ubus_context msgbuf data to be dynamically allocated
  ubus: increase message size limit and make it configurable at
    build-time
  libubus: add logic to reduce msgbuf data size after 16 small messages
  libubus: fix writev_retry() function when writing large packets
  ubusd: replace ubusd_msg_unshare() with ubus_msg_new() to prevent
    invalid free-ing
  ubus: add count test to validate large message sizes

 CMakeLists.txt          |  2 ++
 examples/CMakeLists.txt |  4 +--
 examples/client.c       | 78 +++++++++++++++++++++++++++++++++++++++++++++++++
 examples/count.c        | 48 ++++++++++++++++++++++++++++++
 examples/count.h        | 19 ++++++++++++
 examples/server.c       | 40 +++++++++++++++++++++++++
 libubus-io.c            | 46 +++++++++++++++++++++++++----
 libubus.c               | 23 +++++++++++----
 libubus.h               | 15 ++++++----
 ubusd.c                 | 14 +--------
 ubusmsg.h               |  2 +-
 11 files changed, 260 insertions(+), 31 deletions(-)
 create mode 100644 examples/count.c
 create mode 100644 examples/count.h

-- 
1.8.4.5
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list