From a63db013c53a49a6654a55a99f83a36d81b74d27 Mon Sep 17 00:00:00 2001 From: Olivier Blin Date: Tue, 3 Mar 2009 18:17:12 +0000 Subject: fix crash in net_applet when mandi is started (happens if mandi was not available at net_applet start), this requires some API change to split init code, so that we do not add the dbus filters every time we try to reconnect the network::ifw object --- lib/network/net_applet/ifw.pm | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'lib/network/net_applet') diff --git a/lib/network/net_applet/ifw.pm b/lib/network/net_applet/ifw.pm index f7fd326..22fc432 100644 --- a/lib/network/net_applet/ifw.pm +++ b/lib/network/net_applet/ifw.pm @@ -5,8 +5,8 @@ use network::ifw; use ugtk2 qw(:create :helpers :wrappers :dialogs); use mygtk2 qw(gtknew gtkset); -sub create() { - $network::net_applet::ifw = network::ifw->new($network::net_applet::dbus, sub { +sub init() { + network::ifw::init($network::net_applet::dbus, sub { my ($_con, $msg) = @_; my $member = $msg->get_member; if ($member eq 'Attack') { @@ -14,12 +14,21 @@ sub create() { } elsif ($member eq 'Listen') { handle_ifw_listen($msg->get_args_list); } elsif ($member eq 'Init') { - $network::net_applet::ifw->attach_object; - main::checkNetworkForce(); + create(); } elsif ($member eq 'AlertAck') { $network::net_applet::ifw_alert = 0; } }); + create(); +} + +sub create() { + if ($network::net_applet::ifw) { + $network::net_applet::ifw->attach_object; + main::checkNetworkForce(); + } else { + $network::net_applet::ifw = eval { network::ifw->new($network::net_applet::dbus) }; + } } sub enable_ifw_alert() { -- cgit v1.2.1