src/network/access/qnetworkaccessmanager.cpp
changeset 33 3e2da88830cd
parent 30 5dc02b23752f
child 37 758a864f9613
--- a/src/network/access/qnetworkaccessmanager.cpp	Tue Jul 06 15:10:48 2010 +0300
+++ b/src/network/access/qnetworkaccessmanager.cpp	Wed Aug 18 10:37:55 2010 +0300
@@ -141,6 +141,32 @@
     can be:
     \snippet doc/src/snippets/code/src_network_access_qnetworkaccessmanager.cpp 1
 
+    \section1 Network and Roaming support
+
+    With the addition of the \l {Bearer Management} API to Qt 4.7
+    QNetworkAccessManager gained the ability to manage network connections.
+    QNetworkAccessManager can start the network interface if the device is
+    offline and terminates the interface if the current process is the last
+    one to use the uplink. Note that some platform utilize grace periods from
+    when the last application stops using a uplink until the system actually
+    terminates the connectivity link. Roaming is equally transparent. Any
+    queued/pending network requests are automatically transferred to new
+    access point.
+
+    Clients wanting to utilize this feature should not require any changes. In fact
+    it is likely that existing platform specific connection code can simply be
+    removed from the application.
+
+    \note The network and roaming support in QNetworkAccessManager is conditional
+    upon the platform supporting connection management. The
+    \l QNetworkConfigurationManager::NetworkSessionRequired can be used to
+    detect whether QNetworkAccessManager utilizes this feature. Currently only
+    Meego/Harmattan and Symbian platforms provide connection management support.
+
+    \note This feature cannot be used in combination with the Bearer Management
+    API as provided by QtMobility. Applications have to migrate to the Qt version
+    of Bearer Management.
+
     \section1 Symbian Platform Security Requirements
 
     On Symbian, processes which use this class must have the
@@ -438,6 +464,15 @@
 #ifndef QT_NO_NETWORKPROXY
     delete d_func()->proxyFactory;
 #endif
+
+    // Delete the QNetworkReply children first.
+    // Else a QAbstractNetworkCache might get deleted in ~QObject
+    // before a QNetworkReply that accesses the QAbstractNetworkCache
+    // object in its destructor.
+    qDeleteAll(findChildren<QNetworkReply *>());
+    // The other children will be deleted in this ~QObject
+    // FIXME instead of this "hack" make the QNetworkReplyImpl
+    // properly watch the cache deletion, e.g. via a QWeakPointer.
 }
 
 #ifndef QT_NO_NETWORKPROXY