Re: This application has requested the Runtime to terminate it in an
unusual way
Hi,
I checked in relase version but erro didnt occur.Error occur sometime
in release exe
I think problem should be in this function as it is repeatedly call
bool CChatManager::SendRequest(CString strObjectName, CString&
strResponse)
{
CString strHeaders = _T("Content-Type: application/x-www-form-
urlencoded");
CInternetSession pSession;
strResponse = _T("");
CHttpFile* pFile = NULL;
char* szBuffer = NULL;
//Here the virtual directory will be appended with query
string
strObjectName = m_strVirtualDir + strObjectName;
CHttpConnection* pConnection;
if(m_bSecureMode)
{
pConnection = pSession.GetHttpConnection
(m_strServerName,
INTERNET_FLAG_TRANSFER_ASCII, 443, NULL, NULL);
pFile = pConnection->OpenRequest
(CHttpConnection::HTTP_VERB_GET,strObjectName,NULL,
1,NULL,NULL,INTERNET_FLAG_DONT_CACHE|INTERNET_FLAG_SECURE);
}
else
{
pConnection = pSession.GetHttpConnection
(m_strServerName,
INTERNET_FLAG_TRANSFER_ASCII, 80, NULL, NULL);
pFile = pConnection->OpenRequest
(CHttpConnection::HTTP_VERB_GET,strObjectName,NULL,
1,NULL,NULL,INTERNET_FLAG_DONT_CACHE);
}
if (pFile)
{
BOOL bSuccess = false;
try
{Checkofflinestatus();
bSuccess = pFile->SendRequest(strHeaders,
NULL, 0);
}
catch (CInternetException* e)
{
TCHAR szCause[255];
szCause[0] = _T('\0');
e->GetErrorMessage(szCause, 255);
strResponse = szCause;
e->Delete();
pFile->Close();
pConnection->Close();
// delete or else memory leak on CHttpbFile
object
delete pFile;
pFile = NULL;
delete pConnection;
pConnection = NULL;
++m_lConnectCount;
static bool bMsgBoxShown = false;
strResponse = _T("DISCONNNNECT");
if(m_lConnectCount>12)
{
m_lConnectCount = -200;
if(!bMsgBoxShown)
{
bMsgBoxShown = true;
CSoundsDlg::PlaySoundforEvent
(eInternetConnectionFailed); //added
by dhiraj on 15-11-08
MessageBox(NULL,_T("No
Response from Server. Please check your
internet connection."),_T("Internet Connection"),MB_ICONSTOP);
bMsgBoxShown = false;
}
}
return false;
}
DWORD dwBufferLen = pFile->GetLength();
if (dwBufferLen < BUFFSIZE)
dwBufferLen = BUFFSIZE;
szBuffer = new char[dwBufferLen + 1];
char *pTemp;
// Use a Temp Variable to manipulate(advance) the
Buffer (szBuffer)
pTemp = szBuffer;
DWORD dwBytesRead = 0; // Bytes read in the
read operation
DWORD dwTotalBytesRead = 0; // Total Bytes Read
do
{
// Allocate the Temp Buffer
char *tempBuffer = new char[dwBufferLen + 1];
// Read the data in the Temp Buffer
dwBytesRead = pFile->Read(tempBuffer,
dwBufferLen);
// Update the Total Bytes Read
dwTotalBytesRead += dwBytesRead;
if (dwTotalBytesRead > dwBufferLen)
{
dwTotalBytesRead -= dwBytesRead;
// Delete the Temp buffer
if (tempBuffer)
delete[] tempBuffer;
// Break out of the Loop
break;
}
// Copy the data read to the Buffer
CopyMemory(pTemp,tempBuffer,dwBytesRead);
// Advance the pointer to the Buffer
pTemp += dwBytesRead;
if (tempBuffer)
delete tempBuffer;
}
while(dwBytesRead != 0);
szBuffer[dwTotalBytesRead] = '\0';
////////////////////////******///////////////////
int lenA = lstrlenA(szBuffer);
int lenW;
lenW = ::MultiByteToWideChar(CP_UTF8, 0, szBuffer,
lenA, 0, 0);
BSTR bstrVal = NULL;
if (lenW > 0)
{
// Check whether conversion was successful
bstrVal = ::SysAllocStringLen(0, lenW);
::MultiByteToWideChar(CP_UTF8, 0, szBuffer,
lenA, bstrVal, lenW);
}
else
{
// handle the error
}
strResponse = bstrVal;
pFile->Close();
pConnection->Close();
::SysFreeString(bstrVal);
delete pFile;
pFile = NULL;
delete pConnection;
pConnection = NULL;
delete[] szBuffer;
szBuffer = NULL;
m_lConnectCount = 0;
return true;
}
return true;
}
Can u please tell me reason for error