Hello community, here is the log from the commit of package zmd checked in at Mon Apr 24 21:20:42 CEST 2006. -------- --- zmd/zmd.changes 2006-04-24 19:42:50.000000000 +0200 +++ STABLE/zmd/zmd.changes 2006-04-24 21:02:53.000000000 +0200 @@ -1,0 +2,5 @@ +Mon Apr 24 21:02:41 CEST 2006 - maw@suse.de + +- Bring back zmd-networkmanager-reconnect.diff. + +------------------------------------------------------------------- New: ---- zmd-networkmanager-reconnect.diff ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ zmd.spec ++++++ --- /var/tmp/diff_new_pack.Gyu0wt/_old 2006-04-24 21:20:28.000000000 +0200 +++ /var/tmp/diff_new_pack.Gyu0wt/_new 2006-04-24 21:20:28.000000000 +0200 @@ -14,13 +14,14 @@ BuildRequires: dbus-1-mono log4net mono-basic mono-data-sqlite mono-devel perl-XML-Parser rpm-devel sqlite-devel URL: http://www.novell.com Version: 7.1.1.0 -Release: 20 +Release: 21 License: LGPL BuildRoot: %{_tmppath}/%{name}-%{version}-build Source0: %{name}-%{version}.tar.bz2 Patch0: %{name}-makefile-docdir.patch Patch1: verified-certs.patch Patch2: dont-run-transaction-test.patch +Patch3: zmd-networkmanager-reconnect.diff Summary: Novell ZENworks Linux Management daemon Group: System/Daemons Autoreqprov: on @@ -66,6 +67,7 @@ %patch0 %patch1 %patch2 +%patch3 %build libtoolize -f @@ -154,6 +156,8 @@ %changelog -n zmd * Mon Apr 24 2006 - maw@suse.de +- Bring back zmd-networkmanager-reconnect.diff. +* Mon Apr 24 2006 - maw@suse.de - Set run-transaction-test to False. (#167831). - Remove the patch for 156995, as it is now in svn. - Remove zmd-networkmanager-reconnect.diff for now, as it broke the ++++++ zmd-networkmanager-reconnect.diff ++++++ --- modules/linux/NetworkManager/Manager.cs 24 Feb 2006 10:00:31 -0000 +++ modules/linux/NetworkManager/Manager.cs 24 Apr 2006 10:00:31 -0000 @@ -30,6 +30,7 @@ using System; using System.Reflection; using System.Collections; +using System.Threading; using DBus; namespace NetworkManager @@ -68,6 +69,8 @@ { private static readonly string PATH_NAME = "/org/freedesktop/NetworkManager"; private static readonly string INTERFACE_NAME = "org.freedesktop.NetworkManager"; + private static readonly string DBUS_LOCAL_PATH_NAME = "/org/freedesktop/DBus/Local"; + private static readonly string DBUS_LOCAL_INTERFACE_NAME = "org.freedesktop.DBus.Local"; private Service dbus_service; private Connection dbus_connection; @@ -88,11 +91,7 @@ public Manager() { - dbus_connection = Bus.GetSystemBus(); - dbus_service = Service.Get(dbus_connection, INTERFACE_NAME); - manager = (ManagerProxy)dbus_service.GetObject(typeof(ManagerProxy), PATH_NAME); - - dbus_service.SignalCalled += OnSignalCalled; + Connect(); } public void Dispose() @@ -101,8 +100,47 @@ System.GC.SuppressFinalize(manager); } + private void Connect() + { + dbus_connection = Bus.GetSystemBus(); + dbus_connection.ExitOnDisconnect = false; + dbus_service = Service.Get(dbus_connection, INTERFACE_NAME); + manager = (ManagerProxy)dbus_service.GetObject(typeof(ManagerProxy), PATH_NAME); + + dbus_service.SignalCalled += OnSignalCalled; + } + + private void Reconnect() + { + while(true) { + Thread.Sleep(3000); + + try { + Connect(); + return; + } catch(DBusException) { + } catch(ApplicationException) { + } + } + } + private void OnSignalCalled(Signal signal) { + if(signal.PathName == DBUS_LOCAL_PATH_NAME + && signal.InterfaceName == DBUS_LOCAL_INTERFACE_NAME) { + switch(signal.Name) { + case "Disconnected": + dbus_connection.Dispose(); + dbus_service.SignalCalled -= OnSignalCalled; + Dispose(); + + Thread reconnect_thread = new Thread(Reconnect); + reconnect_thread.IsBackground = true; + reconnect_thread.Start(); + break; + } + } + if(signal.PathName != PATH_NAME || signal.InterfaceName != INTERFACE_NAME) { return; } ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun...