aboutsummaryrefslogtreecommitdiff
path: root/plugins/simtech
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2018-05-15 11:27:42 +0200
committerAleksander Morgado <aleksander@aleksander.es>2018-05-27 11:01:42 +0200
commit38f9510a9893b12cd6746c3daeeb2c84166746b1 (patch)
tree91d0d5c90ea88431c3f30a74d3ab59e9787c79c5 /plugins/simtech
parent67ecad51e163b131a1331ffcb09af18269c39025 (diff)
iface-modem-time: don't hold a ref while waiting to be registered
The logic implementing the network timezone loading was holding a strong reference to the modem (inside the GTask) while waiting to be registered. This was triggering some possible memory leaks as the modem object could have been left around even after the modem was disconnected. E.g. if the modem booted without antennas plugged in, it was never getting registered, and if we unplugged it right away in that state, the network timezone logic would have left a modem reference around without disposing it. This issue, combined with e.g. other interfaces relying on disposing its own logic with the last object reference (e.g. Signal interface sets up its logic in a context bound to the lifetime of the object) would mean that a lot of different logic blocks were kept running even after the modem device was unplugged from the system. We avoid this issue by making sure that no new additional reference is taken by the logic in charge of updating the network timezone. We just make the timezone update context be bound to the lifetime of the object, as other interfaces do. While doing this, we also remove the logic in charge of "cancelling" the context, as it isn't needed. If the logic needs to be cancelled, we would just remove any configured timeout, which is enough. As part of the changes, the logic has also been improved so that the network timezone isn't only updated the first time the modem gets registered. If the modem gets unregistered and re-registered, we would reload the network timezone information.
Diffstat (limited to 'plugins/simtech')
0 files changed, 0 insertions, 0 deletions