Skip to content

In version 5, withAutoConnect(false) appears broken. #238

Closed
@brett-smith

Description

@brett-smith

I think something is now up with withAutoConnect(false) in the latest code.

This on it's own ...

var bldr = DBusConnectionBuilder.forAddress(baddr);
bldr.transportConfig().withAutoConnect(false);

var conx = bldr.build();
conx.connect();

.. does not work, resulting in an exception when build() is called.

org.freedesktop.dbus.exceptions.DBusException: Not Connected
	at org.freedesktop.dbus@5.0.0-SNAPSHOT/org.freedesktop.dbus.connections.impl.DBusConnection.connect(DBusConnection.java:98)
	at org.freedesktop.dbus@5.0.0-SNAPSHOT/org.freedesktop.dbus.connections.impl.DBusConnectionBuilder.build(DBusConnectionBuilder.java:202)
	at com.sshtools.djfeet.ui/com.sshtools.djfeet.ui.NewBusPage.run(NewBusPage.java:203)

You have to do this ...

var bldr = DBusConnectionBuilder.forAddress(baddr);
bldr.withRegisterSelf(false);
bldr.transportConfig().withAutoConnect(false);

var conx = bldr.build();
conx.connect();

This connects fine, but it means the Hello() was never sent and any subsequent messages are just going to fail. As far as I can tell, its not possible to send the hello myself either, as an internal list is updated at that point.

Incidentally, the reason I tried without auto-connect in the first place was to get some control over exceptions. I have an external transport (you may remember i mentioned an SSH transport before). If that SSH connection fails for a reason I know a retry will not help, I have to now throw a some unchecked exception (e.g. IllegalStateException) instead of IOException which seems to make it try again. I can defeat this behaviour by setting TransportConfig.setTimeout() to exactly 500.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions