hypfvieh / dbus-java

Improved version of java DBus library provided by freedesktop.org (https://dbus.freedesktop.org/doc/dbus-java/)
https://hypfvieh.github.io/dbus-java/
MIT License
180 stars 72 forks source link

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

Closed brett-smith closed 11 months ago

brett-smith commented 11 months ago

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.

hypfvieh commented 11 months ago

Thanks for the report. I reviewed the part and updated the code. Please take a look.

brett-smith commented 11 months ago

Perfect. It now acts exactly as I'd expect. Closing.