Browse Source

Fix doubled abort in case if both abort and network error occured

Alexey Edelev 5 years ago
parent
commit
7ea41ad114
1 changed files with 10 additions and 4 deletions
  1. 10 4
      src/grpc/http2channel.cpp

+ 10 - 4
src/grpc/http2channel.cpp

@@ -111,10 +111,18 @@ struct Http2ChannelPrivate {
         QNetworkReply* networkReply = nm.post(request, msg);
 
         //TODO: Add configurable timeout logic
-        QTimer::singleShot(6000, networkReply, &QNetworkReply::abort);
+        QTimer::singleShot(6000, networkReply, [networkReply]() {
+            Http2ChannelPrivate::abortNetworkReply(networkReply);
+        });
         return networkReply;
     }
 
+    static void abortNetworkReply(QNetworkReply* networkReply) {
+        if (networkReply->isRunning()) {
+            networkReply->abort();
+        }
+    }
+
     static QByteArray processReply(QNetworkReply* networkReply, AbstractChannel::StatusCodes& statusCode) {
         //Check if no network error occured
         if (networkReply->error() != QNetworkReply::NoError) {
@@ -191,9 +199,7 @@ void Http2Channel::call(const QString &method, const QString &service, const QBy
 
     QObject::connect(reply, &AsyncReply::error, networkReply, [reply, networkReply, connection]() {
         QObject::disconnect(connection);
-        if (networkReply->isRunning()) {
-            networkReply->abort();
-        }
+        Http2ChannelPrivate::abortNetworkReply(networkReply);
     });
 }