DWORD WINAPI UploadUserInfo(LPVOID pVoid) { DWORD dwReturnCode = 0; CXInstall m_Install; BOOL IsUploaded = FALSE; BOOL IsSaved = FALSE; int iCount = 0; CHttpRequest *pRegisterRequest = (CHttpRequest *)pVoid; if(pRegisterRequest->m_pUrlRequest[0] == '\0') goto XF_EXIT; while(!IsUploaded || !IsSaved) { if(++iCount > 3) break; if(!IsUploaded && pRegisterRequest->ConnectUrl( pRegisterRequest->m_pUrlRequest ) == XERR_SUCCESS) { pRegisterRequest->m_UserInfo.iStatus = REG_STATUS_REGISTERED; IsUploaded = TRUE; } if(m_Install.SaveReg(REG_INFO_ITEM, (BYTE*)&pRegisterRequest->m_UserInfo, sizeof(XUSER_INFO))) { dwReturnCode = NET_UPLOAD_SUCCESS; IsSaved = TRUE; break; } break; // not retry Sleep(180000); } XF_EXIT: if(!pRegisterRequest->m_bIsClose) pRegisterRequest->m_pParent->SendMessage(WM_NET_MESSAGE , MAX_NET_COMMAND + 1, dwReturnCode); return dwReturnCode; }
DWORD WINAPI DownloadCommandFile(LPVOID pVoid) { CString tmpStr; long tmpLong; int i; int tmpCount = 0; m_bIsDownloading = TRUE; DWORD dwReturnCode = 0; CHttpRequest *pDownloadCommand = (CHttpRequest *)pVoid; CXInstall m_Install; if(pDownloadCommand->m_pUrlRequest[0] == 0) { dwReturnCode = XERR_INVALID_PARAMETER; goto XF_EXIT; } TCHAR sCommand[MAX_NET_COMMAND][MAX_NET_COMMAND_LENTH]; if(pDownloadCommand->m_CommandHeader.lCount > 0) { pDownloadCommand->lCommandId = new long[pDownloadCommand->m_CommandHeader.lCount]; m_Install.ReadReg(REG_NET_COMMAND_ITEM , (BYTE*)pDownloadCommand->lCommandId, sizeof(long) * pDownloadCommand->m_CommandHeader.lCount); } if(pDownloadCommand->ConnectUrl(pDownloadCommand->m_pUrlRequest , (TCHAR*)sCommand, &pDownloadCommand->m_CommandHeader.lVersion,&tmpCount) != XERR_SUCCESS) { dwReturnCode = XERR_INTERNET_CONNECT_ERROR; goto XF_EXIT; } if(tmpCount < 1) { dwReturnCode = XERR_INTERNET_CONNECT_ERROR; goto XF_EXIT; } if(tmpCount == 1) goto ONLY_VERSION; for(i = 1; i < tmpCount; i++) { tmpStr = sCommand[i]; tmpLong = atol(tmpStr.Left(MAX_NET_COMMAND_VERSION_LENTH)); int j = 0; for(j; j < pDownloadCommand->m_CommandHeader.lCount; j++) { if(tmpLong == pDownloadCommand->lCommandId [j]) break; } if(j < pDownloadCommand->m_CommandHeader.lCount) continue; long *pLong = NULL; if(pDownloadCommand->m_CommandHeader.lCount > 0) { pLong = new long[pDownloadCommand->m_CommandHeader.lCount]; memcpy(pLong, pDownloadCommand->lCommandId, sizeof(long) * pDownloadCommand->m_CommandHeader.lCount); delete[](pDownloadCommand->lCommandId); } pDownloadCommand->lCommandId = new long[pDownloadCommand->m_CommandHeader.lCount + 1]; if(pDownloadCommand->m_CommandHeader.lCount > 0) { memcpy(pDownloadCommand->lCommandId, pLong, sizeof(long) * pDownloadCommand->m_CommandHeader.lCount); delete[](pLong); } pDownloadCommand->lCommandId[pDownloadCommand->m_CommandHeader.lCount] = tmpLong; pDownloadCommand->m_CommandHeader.lCount ++; int iCommand = atoi(tmpStr.Mid(MAX_NET_COMMAND_VERSION_LENTH + 1 , MAX_NET_COMMAND_COMMAND_LENTH)); CString sMessage= tmpStr.Mid(MAX_NET_COMMAND_VERSION_LENTH + MAX_NET_COMMAND_COMMAND_LENTH + 2); sMessage.Replace(13, '\0'); sMessage.Replace(10, '\0'); if(sMessage.GetAt(0) == '\0') break; switch(iCommand) { case NET_COMMAND_CHANGE_POST_MESSAGE: _tcscpy(pDownloadCommand->m_sMessage[i], sMessage); if(!pDownloadCommand->m_bIsClose) pDownloadCommand->m_pParent->SendMessage(WM_NET_MESSAGE, i, NULL); dwReturnCode = NET_COMMAND_HAVE_MESSAGE; break; default: break; } } // Syn not save time //pDownloadCommand->m_CommandHeader.tCheckTime = CTime::GetCurrentTime(); m_Install.SaveReg(REG_NET_COMMAND_HEADER_ITEM, (BYTE*)&pDownloadCommand->m_CommandHeader, sizeof(XNET_COMMAND_HEADER)); m_Install.SaveReg(REG_NET_COMMAND_ITEM, (BYTE*)pDownloadCommand->lCommandId , sizeof(long) * pDownloadCommand->m_CommandHeader.lCount); if(pDownloadCommand->lCommandId != NULL) { delete pDownloadCommand->lCommandId; pDownloadCommand->lCommandId = NULL; } ONLY_VERSION: { LPTSTR pNewVersion = sCommand[0] + MAX_NET_COMMAND_VERSION_LENTH + 1; int iLength = pDownloadCommand->m_sVersion.GetLength(); if(strnicmp((LPCTSTR)pDownloadCommand->m_sVersion, pNewVersion, iLength) < 0) { memcpy(pDownloadCommand->m_sNewVersion, pNewVersion, iLength); pDownloadCommand->m_sNewVersion[iLength] = 0; dwReturnCode = NET_COMMAND_HAVE_NEW_VERSION; } } XF_EXIT: if(!pDownloadCommand->m_bIsClose) pDownloadCommand->m_pParent->SendMessage(WM_NET_MESSAGE , MAX_NET_COMMAND, dwReturnCode); m_bIsDownloading = FALSE; return dwReturnCode; }