ERROR_INSUFFICIENT_BUFFER when calling HttpOpenRequest on separate thread
-
This code works perfect without exceptions when calling it from the main appthread, but when called on a working thread (AfxBeginThread) httpOpenRequest gives a valid handle and the function works but a bunch of exception occures during the call and afterwards GetLastError returns ERROR_INSUFFICIENT_BUFFER. I know I shouldn't be worried if I get a valid handle but anyway.... Any ideas? code: CONST TCHAR *szAcceptType = TEXT(HTTP_ACCEPT_TYPE); HINTERNET hHTTPRequest = NULL; CHECK_BOOL(NULL != (hHTTPRequest=::httpOpenRequest(hSession, // HTTP session handle HTTP_VERB_HEAD, // HTTP Verb szURI, // Object Name HTTP_VERSION, // Version NULL, // Reference &szAcceptType, // Accept Type INTERNET_FLAG_NO_CACHE_WRITE | INTERNET_FLAG_KEEP_CONNECTION, NULL))); // context call-back point CHECK_BOOL(hHTTPRequest != INVALID_HANDLE_VALUE); // REPLACE HEADER CHECK_BOOL(::HttpAddRequestHeaders( hHTTPRequest, HTTP_ACCEPT, _tcslen(HTTP_ACCEPT), HTTP_ADDREQ_FLAG_REPLACE)); // SEND REQUEST CHECK_BOOL(::HttpSendRequest( hHTTPRequest, // handle by returned HttpOpenRequest NULL, // additional HTTP header 0, // additional HTTP header length NULL, // additional data in HTTP Post or HTTP Put 0)); // additional data length return hHTTPRequest; CLEANUP: m_dwError=::GetLastError(); #ifdef _DEBUG LPVOID lpMsgBuffer; DWORD dwRet=FormatMessage( FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_IGNORE_INSERTS, GetModuleHandle("wininet.dll"), m_dwError, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), reinterpret_cast(&lpMsgBuffer), 0, NULL); // Display the string. MessageBox( NULL, (LPCTSTR)lpMsgBuffer, "Error", MB_OK | MB_ICONINFORMATION ); LocalFree(lpMsgBuffer); #endif if (hHTTPRequest) InternetCloseHandle(hHTTPRequest); hHTTPRequest = NULL; return hHTTPRequest;