Comment 68 for bug 1480877

Revision history for this message
Tony Espy (awe) wrote :

I just added tasks for the packages mentioned in comment #65.

Some things learned today:

 - the sub-component of QNetwork that's most likely the cause is called Bearer Management. One of it's classes, QNetworkSession includes a plugin for NetworkManager which creates listeners for new AccessPoint DBus objects.

 - msyncd ( part of buteo-syncfw ) includes it's own internal NetworkManager class ( dated from 2010 ) which in turn uses QNetworkSession.

 - unity8 appears to use QNetworkAccessManager, which uses QNetworkSession.

 - sync-monitor uses QNetworkConfigurationManager, which is also part of Bearer Management, and most likely causes a QNetworkSession to be instantiated.

- maliit-framework is the only puzzle, as it doesn't seem to have any network code. It does use QGuiApplication however, which might in turn hook into the network code.

 - the bulk of the code involved on the Qt side can be found in the qtbase-opensource-base source package.

 - I'm no expert in QtDBus, but from what I can tell, to listen to a DBus signal ( which causes a match rule to be created ), you need to call connect on an instance of a DBusConnection, similar to what you'd do with a native Qt signal and slot. Conversely, to remove a signal watch, you need to call the disconnect() function.

 - The connect to for a new new AccessPoint object can be found in src/plugins/bearer/networkmanager/networkmanagerservice.cpp in the funcion QNetworkManagerInterfaceAccessPoint::QNetworkManagerInterfaceAccessPoint().

 - I don't see any corresponding cleanup code when an access point is removed ( ie. there's no disconnect() call made to the bus )

That's all I have for now...