Index: src/ch/UpdateChecker.cpp
===================================================================
diff -u -N -r50007f112b77cba170e6c427fee5428bda2d9dc5 -r045540c818c374806d09742ef3d7a984d8d757d3
--- src/ch/UpdateChecker.cpp	(.../UpdateChecker.cpp)	(revision 50007f112b77cba170e6c427fee5428bda2d9dc5)
+++ src/ch/UpdateChecker.cpp	(.../UpdateChecker.cpp)	(revision 045540c818c374806d09742ef3d7a984d8d757d3)
@@ -263,9 +263,6 @@
 		// mark as started
 		pUpdateChecker->SetResult(eResult_Pending, 0);
 
-		// get the real address of file to download
-		CString strSite = pUpdateChecker->GetSiteAddress();
-
 		CAsyncHttpFile::EWaitResult eWaitResult = CAsyncHttpFile::ePending;
 		size_t stFileSize = 0;
 		std::stringstream dataBuffer;
@@ -276,6 +273,9 @@
 		if(pUpdateChecker->GetSendHeaders())
 			wstrHeaders = pUpdateChecker->m_tUpdateHeaders.GetHeaders((PCTSTR)pUpdateChecker->m_strLanguage, pUpdateChecker->m_eUpdateChannel);
 
+		// get the real address of file to download
+		CString strSite = pUpdateChecker->GetSiteAddress();
+
 		HRESULT hResult = pUpdateChecker->m_httpFile.Open(strSite, wstrUserAgent.c_str(), wstrHeaders.c_str());
 		if(SUCCEEDED(hResult))
 		{
@@ -284,16 +284,22 @@
 			{
 			case CAsyncHttpFile::eFinished:
 				break;
+
 			case CAsyncHttpFile::eKilled:
 				pUpdateChecker->SetResult(eResult_Killed, 0);
+				pUpdateChecker->m_httpFile.Close();
 				return 1;
+
 			case CAsyncHttpFile::eError:
 				pUpdateChecker->SetResult(eResult_Error, pUpdateChecker->m_httpFile.GetErrorCode());
+				pUpdateChecker->m_httpFile.Close();
 				return 1;
+
 			case CAsyncHttpFile::eTimeout:
 			case CAsyncHttpFile::ePending:
 			default:
 				pUpdateChecker->SetResult(eResult_Error, 0);
+				pUpdateChecker->m_httpFile.Close();
 				return 1;
 			}
 
@@ -317,15 +323,19 @@
 						break;
 					case CAsyncHttpFile::eKilled:
 						pUpdateChecker->SetResult(eResult_Killed, 0);
+						pUpdateChecker->m_httpFile.Close();
 						return 1;
-						break;
+
 					case CAsyncHttpFile::eError:
 						pUpdateChecker->SetResult(eResult_Error, pUpdateChecker->m_httpFile.GetErrorCode());
+						pUpdateChecker->m_httpFile.Close();
 						return 1;
+
 					case CAsyncHttpFile::eTimeout:
 					case CAsyncHttpFile::ePending:
 					default:
 						pUpdateChecker->SetResult(eResult_Error, 0);
+						pUpdateChecker->m_httpFile.Close();
 						return 1;
 					}
 				}
@@ -346,6 +356,7 @@
 		if(FAILED(hResult))
 		{
 			pUpdateChecker->SetResult(eResult_Error, pUpdateChecker->m_httpFile.GetErrorCode());
+			pUpdateChecker->m_httpFile.Close();
 			return 1;
 		}