49 lines
2.2 KiB
Diff
49 lines
2.2 KiB
Diff
From 48c8032695fedbd92bb24a2c2d4c3a4d83732409 Mon Sep 17 00:00:00 2001
|
|
From: zhuofeng <zhuofeng2@huawei.com>
|
|
Date: Mon, 6 Mar 2023 15:19:06 +0800
|
|
Subject: [PATCH] fix sender_seen memory leak
|
|
|
|
---
|
|
slip/dbus/service.py | 17 +++++++++--------
|
|
1 file changed, 9 insertions(+), 8 deletions(-)
|
|
|
|
diff --git a/slip/dbus/service.py b/slip/dbus/service.py
|
|
index 5d276f8..bf4cb77 100644
|
|
--- a/slip/dbus/service.py
|
|
+++ b/slip/dbus/service.py
|
|
@@ -224,11 +224,12 @@ class Object(with_metaclass(InterfaceType, dbus.service.Object)):
|
|
if not new_owner and (old_owner, conn) in Object.senders:
|
|
Object.senders.remove((old_owner, conn))
|
|
Object.connections_senders[conn].remove(old_owner)
|
|
+ if old_owner in Object.connections_smobjs:
|
|
+ Object.connections_smobjs[old_owner].remove()
|
|
+ del Object.connections_smobjs[old_owner]
|
|
|
|
if len(Object.connections_senders[conn]) == 0:
|
|
- Object.connections_smobjs[conn].remove()
|
|
del Object.connections_senders[conn]
|
|
- del Object.connections_smobjs[conn]
|
|
|
|
if not self.persistent and len(Object.senders) == 0 and \
|
|
Object.current_source is None:
|
|
@@ -251,10 +252,10 @@ class Object(with_metaclass(InterfaceType, dbus.service.Object)):
|
|
Object.senders.add((sender, self.connection))
|
|
if self.connection not in Object.connections_senders:
|
|
Object.connections_senders[self.connection] = set()
|
|
- Object.connections_smobjs[self.connection] = \
|
|
- self.connection.add_signal_receiver(
|
|
- handler_function=self._name_owner_changed,
|
|
- signal_name='NameOwnerChanged',
|
|
- dbus_interface='org.freedesktop.DBus',
|
|
- arg1=sender)
|
|
+ Object.connections_smobjs[sender] = \
|
|
+ self.connection.add_signal_receiver(
|
|
+ handler_function=self._name_owner_changed,
|
|
+ signal_name='NameOwnerChanged',
|
|
+ dbus_interface='org.freedesktop.DBus',
|
|
+ arg1=sender)
|
|
Object.connections_senders[self.connection].add(sender)
|
|
--
|
|
2.27.0
|
|
|