libubus: fix msgbuf reduction logic during receive

Signed-off-by: Alexandru Ardelean <aa@ocedo.com>
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
This commit is contained in:
Alexandru Ardelean 2014-08-07 04:32:53 +00:00 committed by Felix Fietkau
parent b79e808944
commit 6280cbaf09

View file

@ -254,15 +254,11 @@ static bool get_next_msg(struct ubus_context *ctx, int *recv_fd)
return false;
len = blob_raw_len(&hdrbuf.data);
if (len > ctx->msgbuf_data_len) {
if (len > ctx->msgbuf_data_len)
ctx->msgbuf_reduction_counter = UBUS_MSGBUF_REDUCTION_INTERVAL;
} else if (ctx->msgbuf_data_len > UBUS_MSG_CHUNK_SIZE) {
if (ctx->msgbuf_reduction_counter > 0) {
len = -1;
--ctx->msgbuf_reduction_counter;
} else
len = UBUS_MSG_CHUNK_SIZE;
} else
else if (ctx->msgbuf_reduction_counter > 0 && len < UBUS_MSG_CHUNK_SIZE)
len = !--ctx->msgbuf_reduction_counter ? UBUS_MSG_CHUNK_SIZE : -1;
else
len = -1;
if (len > -1) {