diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2018-05-15 11:27:42 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2018-05-27 11:01:42 +0200 |
commit | 38f9510a9893b12cd6746c3daeeb2c84166746b1 (patch) | |
tree | 91d0d5c90ea88431c3f30a74d3ab59e9787c79c5 /plugins/simtech | |
parent | 67ecad51e163b131a1331ffcb09af18269c39025 (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