[Interest] QNetworkAccessManager doesn't recover when network is reconnected on Ubuntu.
Nesuan Taiso
nesuan23 at gmail.com
Wed Dec 2 09:27:40 CET 2015
On Ubuntu 15, if the network is disabled using the notification tray
icon, then network requests fail (as expected).
The first failure is 'NetworkSessionFailedError' and subsequent failures
are 'UnknownNetworkError'.
But even once the network is reenabled, the network requests continue to
fail indefinitely (still with 'UnknownNetworkError').
Demo code and log from sample run shown below.
I also tested on Windows and the problem did not happen (i.e. requests
resume normally after network is reconnected).
How do I make Ubuntu behave the same as Windows? Do I need to 'reset'
the Qt network stack or something when I have an error on this platform?
I am a novice so it's probably just something simple I forgot. Any
suggestions much appreciated!
=== CODE ===
#include <memory>
#include <QtCore>
#include <QtNetwork>
int main(int argc, char *argv[]) {
QCoreApplication application(argc, argv);
QNetworkAccessManager networkAccessManager;
while (true) {
QEventLoop loop;
QNetworkRequest request;
request.setUrl(QUrl("http://www.google.com/"));
qDebug() << QTime::currentTime() << "GET/POST";
std::unique_ptr<QNetworkReply>
reply(networkAccessManager.get(request));
QObject::connect(&*reply, static_cast<void
(QNetworkReply::*)(QNetworkReply::NetworkError)>(&QNetworkReply::error),
[&loop](QNetworkReply::NetworkError error) {
qDebug() << QTime::currentTime() << "error" << error;
loop.quit();
}
);
QObject::connect(&*reply, &QNetworkReply::finished,
[&loop]() {
qDebug() << QTime::currentTime() << "finished";
loop.quit();
}
);
loop.exec();
QThread::sleep(1);
}
return application.exec();
}
=== LOG ===
QTime("19:16:00.441") GET/POST
qt.network.ssl: QSslSocket: cannot resolve SSLv2_client_method
qt.network.ssl: QSslSocket: cannot resolve SSLv2_server_method
QTime("19:16:01.015") finished
QTime("19:16:02.016") GET/POST
QTime("19:16:02.551") finished
QTime("19:16:03.551") GET/POST
QTime("19:16:04.177") finished
QTime("19:16:05.177") GET/POST
QTime("19:16:05.595") finished
QTime("19:16:06.596") GET/POST
QTime("19:16:07.130") finished
QTime("19:16:08.130") GET/POST
QTime("19:16:13.038") error
QNetworkReply::NetworkError(NetworkSessionFailedError)
QTime("19:16:13.046") finished
QTime("19:16:14.048") GET/POST
QTime("19:16:14.049") error QNetworkReply::NetworkError(UnknownNetworkError)
QTime("19:16:14.049") finished
QTime("19:16:15.050") GET/POST
QTime("19:16:15.050") error QNetworkReply::NetworkError(UnknownNetworkError)
QTime("19:16:15.050") finished
QTime("19:16:16.053") GET/POST
QTime("19:16:16.053") error QNetworkReply::NetworkError(UnknownNetworkError)
QTime("19:16:16.053") finished
More information about the Interest
mailing list