Index: src/ch/AsyncHttpFile.cpp
===================================================================
diff -u -N -r045540c818c374806d09742ef3d7a984d8d757d3 -rd0cfddc68b5ec4dc4e9b73b6f87aa97995c7cc54
--- src/ch/AsyncHttpFile.cpp	(.../AsyncHttpFile.cpp)	(revision 045540c818c374806d09742ef3d7a984d8d757d3)
+++ src/ch/AsyncHttpFile.cpp	(.../AsyncHttpFile.cpp)	(revision d0cfddc68b5ec4dc4e9b73b6f87aa97995c7cc54)
@@ -36,7 +36,7 @@
 	m_hFinishedEvent(NULL),
 	m_dwError(ERROR_SUCCESS)
 {
-	memset(&m_internetBuffers, 0, sizeof(INTERNET_BUFFERS));
+	memset(&m_internetBuffers, 0, sizeof(INTERNET_BUFFERSA));
 
 	m_tOpenRequest.pHttpFile = this;
 	m_tOpenRequest.eOperationType = CONTEXT_REQUEST::eInternetOpenUrl;
@@ -263,10 +263,6 @@
 	{
 		if(!::InternetCloseHandle(m_hOpenUrl))
 		{
-			DWORD dwError = GetLastError();
-			ATLTRACE(L"InternetCloseHandle failed with error: %lu\n", dwError);
-
-			SetErrorCode(dwError);
 			if(GetErrorCode() == ERROR_IO_PENDING)
 				return S_FALSE;
 			else
@@ -288,6 +284,14 @@
 		m_hFinishedEvent = nullptr;
 	}
 
+	memset(&m_internetBuffers, 0, sizeof(INTERNET_BUFFERSA));
+
+	m_tOpenRequest.pHttpFile = this;
+	m_tOpenRequest.eOperationType = CONTEXT_REQUEST::eInternetOpenUrl;
+
+	m_tReadRequest.pHttpFile = this;
+	m_tReadRequest.eOperationType = CONTEXT_REQUEST::eInternetReadFileEx;
+
 	return S_OK;
 }