From: Tom Gundersen Date: Sat, 19 Apr 2014 18:32:01 +0000 (+0200) Subject: sd-rtnl: socet_read_message - make sure we only shrink the partial rqueue when proces... X-Git-Tag: v213~371 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=d4ef4f46cfa393f65c7312a18bc798db43018cd0;p=elogind.git sd-rtnl: socet_read_message - make sure we only shrink the partial rqueue when processing multi-part message --- diff --git a/src/libsystemd/sd-rtnl/rtnl-message.c b/src/libsystemd/sd-rtnl/rtnl-message.c index 3362958f3..a5b09edda 100644 --- a/src/libsystemd/sd-rtnl/rtnl-message.c +++ b/src/libsystemd/sd-rtnl/rtnl-message.c @@ -1226,16 +1226,16 @@ int socket_read_message(sd_rtnl *rtnl) { if (r < 0) return r; - if (i < rtnl->rqueue_partial_size) { + rtnl->rqueue[rtnl->rqueue_size ++] = first; + first = NULL; + + if (multi_part && (i < rtnl->rqueue_partial_size)) { /* remove the message form the partial read queue */ memmove(rtnl->rqueue_partial + i,rtnl->rqueue_partial + i + 1, sizeof(sd_rtnl_message*) * (rtnl->rqueue_partial_size - i - 1)); rtnl->rqueue_partial_size --; } - rtnl->rqueue[rtnl->rqueue_size ++] = first; - first = NULL; - return 1; } else { /* we only got a partial multi-part message, push it on the