From 6e53714da11da40b4e16286de9ec9a9f1a309f1a Mon Sep 17 00:00:00 2001
From: Martin Rotter <rotter.martinos@gmail.com>
Date: Sun, 21 Jul 2013 09:24:18 +0200
Subject: [PATCH] Added user-agent and HTTP pipelining for requests.

---
 CMakeLists.txt                        |  2 +-
 src/core/basenetworkaccessmanager.cpp | 12 +++++++++---
 src/core/defs.h.in                    |  2 ++
 3 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 85793bdfd..383f6871d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -181,7 +181,7 @@ set(APP_SOURCES
   src/core/dynamicshortcuts.cpp
   src/core/basenetworkaccessmanager.cpp
   src/core/basewebpage.cpp
-  src/core/webBrowsernetworkaccessmanager.cpp
+  src/core/webbrowsernetworkaccessmanager.cpp
 
   # Basic application sources.
   src/main.cpp
diff --git a/src/core/basenetworkaccessmanager.cpp b/src/core/basenetworkaccessmanager.cpp
index 929763f45..eed022d82 100644
--- a/src/core/basenetworkaccessmanager.cpp
+++ b/src/core/basenetworkaccessmanager.cpp
@@ -45,7 +45,13 @@ void BaseNetworkAccessManager::loadSettings() {
 QNetworkReply *BaseNetworkAccessManager::createRequest(QNetworkAccessManager::Operation op,
                                                        const QNetworkRequest &request,
                                                        QIODevice *outgoingData) {
-  return QNetworkAccessManager::createRequest(op,
-                                              request,
-                                              outgoingData);
+  QNetworkRequest new_request = request;
+
+  // This rapidly speeds up loading of web sites.
+  // NOTE: https://en.wikipedia.org/wiki/HTTP_pipelining
+  new_request.setAttribute(QNetworkRequest::HttpPipeliningAllowedAttribute, true);
+
+  // Setup custom user-agent.
+  new_request.setHeader(QNetworkRequest::UserAgentHeader, static_cast<QString>(APP_USERAGENT));
+  return QNetworkAccessManager::createRequest(op, new_request, outgoingData);
 }
diff --git a/src/core/defs.h.in b/src/core/defs.h.in
index f3f0ec1ba..58a15138c 100644
--- a/src/core/defs.h.in
+++ b/src/core/defs.h.in
@@ -2,6 +2,7 @@
 #define DEFS_H
 
 #include <QtGlobal>
+#include <QtWebKitVersion>
 
 #define CMAKE_VERSION       "@CMAKE_VERSION@"
 #define CMAKE_SYSTEM        "@CMAKE_SYSTEM@"
@@ -13,6 +14,7 @@
 #define APP_AUTHORS         "@APP_AUTHOR@"
 #define APP_URL             "@APP_URL@"
 #define APP_VERSION         "@APP_VERSION@"
+#define APP_USERAGENT       QString("@APP_NAME@/@APP_VERSION@ (@APP_URL@) on @CMAKE_SYSTEM@; Webkit/") + QTWEBKIT_VERSION_STR
 
 #define APP_CFG_PATH        "data/config/config.ini"
 #define APP_CFG_GUI         "gui"