X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/380c892e24fe2d60cd8963855511c15ca9858e7b..ccce539843c8f61d4b34b5c608eb422760b0c48e:/src/main/java/org/asamk/signal/commands/DaemonCommand.java diff --git a/src/main/java/org/asamk/signal/commands/DaemonCommand.java b/src/main/java/org/asamk/signal/commands/DaemonCommand.java index 34a80226..e224bf1c 100644 --- a/src/main/java/org/asamk/signal/commands/DaemonCommand.java +++ b/src/main/java/org/asamk/signal/commands/DaemonCommand.java @@ -155,7 +155,7 @@ public class DaemonCommand implements MultiLocalCommand, LocalCommand { final var receiveMode = ns.get("receive-mode"); final var ignoreAttachments = Boolean.TRUE.equals(ns.getBoolean("ignore-attachments")); - c.getAccountNumbers().stream().map(c::getManager).filter(Objects::nonNull).forEach(m -> { + c.getManagers().forEach(m -> { m.setIgnoreAttachments(ignoreAttachments); addDefaultReceiveHandler(m, noReceiveStdOut ? null : outputWriter, receiveMode != ReceiveMode.ON_START); }); @@ -314,13 +314,10 @@ public class DaemonCommand implements MultiLocalCommand, LocalCommand { } } catch (DBusException ignored) { } - connection.unExportObject(path); }); - final var initThreads = c.getAccountNumbers() + final var initThreads = c.getManagers() .stream() - .map(c::getManager) - .filter(Objects::nonNull) .map(m -> exportMultiAccountManager(connection, m, noReceiveOnStart)) .filter(Objects::nonNull) .toList(); @@ -343,42 +340,39 @@ public class DaemonCommand implements MultiLocalCommand, LocalCommand { } else { busType = DBusConnection.DBusBusType.SESSION; } + DBusConnection conn; try { - var conn = DBusConnection.getConnection(busType); + conn = DBusConnection.getConnection(busType); dbusRunner.run(conn, DbusConfig.getObjectPath()); + } catch (DBusException e) { + throw new UnexpectedErrorException("Dbus command failed: " + e.getMessage(), e); + } + try { conn.requestBusName(DbusConfig.getBusname()); - - logger.info("DBus daemon running on {} bus: {}", busType, DbusConfig.getBusname()); } catch (DBusException e) { - logger.error("Dbus command failed", e); - throw new UnexpectedErrorException("Dbus command failed", e); + throw new UnexpectedErrorException("Dbus command failed, maybe signal-cli dbus daemon is already running: " + + e.getMessage(), e); } + + logger.info("DBus daemon running on {} bus: {}", busType, DbusConfig.getBusname()); } private Thread exportMultiAccountManager( final DBusConnection conn, final Manager m, final boolean noReceiveOnStart ) { - try { - final var objectPath = DbusConfig.getObjectPath(m.getSelfNumber()); - return exportDbusObject(conn, objectPath, m, noReceiveOnStart); - } catch (DBusException e) { - logger.error("Failed to export object", e); - return null; - } + final var objectPath = DbusConfig.getObjectPath(m.getSelfNumber()); + return exportDbusObject(conn, objectPath, m, noReceiveOnStart); } private Thread exportDbusObject( final DBusConnection conn, final String objectPath, final Manager m, final boolean noReceiveOnStart - ) throws DBusException { + ) { final var signal = new DbusSignalImpl(m, conn, objectPath, noReceiveOnStart); - conn.exportObject(signal); final var initThread = new Thread(signal::initObjects); initThread.setName("dbus-init"); initThread.start(); - logger.debug("Exported dbus object: " + objectPath); - return initThread; }