[Interest] Does QNetworkAccessManager support HTTP persistent connections? (keep-alive)

Sze Howe Koh szehowe.koh at gmail.com
Thu Jul 26 02:57:33 CEST 2018


On Thu, 26 Jul 2018 at 05:44, Thiago Macieira <thiago.macieira at intel.com> wrote:
>
> On Wednesday, 25 July 2018 10:22:19 PDT Thiago Macieira wrote:
> > On Wednesday, 25 July 2018 07:52:13 PDT Marian Beermann wrote:
> > > Correct. If you augment your debugging a little, it is easy to see the
> > > server sending a "Connection: close" header:
> > >
> > > qDebug() << ... << reply->rawHeader("Connection");
> >
> > The question is whether the request had a "Connection: keep-alive" header.
> > You need to check the Wireshark logs to see that.
>
> Or if the request was HTTP/1.1, which changed the Connection default to keep-
> alive.

The reply's "Connection" header was "close", and Wireshark's traces
have no mention keep-alive.

Explicitly setting the "Connection" header in the request had no effect:

    for (auto url : urls)
    {
        QNetworkRequest req(url);
        req.setRawHeader("Connection", "keep-alive");
        auto reply = nam.get(req);
        QObject::connect(reply, &QNetworkReply::finished, [=]
        {
            qDebug() << reply->request().url();
            qDebug() << '\t' << "Reqst:" <<
reply->request().rawHeader("Connection");
            qDebug() << '\t' << "Reply:" << reply->rawHeader("Connection");
            reply->deleteLater();
        });
    }

Debug outputs:

    QUrl("http://download.qt.io/online/qtsdkrepository/windows_x86/desktop/qt5_59/qt.59.win64_msvc2015_64/5.9.0-0-201705291821meta.7z")
        Reqst: "keep-alive"
        Reply: "close"
    …

Does this mean the server is ignoring the keep-alive flag? How do I
check if QNAM is setting it correctly in the first place?


Regards,
Sze Howe



More information about the Interest mailing list