From: Alexandru Ardelean Date: Thu, 7 Aug 2014 04:32:53 +0000 (+0000) Subject: libubus: fix msgbuf reduction logic during receive X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fubus.git;a=commitdiff_plain;h=6280cbaf0966928c4f83b925fb5b94c3ecb1936e libubus: fix msgbuf reduction logic during receive Signed-off-by: Alexandru Ardelean Signed-off-by: Felix Fietkau --- diff --git a/libubus-io.c b/libubus-io.c index 3280e41..ba22dcb 100644 --- a/libubus-io.c +++ b/libubus-io.c @@ -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) {