UINT AFX_CDECL CPartFileConvert::run(LPVOID /*lpParam*/) { DbgSetThreadName("Partfile-Converter"); InitThreadLocale(); //Xman // BEGIN SLUGFILLER: SafeHash CReadWriteLock lock(&theApp.m_threadlock); if (!lock.ReadLock(0)) return 0; // END SLUGFILLER: SafeHash int imported=0; for (;;) { // search next queued job and start it pfconverting=NULL; for(POSITION pos = m_jobs.GetHeadPosition(); pos != NULL; m_jobs.GetNext(pos)){ pfconverting=m_jobs.GetAt(pos); if (pfconverting->state==CONV_QUEUE) break; else pfconverting=NULL; } if (pfconverting!=NULL) { pfconverting->state=CONV_INPROGRESS; UpdateGUI(pfconverting); pfconverting->state=performConvertToeMule(pfconverting->folder); if (pfconverting->state==CONV_OK) ++imported; UpdateGUI(pfconverting); AddLogLine(true,GetResString(IDS_IMP_STATUS),pfconverting->folder,GetReturncodeText(pfconverting->state)); } else break;// nothing more to do now } // clean up UpdateGUI(NULL); if (imported) theApp.sharedfiles->PublishNextTurn(); convertPfThread=NULL; return 0; }
BOOL CCreditsThread::InitInstance() { InitThreadLocale(); BOOL bResult = CGDIThread::InitInstance(); // NOTE: Because this is a separate thread, we have to delete our GDI objects here (while // the handle maps are still available.) if(m_dcBk.m_hDC != NULL && m_pbmpOldBk != NULL) { m_dcBk.SelectObject(m_pbmpOldBk); m_pbmpOldBk = NULL; m_bmpBk.DeleteObject(); } if(m_dcScreen.m_hDC != NULL && m_pbmpOldScreen != NULL) { m_dcScreen.SelectObject(m_pbmpOldScreen); m_pbmpOldScreen = NULL; m_bmpScreen.DeleteObject(); } if(m_dcCredits.m_hDC != NULL && m_pbmpOldCredits != NULL) { m_dcCredits.SelectObject(m_pbmpOldCredits); m_pbmpOldCredits = NULL; m_bmpCredits.DeleteObject(); } if(m_dcMask.m_hDC != NULL && m_pbmpOldMask != NULL) { m_dcMask.SelectObject(m_pbmpOldMask); m_pbmpOldMask = NULL; m_bmpMask.DeleteObject(); } // clean up the fonts we created for(int n = 0; n < m_arFonts.GetSize(); n++) { m_arFonts.GetAt(n)->DeleteObject(); delete m_arFonts.GetAt(n); } m_arFonts.RemoveAll(); return bResult; }
UINT AFX_CDECL CHttpDownloadDlg::_DownloadThread(LPVOID pParam) { DbgSetThreadName("HttpDownload"); InitThreadLocale(); //Convert from the SDK world to the C++ world CHttpDownloadDlg* pDlg = (CHttpDownloadDlg*) pParam; ASSERT(pDlg); ASSERT(pDlg->IsKindOf(RUNTIME_CLASS(CHttpDownloadDlg))); // BEGIN SLUGFILLER: SafeHash CReadWriteLock lock(&theApp.m_threadlock); if (!lock.ReadLock(1000)) { // netfinity: Make sure we doesn't get stuck pDlg->HandleThreadError(GetResString(IDS_HTTPDOWNLOAD_GENERIC_ERROR)); return 0; } // END SLUGFILLER: SafeHash pDlg->DownloadThread(); return 0; }
void CPreferences::SetLanguage() { InitLanguages(GetLangDir()); bool bFoundLang = false; if (m_wLanguageID) bFoundLang = LoadLangLib(GetLangDir(), m_wLanguageID); if (!bFoundLang){ LANGID lidLocale = (LANGID)::GetThreadLocale(); //LANGID lidLocalePri = PRIMARYLANGID(::GetThreadLocale()); //LANGID lidLocaleSub = SUBLANGID(::GetThreadLocale()); bFoundLang = LoadLangLib(GetLangDir(), lidLocale); if (!bFoundLang){ LoadLangLib(GetLangDir(), LANGID_EN_US); m_wLanguageID = LANGID_EN_US; CString strLngEnglish = GetResString(IDS_MB_LANGUAGEINFO); AfxMessageBox(strLngEnglish, MB_ICONASTERISK); // [ionix] - WiZaRd/Aireoreion - Multiple Instances added by lama CString strQuestion; strQuestion = _T("Allow multiple instances of ReSuRReCTioN?"); if (IDYES!=MessageBox(0, strQuestion.GetBuffer(),_T("iONiX"),MB_YESNO | MB_DEFBUTTON2)) //SyruS make "no" the default for users thePrefs.m_bAllowMultipleInstances = false; // [ionix] - WiZaRd/Aireoreion - Multiple Instances added by lama } else m_wLanguageID = lidLocale; } // if loading a string fails, set language to English if (GetResString(IDS_MB_LANGUAGEINFO).IsEmpty()) { LoadLangLib(GetLangDir(), LANGID_EN_US); m_wLanguageID = LANGID_EN_US; } InitThreadLocale(); }
BOOL CPreviewThread::InitInstance() { DbgSetThreadName("PartFilePreview"); InitThreadLocale(); return TRUE; }
UINT AFX_CDECL WebSocketListeningFunc(LPVOID pThis) { DbgSetThreadName("WebSocketListening"); srand(time(NULL)); InitThreadLocale(); SOCKET hSocket = WSASocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, 0); if (INVALID_SOCKET != hSocket) { SOCKADDR_IN stAddr; stAddr.sin_family = AF_INET; stAddr.sin_port = htons(thePrefs.GetWSPort()); if (thePrefs.GetBindAddrA()) stAddr.sin_addr.S_un.S_addr = inet_addr(thePrefs.GetBindAddrA()); else stAddr.sin_addr.S_un.S_addr = INADDR_ANY; if (!bind(hSocket, (sockaddr*)&stAddr, sizeof(stAddr)) && !listen(hSocket, SOMAXCONN)) { HANDLE hEvent = CreateEvent(NULL, FALSE, TRUE, NULL); if (hEvent) { if (!WSAEventSelect(hSocket, hEvent, FD_ACCEPT)) { HANDLE pWait[] = { hEvent, s_hTerminate }; while (WAIT_OBJECT_0 == WaitForMultipleObjects(2, pWait, FALSE, INFINITE)) { for (;;) { struct sockaddr_in their_addr; int sin_size = sizeof(struct sockaddr_in); SOCKET hAccepted = accept(hSocket,(struct sockaddr *)&their_addr, &sin_size); if (INVALID_SOCKET == hAccepted) break; if (thePrefs.GetAllowedRemoteAccessIPs().GetCount() > 0) { bool bAllowedIP = false; for (int i = 0; i < thePrefs.GetAllowedRemoteAccessIPs().GetCount(); i++) { if (their_addr.sin_addr.S_un.S_addr == thePrefs.GetAllowedRemoteAccessIPs()[i]) { bAllowedIP = true; break; } } if (!bAllowedIP) { LogWarning(_T("Web Interface: Rejected connection attempt from %s"), ipstr(their_addr.sin_addr.S_un.S_addr)); VERIFY( !closesocket(hAccepted) ); break; } } if(thePrefs.GetWSIsEnabled()) { SocketData *pData = new SocketData; pData->hSocket = hAccepted; pData->pThis = pThis; pData->incomingaddr=their_addr.sin_addr; // - do NOT use Windows API 'CreateThread' to create a thread which uses MFC/CRT -> lot of mem leaks! // - 'AfxBeginThread' could be used here, but creates a little too much overhead for our needs. CWinThread* pAcceptThread = new CWinThread(WebSocketAcceptedFunc, (LPVOID)pData); if (!pAcceptThread->CreateThread()) { delete pAcceptThread; pAcceptThread = NULL; VERIFY( !closesocket(hAccepted) ); hAccepted = NULL; } } else { VERIFY( !closesocket(hAccepted) ); hAccepted = NULL; } } } } VERIFY( CloseHandle(hEvent) ); hEvent = NULL; } } VERIFY( !closesocket(hSocket) ); hSocket = NULL; } return 0; }
UINT AFX_CDECL WebSocketAcceptedFunc(LPVOID pD) { DbgSetThreadName("WebSocketAccepted"); srand(time(NULL)); InitThreadLocale(); SocketData *pData = (SocketData *)pD; SOCKET hSocket = pData->hSocket; CWebServer *pThis = (CWebServer *)pData->pThis; in_addr ad=pData->incomingaddr; delete pData; ASSERT(INVALID_SOCKET != hSocket); HANDLE hEvent = CreateEvent(NULL, FALSE, TRUE, NULL); if (hEvent) { if (!WSAEventSelect(hSocket, hEvent, FD_READ | FD_CLOSE | FD_WRITE)) { CWebSocket stWebSocket; stWebSocket.SetParent(pThis); stWebSocket.m_pHead = NULL; stWebSocket.m_pTail = NULL; stWebSocket.m_bValid = true; stWebSocket.m_bCanRecv = true; stWebSocket.m_bCanSend = true; stWebSocket.m_hSocket = hSocket; stWebSocket.m_pBuf = NULL; stWebSocket.m_dwRecv = 0; stWebSocket.m_dwBufSize = 0; stWebSocket.m_dwHttpHeaderLen = 0; stWebSocket.m_dwHttpContentLen = 0; HANDLE pWait[] = { hEvent, s_hTerminate }; while (WAIT_OBJECT_0 == WaitForMultipleObjects(2, pWait, FALSE, INFINITE)) { while (stWebSocket.m_bValid) { WSANETWORKEVENTS stEvents; if (WSAEnumNetworkEvents(hSocket, NULL, &stEvents)) stWebSocket.m_bValid = false; else { if (!stEvents.lNetworkEvents) break; //no more events till now if (FD_READ & stEvents.lNetworkEvents) for (;;) { char pBuf[0x1000]; int nRes = recv(hSocket, pBuf, sizeof(pBuf), 0); if (nRes <= 0) { if (!nRes) { stWebSocket.m_bCanRecv = false; stWebSocket.OnReceived(NULL, 0, ad); } else if (WSAEWOULDBLOCK != WSAGetLastError()) stWebSocket.m_bValid = false; break; } stWebSocket.OnReceived(pBuf, nRes,ad); } if (FD_CLOSE & stEvents.lNetworkEvents) stWebSocket.m_bCanRecv = false; if (FD_WRITE & stEvents.lNetworkEvents) // send what is left in our tails while (stWebSocket.m_pHead) { if (stWebSocket.m_pHead->m_pToSend) { int nRes = send(hSocket, stWebSocket.m_pHead->m_pToSend, stWebSocket.m_pHead->m_dwSize, 0); if (nRes != (signed) stWebSocket.m_pHead->m_dwSize) { if (nRes) if ((nRes > 0) && (nRes < (signed) stWebSocket.m_pHead->m_dwSize)) { stWebSocket.m_pHead->m_pToSend += nRes; stWebSocket.m_pHead->m_dwSize -= nRes; } else if (WSAEWOULDBLOCK != WSAGetLastError()) stWebSocket.m_bValid = false; break; } } else if (shutdown(hSocket, SD_SEND)) { stWebSocket.m_bValid = false; break; } // erase this chunk CWebSocket::CChunk* pNext = stWebSocket.m_pHead->m_pNext; delete stWebSocket.m_pHead; stWebSocket.m_pHead = pNext; if (stWebSocket.m_pHead == NULL) stWebSocket.m_pTail = NULL; } } } if (!stWebSocket.m_bValid || (!stWebSocket.m_bCanRecv && !stWebSocket.m_pHead)) break; } while (stWebSocket.m_pHead) { CWebSocket::CChunk* pNext = stWebSocket.m_pHead->m_pNext; delete stWebSocket.m_pHead; stWebSocket.m_pHead = pNext; } delete[] stWebSocket.m_pBuf; } VERIFY( CloseHandle(hEvent) ); } VERIFY( !closesocket(hSocket) ); return 0; }
UINT AFX_CDECL WebSocketListeningFunc(LPVOID pThis) { DbgSetThreadName("WebSocketListening"); srand(time(NULL)); InitThreadLocale(); // WSADATA stData; // if (!WSAStartup(MAKEWORD(1, 1), &stData)) { SOCKET hSocket = WSASocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, 0); if (INVALID_SOCKET != hSocket) { SOCKADDR_IN stAddr; stAddr.sin_family = AF_INET; stAddr.sin_port = htons(thePrefs.GetWSPort()); stAddr.sin_addr.S_un.S_addr = INADDR_ANY; if (!bind(hSocket, (sockaddr*)&stAddr, sizeof(stAddr)) && !listen(hSocket, SOMAXCONN)) { HANDLE hEvent = CreateEvent(NULL, FALSE, TRUE, NULL); if (hEvent) { if (!WSAEventSelect(hSocket, hEvent, FD_ACCEPT)) { HANDLE pWait[] = { hEvent, s_hTerminate }; while (WAIT_OBJECT_0 == WaitForMultipleObjects(2, pWait, FALSE, INFINITE)) { for (;;) { struct sockaddr_in their_addr; int sin_size = sizeof(struct sockaddr_in); SOCKET hAccepted = accept(hSocket,(struct sockaddr *)&their_addr, &sin_size); if (INVALID_SOCKET == hAccepted) break; if(thePrefs.GetWSIsEnabled()) { SocketData *pData = new SocketData; pData->hSocket = hAccepted; pData->pThis = pThis; pData->incomingaddr=their_addr.sin_addr; // - do NOT use Windows API 'CreateThread' to create a thread which uses MFC/CRT -> lot of mem leaks! // - 'AfxBeginThread' could be used here, but creates a little too much overhead for our needs. CWinThread* pAcceptThread = new CWinThread(WebSocketAcceptedFunc, (LPVOID)pData); if (!pAcceptThread->CreateThread()) { delete pAcceptThread; pAcceptThread = NULL; VERIFY( !closesocket(hSocket) ); } } else VERIFY( !closesocket(hSocket) ); } } } VERIFY( CloseHandle(hEvent) ); } } VERIFY( !closesocket(hSocket) ); } // VERIFY( !WSACleanup() ); } return 0; }
BOOL CFrameGrabThread::InitInstance() { DbgSetThreadName("FrameGrabThread"); InitThreadLocale(); return TRUE; }
BOOL CAICHSyncThread::InitInstance() { DbgSetThreadName("AICHSyncThread"); InitThreadLocale(); return TRUE; }
BOOL CUPnPImplMiniLib::CStartDiscoveryThread::InitInstance() { InitThreadLocale(); return TRUE; }