diff --git a/wicd/monitor.py b/wicd/monitor.py index b251e02..5dcd157 100755 --- a/wicd/monitor.py +++ b/wicd/monitor.py @@ -294,6 +294,13 @@ class ConnectionStatus(object): if (state != self.last_state or (state == misc.WIRELESS and self.signal_changed)): daemon.EmitStatusChanged(state, info) + + if (state != self.last_state) and (state == misc.NOT_CONNECTED) and \ + (not daemon.GetForcedDisconnect()): + daemon.Disconnect() + # Disconnect() sets forced disconnect = True + # so we'll revert that + daemon.SetForcedDisconnect(False) self.last_state = state return True @@ -345,6 +352,10 @@ class ConnectionStatus(object): # network again. Otherwise just call Autoconnect. cur_net_id = wireless.GetCurrentNetworkID(self.iwconfig) if from_wireless and cur_net_id > -1: + # make sure disconnect scripts are run + # before we reconnect + print 'Disconnecting from network' + wireless.DisconnectWireless() print 'Trying to reconnect to last used wireless ' + \ 'network' wireless.ConnectWireless(cur_net_id) diff --git a/wicd/wicd-daemon.py b/wicd/wicd-daemon.py index 5ba62a3..a677512 100644 --- a/wicd/wicd-daemon.py +++ b/wicd/wicd-daemon.py @@ -1147,6 +1147,8 @@ class WirelessDaemon(dbus.service.Object): self.wifi.post_disconnect_script = self.GetWirelessProperty(id, 'postdisconnectscript') print 'Connecting to wireless network ' + str(self.LastScan[id]['essid']) + # disconnect to make sure that scripts are run + self.wifi.Disconnect() self.daemon.wired_bus.wired.Disconnect() self.daemon.SetForcedDisconnect(False) conthread = self.wifi.Connect(self.LastScan[id], debug=self.debug_mode) @@ -1439,6 +1441,8 @@ class WiredDaemon(dbus.service.Object): self.wired.pre_disconnect_script = self.GetWiredProperty("predisconnectscript") self.wired.post_disconnect_script = self.GetWiredProperty("postdisconnectscript") self.daemon.wireless_bus.wifi.Disconnect() + # make sure disconnect scripts are run + self.wired.Disconnect() self.daemon.SetForcedDisconnect(False) self.UnsetWiredLastUsed() self.config.set(self._cur_wired_prof_name, "lastused", True, write=True)