2013-11-30 2 views
1

Я использую gio и эту реализацию DBus для регистрации некоторого внутреннего объекта демона. Я провела все испытания с широким Dbus SESSION, и все работало нормально, но я попытался использовать системную регистрацию, и так как моя регистрация имени не удалась.DBus, не удалось получить системное имя

Я использую имя g_bus_own_name для получения имени, и мое сообщение об ошибке отвечает сценарию bus_acquired_handler then name_lost_handler.

любые идеи, как я могу решить эту проблему, или как я могу получить дополнительную информацию об ошибке?

ПИБ: https://developer.gnome.org/gio/2.38/gio-Owning-Bus-Names.html#g-bus-own-name

Это DBus-монитор трассировки:

Сигнал датчика = org.freedesktop.DBus -> приемник =: 1,96 серийный = 2 = путь/орг/Freedesktop/DBus; Интерфейс = org.freedesktop.DBus; Член = NameAcquired
строка ": 1,96" отправитель сигнала


=: 1.95 -> приемник = (нуль-пункт назначения) серийный = 3 = путь/орг/AST/AstCore; интерфейс = org.freedesktop.DBus.Properties; Член = PropertiesChanged
строку "org.ast.AstCore"
массив [
запись ДИКТ (
строка "состояние"
вариант int32 3
)
]
массив [
]


сигнал отправителя =: 1.95 -> dest = (нулевой пункт назначения) serial = 5 path =/или г/AST/AstCore; интерфейс = org.freedesktop.DBus.Properties; Член = PropertiesChanged
строку "org.ast.AstCore"
массив [
запись ДИКТ (
строка "состояние"
вариант int32 4
)
]
массив [
]


сигнальный отправитель = org.freedesktop.DBus -> dest = (null destination) se rial = 173 path =/org/freedesktop/DBus; Интерфейс = org.freedesktop.DBus; член = NameOwnerChanged
строка ": 1,95"
строка ": 1,95"
строка ""


отправитель сигнала = org.freedesktop.DBus -> приемник = (нуль назначения) последовательный = 174 путь =/орг/Freedesktop/DBus; Интерфейс = org.freedesktop.DBus; член = NameOwnerChanged
string ": 1.97"
string ""
string ": 1.97"


+3

Параметры безопасности шины, вероятно, предотвращают ее. Проверьте файлы в '/ etc/dbus-1/system.xml' и'/etc/dbus-1/system.d/' – rm5248

ответ

1

Никогда не используйте нулевой пункт назначения с GDBus, он не будет реализован.

Я подал несколько патчей несколько недель назад, но кажется, что интерфейс NULL вызовов будут удалены из спецификации DBus вполне soonish.

https://bugzilla.gnome.org/show_bug.cgi?id=706675


Обратите внимание, что DBus демон будет фильтровать NULL сообщения интерфейса выхода из с Tream и просто бросить их (последние 2 сообщения) - после того, как все NULL интерфейсы потенциальный поток безопасности и может обойти фильтрацию глобального Dbus-демона:

https://bugs.freedesktop.org/show_bug.cgi?id=68597

3

Как уже упоминалось в/и т.д./DBus-1/system.conf

<!-- Holes must be punched in service configuration files for 
    name ownership and sending method calls --> 
<deny own="*"/> 
... 

Добавьте свой собственный конфигурационный файл (например astcore.conf) в /etc/dbus-1/system.d/, чтобы ваше приложение, чтобы иметь конкретное название автобуса.

Смежные вопросы