projects
/
platform
/
upstream
/
systemd.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
1fee9de
)
bus: detect blocking message calls to our own connection and return ELOOP early
author
Lennart Poettering
<lennart@poettering.net>
Mon, 11 Nov 2013 22:42:30 +0000
(23:42 +0100)
committer
Lennart Poettering
<lennart@poettering.net>
Mon, 11 Nov 2013 23:12:44 +0000
(
00:12
+0100)
src/libsystemd-bus/sd-bus.c
patch
|
blob
|
history
diff --git
a/src/libsystemd-bus/sd-bus.c
b/src/libsystemd-bus/sd-bus.c
index
3ecda17
..
89437c1
100644
(file)
--- a/
src/libsystemd-bus/sd-bus.c
+++ b/
src/libsystemd-bus/sd-bus.c
@@
-1637,6
+1637,19
@@
_public_ int sd_bus_call(
sd_bus_message_unref(incoming);
return -EIO;
+
+ } else if (incoming->header->serial == serial &&
+ bus->unique_name &&
+ incoming->sender &&
+ streq(bus->unique_name, incoming->sender)) {
+
+ /* Our own message? Somebody is trying
+ * to send its own client a message,
+ * let's not dead-lock, let's fail
+ * immediately. */
+
+ sd_bus_message_unref(incoming);
+ return -ELOOP;
}
/* There's already guaranteed to be room for