From: Lennart Poettering Date: Tue, 19 Nov 2013 00:21:27 +0000 (+0100) Subject: bus: bump serial number counter when sending already sealed messages X-Git-Tag: v209~1387 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=aea93debfa1281a7d5f1523225b043955c1c2472;p=elogind.git bus: bump serial number counter when sending already sealed messages --- diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c index d93138bb1..0be5a29f3 100644 --- a/src/libsystemd-bus/sd-bus.c +++ b/src/libsystemd-bus/sd-bus.c @@ -1271,8 +1271,13 @@ static int bus_seal_message(sd_bus *b, sd_bus_message *m) { if (m->header->version > b->message_version) return -EPERM; - if (m->sealed) + if (m->sealed) { + /* If we copy the same message to multiple + * destinations, avoid using the same serial + * numbers. */ + b->serial = MAX(b->serial, BUS_MESSAGE_SERIAL(m)); return 0; + } return bus_message_seal(m, ++b->serial); }