diff options
author | Colin Walters <walters@verbum.org> | 2008-12-09 09:15:06 -0500 |
---|---|---|
committer | Colin Walters <walters@verbum.org> | 2008-12-09 09:15:06 -0500 |
commit | 920c3c0292b57b30718dde9f4900790a3b60db1f (patch) | |
tree | 5afa09117b038e63a66b5c46d04f8776da7fa279 | |
parent | 70a0ac620ab4be279ef8e0945307b541e10a1393 (diff) |
Bug 18229: Allow signals
Our previous fix went too far towards lockdown; many things rely
on signals to work, and there's no really good reason to restrict
which signals can be emitted on the bus because we can't tie
them to a particular sender.
-rw-r--r-- | bus/system.conf.in | 2 | ||||
-rw-r--r-- | test/name-test/Makefile.am | 2 | ||||
-rwxr-xr-x | test/name-test/run-test-systemserver.sh | 9 | ||||
-rwxr-xr-x | test/name-test/test-wait-for-echo.py | 41 | ||||
-rw-r--r-- | test/name-test/tmp-session-like-system.conf | 7 |
5 files changed, 60 insertions, 1 deletions
diff --git a/bus/system.conf.in b/bus/system.conf.in index ac2822fa..1b6e716a 100644 --- a/bus/system.conf.in +++ b/bus/system.conf.in @@ -50,6 +50,8 @@ even if they aren't in here --> <allow send_destination="org.freedesktop.DBus"/> <allow receive_sender="org.freedesktop.DBus"/> + <!-- Allow all signals to be sent by default --> + <allow send_type="signal"/> <!-- allow sending valid replies --> <allow send_requested_reply="true" send_type="method_return"/> <allow send_requested_reply="true" send_type="error"/> diff --git a/test/name-test/Makefile.am b/test/name-test/Makefile.am index fee1e606..10a2536d 100644 --- a/test/name-test/Makefile.am +++ b/test/name-test/Makefile.am @@ -10,7 +10,7 @@ else TESTS= endif -EXTRA_DIST=run-test.sh +EXTRA_DIST=run-test.sh run-test-systemserver.sh test-wait-for-echo.py if DBUS_BUILD_TESTS diff --git a/test/name-test/run-test-systemserver.sh b/test/name-test/run-test-systemserver.sh index fd82326c..34dd6487 100755 --- a/test/name-test/run-test-systemserver.sh +++ b/test/name-test/run-test-systemserver.sh @@ -39,3 +39,12 @@ if ! grep -q 'DBus.Error' echo-error-output.tmp; then echo "=====" exit 1 fi + +echo "running test echo signal" +if ! python ./test-wait-for-echo.py; then + echo "Failed test-wait-for-echo" + exit 1 +fi + + +exit 0 diff --git a/test/name-test/test-wait-for-echo.py b/test/name-test/test-wait-for-echo.py new file mode 100755 index 00000000..bd09e459 --- /dev/null +++ b/test/name-test/test-wait-for-echo.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python + +import os,sys + +try: + import gobject + import dbus + import dbus.mainloop.glib +except: + print "Failed import, aborting test" + sys.exit(0) + +dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) +loop = gobject.MainLoop() + +exitcode = 0 + +def handle_noreceipt(): + print "Failed to get signal" + global exitcode + exitcode = 1 + loop.quit() + +gobject.timeout_add(7000, handle_noreceipt) + +bus = dbus.SessionBus() + +def sighandler(*args, **kwargs): + print "got signal" + loop.quit() + +bus.add_signal_receiver(sighandler, dbus_interface='org.freedesktop.TestSuite', signal_name='Foo') + +o = bus.get_object('org.freedesktop.DBus.TestSuiteEchoService', '/org/freedesktop/TestSuite') +i = dbus.Interface(o, 'org.freedesktop.TestSuite') +def nullhandler(*args, **kwargs): + pass +i.EmitFoo(reply_handler=nullhandler, error_handler=nullhandler) + +loop.run() +sys.exit(exitcode) diff --git a/test/name-test/tmp-session-like-system.conf b/test/name-test/tmp-session-like-system.conf index e483c89b..96bbf764 100644 --- a/test/name-test/tmp-session-like-system.conf +++ b/test/name-test/tmp-session-like-system.conf @@ -29,6 +29,8 @@ even if they aren't in here --> <allow send_destination="org.freedesktop.DBus"/> <allow receive_sender="org.freedesktop.DBus"/> + <!-- Allow all signals to be sent by default --> + <allow send_type="signal"/> <!-- valid replies are always allowed --> <allow send_requested_reply="true" send_type="method_return"/> <allow send_requested_reply="true" send_type="error"/> @@ -41,6 +43,11 @@ <policy context="default"> <allow own="org.freedesktop.DBus.TestSuiteEchoService"/> + <allow send_destination="org.freedesktop.DBus.TestSuiteEchoService" + send_interface="org.freedesktop.DBus.Introspectable"/> + <allow send_destination="org.freedesktop.DBus.TestSuiteEchoService" + send_interface="org.freedesktop.TestSuite" + send_member="EmitFoo"/> </policy> <!-- Config files are placed here that among other things, |