Index: /trunk/src/VBox/Frontends/VirtualBox/src/net/UINetworkReply.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/net/UINetworkReply.cpp	(revision 45475)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/net/UINetworkReply.cpp	(revision 45476)
@@ -42,4 +42,5 @@
         : m_request(request)
         , m_iError(VINF_SUCCESS)
+        , m_pHttp(0)
     {
     }
@@ -49,4 +50,15 @@
     int error() const { return m_iError; }
 
+    /* API: Abort stuff: */
+    void abort()
+    {
+        /* Make sure http is created: */
+        if (!m_pHttp)
+            return;
+
+        /* Call for http abort: */
+        RTHttpAbort(m_pHttp);
+    }
+
 private:
 
@@ -58,6 +70,5 @@
 
         /* Create: */
-        RTHTTP hHttp;
-        m_iError = RTHttpCreate(&hHttp);
+        m_iError = RTHttpCreate(&m_pHttp);
 
         /* Setup proxy: */
@@ -65,5 +76,5 @@
         if (proxyManager.proxyEnabled())
         {
-            RTHttpSetProxy(hHttp,
+            RTHttpSetProxy(m_pHttp,
                            proxyManager.proxyHost().toAscii().constData(),
                            proxyManager.proxyPort().toUInt(), 0, 0);
@@ -86,5 +97,5 @@
             }
             const char **ppFormattedHeaders = formattedHeaderPointerVector.data();
-            RTHttpSetHeaders(hHttp, formattedHeaderPointerVector.size(), ppFormattedHeaders);
+            RTHttpSetHeaders(m_pHttp, formattedHeaderPointerVector.size(), ppFormattedHeaders);
         }
 
@@ -93,5 +104,5 @@
         {
             char *pszBuf = 0;
-            m_iError = RTHttpGet(hHttp,
+            m_iError = RTHttpGet(m_pHttp,
                                  m_request.url().toString().toAscii().constData(),
                                  &pszBuf);
@@ -101,5 +112,6 @@
 
         /* Destroy: */
-        RTHttpDestroy(hHttp);
+        RTHttpDestroy(m_pHttp);
+        m_pHttp = 0;
     }
 
@@ -107,4 +119,5 @@
     QNetworkRequest m_request;
     int m_iError;
+    RTHTTP m_pHttp;
     QByteArray m_reply;
 };
@@ -138,4 +151,5 @@
     {
         /* Terminate network-reply thread: */
+        m_pThread->abort();
         m_pThread->wait();
         delete m_pThread;
@@ -146,6 +160,5 @@
     void abort()
     {
-        m_error = QNetworkReply::OperationCanceledError;
-        emit finished();
+        m_pThread->abort();
     }
 
@@ -188,4 +201,7 @@
             case VINF_SUCCESS:
                 m_error = QNetworkReply::NoError;
+                break;
+            case VERR_HTTP_ABORTED:
+                m_error = QNetworkReply::OperationCanceledError;
                 break;
             case VERR_HTTP_NOT_FOUND:
