diff --git a/srchybrid/BaseClient.cpp b/srchybrid/BaseClient.cpp index f0873d54..e58e5964 100644 --- a/srchybrid/BaseClient.cpp +++ b/srchybrid/BaseClient.cpp @@ -161,6 +161,7 @@ void CUpDownClient::Init() m_dwLastSourceRequest = 0; m_dwLastSourceAnswer = 0; m_dwLastAskedForSources = 0; + m_uSearchID = 0; m_iFileListRequested = 0; m_uFileRating = 0; @@ -2283,6 +2284,7 @@ void CUpDownClient::AssertValid() const (void)m_dwLastSourceRequest; (void)m_dwLastSourceAnswer; (void)m_dwLastAskedForSources; + (void)m_uSearchID; (void)m_iFileListRequested; (void)m_byCompatibleClient; m_WaitingPackets_list.AssertValid(); @@ -2994,7 +2996,8 @@ void CUpDownClient::SetConnectOptions(uint8 byOptions, bool bEncryption, bool bC void CUpDownClient::SendSharedDirectories() { - //TODO: Don't send shared directories which do not contain any files + //TODO: Don't send shared directories without any files + theApp.sharedfiles->ResetPseudoDirNames(); //purge stale data // add shared directories CStringArray arFolders; for (POSITION pos = thePrefs.shareddir_list.GetHeadPosition(); pos != NULL;) { diff --git a/srchybrid/DownloadQueue.cpp b/srchybrid/DownloadQueue.cpp index cb019261..1b66d5df 100644 --- a/srchybrid/DownloadQueue.cpp +++ b/srchybrid/DownloadQueue.cpp @@ -881,7 +881,7 @@ bool CDownloadQueue::SendNextUDPPacket() Debug(_T("Rotating file list\n")); // move the last 35 files to the head - if (filelist.GetCount() >= MAX_REQUESTS_PER_SERVER) + if (filelist.GetCount() > MAX_REQUESTS_PER_SERVER) for (int i = MAX_REQUESTS_PER_SERVER; --i >= 0;) filelist.AddHead(filelist.RemoveTail()); diff --git a/srchybrid/EMSocket.cpp b/srchybrid/EMSocket.cpp index ec831f9c..48a1828f 100644 --- a/srchybrid/EMSocket.cpp +++ b/srchybrid/EMSocket.cpp @@ -863,18 +863,20 @@ SocketSentBytes CEMSocket::SendOv(uint32 maxNumberOfBytesToSend, uint32 minFragS else m_numberOfSentBytesCompleteFile += pCurBuf.len; } - // all right, prepare to send our collected buffers - memset(&m_PendingSendOperation, 0, sizeof WSAOVERLAPPED); - m_PendingSendOperation.hEvent = theApp.uploadBandwidthThrottler->GetSocketAvailableEvent(); - m_bPendingSendOv = true; - if (CEncryptedStreamSocket::SendOv(m_aBufferSend, &m_PendingSendOperation) == 0) - CleanUpOverlappedSendOperation(false); - else { - int nError = WSAGetLastError(); - if (nError != WSA_IO_PENDING) { - anErrorHasOccured = true; - theApp.QueueDebugLogLineEx(ERROR, _T("WSASend() Error: %u, %s"), nError, (LPCTSTR)GetErrorMessage(nError)); - CleanUpOverlappedSendOperation(true); + if (m_aBufferSend.GetCount() > 0) { + // all right, prepare to send our collected buffers + memset(&m_PendingSendOperation, 0, sizeof WSAOVERLAPPED); + m_PendingSendOperation.hEvent = theApp.uploadBandwidthThrottler->GetSocketAvailableEvent(); + m_bPendingSendOv = true; + if (CEncryptedStreamSocket::SendOv(m_aBufferSend, &m_PendingSendOperation) == 0) + CleanUpOverlappedSendOperation(false); + else { + int nError = WSAGetLastError(); + if (nError != WSA_IO_PENDING) { + anErrorHasOccured = true; + theApp.QueueDebugLogLineEx(ERROR, _T("WSASend() Error: %u, %s"), nError, (LPCTSTR)GetErrorMessage(nError)); + CleanUpOverlappedSendOperation(true); + } } } } @@ -1155,17 +1157,19 @@ bool CEMSocket::UseBigSendBuffer() int val = BIGSIZE; int oldval; int vallen = sizeof oldval; - if (GetSockOpt(SO_SNDBUF, &oldval, &vallen) && BIGSIZE > oldval) { - SetSockOpt(SO_SNDBUF, &val, sizeof val); - vallen = sizeof val; - m_bUseBigSendBuffers = (GetSockOpt(SO_SNDBUF, &val, &vallen) && val >= BIGSIZE); - } + if (GetSockOpt(SO_SNDBUF, &oldval, &vallen)) + if (BIGSIZE > oldval) { + SetSockOpt(SO_SNDBUF, &val, sizeof val); + vallen = sizeof val; + m_bUseBigSendBuffers = (GetSockOpt(SO_SNDBUF, &val, &vallen) && val >= BIGSIZE); #if defined(_DEBUG) || defined(_BETA) || defined(_DEVBUILD) - if (m_bUseBigSendBuffers) - theApp.QueueDebugLogLine(false, _T("Increased Sendbuffer for uploading socket from %u KiB to %u KiB"), oldval / 1024, val / 1024); - else - theApp.QueueDebugLogLine(false, _T("Failed to increase Sendbuffer for uploading socket, stays at %u KiB"), oldval / 1024); + if (m_bUseBigSendBuffers) + theApp.QueueDebugLogLine(false, _T("Increased Sendbuffer for uploading socket from %u KiB to %u KiB"), oldval / 1024, val / 1024); + else + theApp.QueueDebugLogLine(false, _T("Failed to increase Sendbuffer for uploading socket, stays at %u KiB"), oldval / 1024); #endif + } else + m_bUseBigSendBuffers = true; } return m_bUseBigSendBuffers; } diff --git a/srchybrid/EmuleDlg.cpp b/srchybrid/EmuleDlg.cpp index 736897f8..d3990f9e 100644 --- a/srchybrid/EmuleDlg.cpp +++ b/srchybrid/EmuleDlg.cpp @@ -359,6 +359,7 @@ void DialogCreateIndirect(CDialog *pWnd, UINT uID) BOOL CemuleDlg::OnInitDialog() { + theStats.starttime = ::GetTickCount(); #ifdef HAVE_WIN7_SDK_H // allow the TaskbarButtonCreated- & (tbb-)WM_COMMAND message to be sent to our window if our app is running elevated if (thePrefs.GetWindowsVersion() >= _WINVER_7_) { @@ -610,8 +611,6 @@ BOOL CemuleDlg::OnInitDialog() if (thePrefs.GetVerbose() && !m_hTimer) AddDebugLogLine(true, _T("Failed to create 'startup' timer - %s"), (LPCTSTR)GetErrorMessage(::GetLastError())); - theStats.starttime = ::GetTickCount(); - // Start UPnP port forwarding if (thePrefs.IsUPnPEnabled()) StartUPnP(); @@ -2008,9 +2007,8 @@ void CemuleDlg::RestoreWindow() preferenceswnd->BringWindowToTop(); return; } - if (TrayIsVisible()) - TrayHide(); + TrayHide(); DestroyMiniMule(); if (m_wpFirstRestore.length) { diff --git a/srchybrid/FileInfoDialog.cpp b/srchybrid/FileInfoDialog.cpp index 778512f4..cc787602 100644 --- a/srchybrid/FileInfoDialog.cpp +++ b/srchybrid/FileInfoDialog.cpp @@ -205,7 +205,7 @@ class CMediaInfoDLL (FARPROC &)m_pfnMediaInfo_Count_Get = GetProcAddress(m_hLib, "MediaInfo_Count_Get"); if (m_pfnMediaInfo5_Open && m_pfnMediaInfo_Close && m_pfnMediaInfo_Get) m_ullVersion = ullVersion; - } else if (ullVersion < MAKEDLLVERULL(20, 10, 0, 0)) { //here ullVersion >= 7.0 + } else if (ullVersion < MAKEDLLVERULL(21, 4, 0, 0)) { //here ullVersion >= 7.0 (FARPROC &)m_pfnMediaInfo_New = GetProcAddress(m_hLib, "MediaInfo_New"); (FARPROC &)m_pfnMediaInfo_Delete = GetProcAddress(m_hLib, "MediaInfo_Delete"); (FARPROC &)m_pfnMediaInfo_Open = GetProcAddress(m_hLib, "MediaInfo_Open"); @@ -1230,9 +1230,9 @@ bool CGetMediaInfoThread::GetMediaInfo(HWND hWndOwner, const CShareableFile *pFi case ID3FID_WWWUSER: { wchar_t *sURL = ID3_GetStringW(frame, ID3FN_URL); - wchar_t *sDesc = ID3_GetStringW(frame, ID3FN_DESCRIPTION); CString strURL(sURL); if (!strURL.Trim().IsEmpty()) { + wchar_t* sDesc = ID3_GetStringW(frame, ID3FN_DESCRIPTION); CString strDesc(sDesc); if (!strDesc.Trim().IsEmpty()) strFidInfo << _T("(") << strDesc << _T("): "); diff --git a/srchybrid/PartFile.cpp b/srchybrid/PartFile.cpp index 2c48de63..63f82b82 100644 --- a/srchybrid/PartFile.cpp +++ b/srchybrid/PartFile.cpp @@ -2085,7 +2085,7 @@ void CPartFile::DrawStatusBar(CDC *dc, const CRect &rect, bool bFlat) /*const*/ s_LoadBar.Fill(crProgress); s_LoadBar.Draw(dc, rect.left, rect.top, false); } else { - RECT gaprect = { rect.left, rect.top, rect.left + (LONG)width, gaprect.top + PROGRESS_HEIGHT }; + RECT gaprect = { rect.left, rect.top, rect.left + (LONG)width, rect.top + PROGRESS_HEIGHT }; dc->FillSolidRect(&gaprect, crProgress); //draw gray progress only if flat gaprect.left = gaprect.right; diff --git a/srchybrid/SearchList.cpp b/srchybrid/SearchList.cpp index 0c3941dd..59e21015 100644 --- a/srchybrid/SearchList.cpp +++ b/srchybrid/SearchList.cpp @@ -167,9 +167,14 @@ void CSearchList::NewSearch(CSearchListCtrl *pWnd, const CString &strResultFileT } UINT CSearchList::ProcessSearchAnswer(const uchar *in_packet, uint32 size - , const CUpDownClient &sender, bool *pbMoreResultsAvailable, LPCTSTR pszDirectory) + , CUpDownClient &sender, bool *pbMoreResultsAvailable, LPCTSTR pszDirectory) { - uint32 uSearchID = theApp.emuledlg->searchwnd->m_pwndResults->GetNextSearchID(); + uint32 uSearchID = sender.GetSearchID(); + if (!uSearchID) { + uSearchID = theApp.emuledlg->searchwnd->m_pwndResults->GetNextSearchID(); + sender.SetSearchID(uSearchID); + } + ASSERT(uSearchID); SSearchParams *pParams = new SSearchParams; pParams->strExpression = sender.GetUserName(); pParams->dwSearchID = uSearchID; diff --git a/srchybrid/SearchList.h b/srchybrid/SearchList.h index 83f0b9f7..1ec90020 100644 --- a/srchybrid/SearchList.h +++ b/srchybrid/SearchList.h @@ -64,7 +64,7 @@ class CSearchList void Clear(); void NewSearch(CSearchListCtrl *pWnd, const CString &strResultFileType, SSearchParams *pParams); - UINT ProcessSearchAnswer(const uchar *in_packet, uint32 size, const CUpDownClient &sender, bool *pbMoreResultsAvailable, LPCTSTR pszDirectory = NULL); + UINT ProcessSearchAnswer(const uchar *in_packet, uint32 size, CUpDownClient &sender, bool *pbMoreResultsAvailable, LPCTSTR pszDirectory = NULL); UINT ProcessSearchAnswer(const uchar *in_packet, uint32 size, bool bOptUTF8, uint32 nServerIP, uint16 nServerPort, bool *pbMoreResultsAvailable); UINT ProcessUDPSearchAnswer(CFileDataIO &packet, bool bOptUTF8, uint32 nServerIP, uint16 nServerPort); UINT GetED2KResultCount() const; diff --git a/srchybrid/SharedFileList.h b/srchybrid/SharedFileList.h index 50d96f7c..3c54278a 100644 --- a/srchybrid/SharedFileList.h +++ b/srchybrid/SharedFileList.h @@ -39,7 +39,6 @@ class CSharedFileList friend class CSharedFilesCtrl; friend class CClientReqSocket; - void AddDirectory(const CString &strDir, CStringList &dirlist); public: explicit CSharedFileList(CServerConnect *in_server); ~CSharedFileList(); @@ -101,6 +100,8 @@ class CSharedFileList CCriticalSection m_mutWriteList; // don't acquire other locks while having this one in the main thread or make sure deadlocks are impossible static uint8 GetRealPrio(uint8 in) { return (in < 4) ? in + 1 : 0; }; + void ResetPseudoDirNames() { m_mapPseudoDirNames.RemoveAll(); } + protected: bool AddFile(CKnownFile *pFile); void AddFilesFromDirectory(const CString &rstrDirectory); @@ -115,6 +116,8 @@ class CSharedFileList bool CheckAndAddSingleFile(const CString &rstrFilePath); // add specific files without editing sharing preferences private: + void AddDirectory(const CString& strDir, CStringList& dirlist); + CMap m_Files_map; CMap m_UnsharedFiles_map; CMapStringToString m_mapPseudoDirNames; diff --git a/srchybrid/TimeTick.cpp b/srchybrid/TimeTick.cpp index 56d655f1..657da025 100644 --- a/srchybrid/TimeTick.cpp +++ b/srchybrid/TimeTick.cpp @@ -40,8 +40,9 @@ float CTimeTick::Tick() if (m_nPerformanceFrequency) { QueryPerformanceCounter(&nTime); + float nTickTime = GetTimeInMilliSeconds(nTime.QuadPart - m_nTimeElapsed.QuadPart); m_nTimeElapsed.QuadPart = nTime.QuadPart; - return GetTimeInMilliSeconds(nTime.QuadPart - m_nTimeElapsed.QuadPart); + return nTickTime; } return 0.0f; } diff --git a/srchybrid/ToolTipCtrlX.cpp b/srchybrid/ToolTipCtrlX.cpp index dd537928..4a82b61b 100644 --- a/srchybrid/ToolTipCtrlX.cpp +++ b/srchybrid/ToolTipCtrlX.cpp @@ -414,7 +414,7 @@ void CToolTipCtrlX::CustomPaint(LPNMTTCUSTOMDRAW pNMCD) const CRect rect(ptText.x + iIconDrawingWidth, ptText.y, ptText.x + iMaxSingleLineWidth, ptText.y + iTextHeight); // first line on special file icon tab - draw icon and bold filename if (hTheme && bUseEmbeddedThemeFonts) - g_xpStyle.DrawThemeText(hTheme, pdc->m_hDC, m_bCol1Bold ? TTP_STANDARDTITLE : TTP_STANDARD, TTSS_NORMAL, strLine, strLine.GetLength(), m_dwCol1DrawTextFlags, 0, &rect); + g_xpStyle.DrawThemeText(hTheme, pdc->m_hDC, m_bCol1Bold ? TTP_STANDARDTITLE : TTP_STANDARD, TTSS_NORMAL, strLine, strLine.GetLength(), m_dwCol1DrawTextFlags, 0, rect); else { CFont *pOldFont = m_bCol1Bold ? pdc->SelectObject(&m_fontBold) : NULL; pdc->DrawText(strLine, const_cast(rect), m_dwCol1DrawTextFlags); @@ -451,8 +451,10 @@ void CToolTipCtrlX::CustomPaint(LPNMTTCUSTOMDRAW pNMCD) } else { // Text is written in the currently selected font. If 'nTabPositions' is 0 and 'lpnTabStopPositions' is NULL, // tabs are expanded to eight times the average character width. - // Win98: To draw an empty line we need to output at least a space. - siz = pdc->TabbedTextOut(ptText.x, ptText.y, (strLine.IsEmpty() ? _T(" ") : strLine), -1, NULL, 0); + if (strLine.IsEmpty()) // Win98: To draw an empty line we need to output at least a space. + siz = pdc->TabbedTextOut(ptText.x, ptText.y, _T(" "), 1, NULL, 0); + else + siz = pdc->TabbedTextOut(ptText.x, ptText.y, strLine, strLine.GetLength(), NULL, 0); ptText.y += siz.cy + iLineHeightOff; } } @@ -528,7 +530,7 @@ BOOL CToolTipCtrlX::OnTTShow(LPNMHDR pNMHDR, LRESULT *pResult) // exact positioning of in-place tooltips which is performed by the tooltip control by default. // Thus it is important that we tell MFC (not the Windows API in that case) to further route this message. *pResult = FALSE; // Windows API: Perform default positioning - return FALSE; // MFC API. Perform further routing of this message (to the sub-classed tooltip control) + return FALSE; // MFC API. Perform further routing of this message (to the subclassed tooltip control) } void CToolTipCtrlX::OnNmCustomDraw(LPNMHDR pNMHDR, LRESULT *pResult) diff --git a/srchybrid/TrayDialog.cpp b/srchybrid/TrayDialog.cpp index 5c505f42..d8d4ecb3 100644 --- a/srchybrid/TrayDialog.cpp +++ b/srchybrid/TrayDialog.cpp @@ -52,9 +52,9 @@ CTrayDialog::CTrayDialog(UINT uIDD, CWnd *pParent /*=NULL*/) , m_pbMinimizeToTray() , m_hPrevIconDelete() , m_uSingleClickTimer() + , u_DblClickSpeed(::GetDoubleClickTime()) + , m_uLButtonDown() , m_bCurIconDelete() - , m_bLButtonDblClk() - , m_bLButtonDown() , m_bTrayIconVisible() //, m_nDefaultMenuItem() { @@ -137,8 +137,8 @@ bool CTrayDialog::TrayShow() bool CTrayDialog::TrayHide() { bool bSuccess = Shell_NotifyIcon(NIM_DELETE, &m_nidIconData); - if (bSuccess) - m_bTrayIconVisible = false; + m_bTrayIconVisible = false; + m_uLButtonDown = 0; return bSuccess; } @@ -204,16 +204,12 @@ LRESULT CTrayDialog::OnTrayNotify(WPARAM wParam, LPARAM lParam) // WM_LBUTTONUP without checking this, we may get a single WM_LBUTTONUP message // whereby the according WM_LBUTTONDOWN message was meant for some other tray bar // icon. - if (m_bLButtonDblClk || (m_bLButtonDown && !thePrefs.m_bEnableMiniMule)) { //use single click to restore from tray - KillSingleClickTimer(); - RestoreWindow(); - if (!thePrefs.m_bEnableMiniMule) //if restoring on single click - m_bLButtonDown = false; //reset single click too - m_bLButtonDblClk = false; - } else if (m_bLButtonDown) { - if (!m_uSingleClickTimer && !IsWindowVisible()) - m_uSingleClickTimer = SetTimer(IDT_SINGLE_CLICK, 300, NULL); - m_bLButtonDown = false; + if (m_uLButtonDown) { + if (m_uLButtonDown > 1 || !thePrefs.m_bEnableMiniMule) { //use single click to restore from tray + KillSingleClickTimer(); + RestoreWindow(); + } else if (!m_uSingleClickTimer && !IsWindowVisible()) + m_uSingleClickTimer = SetTimer(IDT_SINGLE_CLICK, u_DblClickSpeed, NULL); } break; case WM_LBUTTONDBLCLK: @@ -244,6 +240,7 @@ void CTrayDialog::KillSingleClickTimer() VERIFY(KillTimer(m_uSingleClickTimer)); m_uSingleClickTimer = 0; } + m_uLButtonDown = 0; } void CTrayDialog::OnTimer(UINT_PTR nIDEvent) @@ -253,8 +250,8 @@ void CTrayDialog::OnTimer(UINT_PTR nIDEvent) // Kill that timer before calling 'OnTrayLButtonUp' which may create the MiniMule window asynchronously! KillSingleClickTimer(); OnTrayLButtonUp(CPoint()); - } - CDialogMinTrayBtn::OnTimer(nIDEvent); + } else + CDialogMinTrayBtn::OnTimer(nIDEvent); } void CTrayDialog::OnSysCommand(UINT nID, LPARAM lParam) @@ -292,7 +289,7 @@ void CTrayDialog::OnTrayRButtonUp(CPoint) void CTrayDialog::OnTrayLButtonDown(CPoint) { - m_bLButtonDown = true; + m_uLButtonDown = 1; } void CTrayDialog::OnTrayLButtonUp(CPoint) @@ -301,7 +298,7 @@ void CTrayDialog::OnTrayLButtonUp(CPoint) void CTrayDialog::OnTrayLButtonDblClk(CPoint) { - m_bLButtonDblClk = true; + m_uLButtonDown = 2; } void CTrayDialog::OnTrayRButtonDblClk(CPoint) diff --git a/srchybrid/TrayDialog.h b/srchybrid/TrayDialog.h index 0e7b2c41..86a4f85d 100644 --- a/srchybrid/TrayDialog.h +++ b/srchybrid/TrayDialog.h @@ -38,10 +38,10 @@ class CTrayDialog : public CDialogMinTrayBtn HICON m_hPrevIconDelete; CMenu m_mnuTrayMenu; NOTIFYICONDATA m_nidIconData; - UINT_PTR m_uSingleClickTimer; + UINT_PTR m_uSingleClickTimer; + UINT u_DblClickSpeed; + byte m_uLButtonDown; bool m_bCurIconDelete; - bool m_bLButtonDblClk; - bool m_bLButtonDown; bool m_bTrayIconVisible; // UINT m_nDefaultMenuItem; diff --git a/srchybrid/UPnPImplMiniLib.cpp b/srchybrid/UPnPImplMiniLib.cpp index a89c96c1..9c41ae15 100644 --- a/srchybrid/UPnPImplMiniLib.cpp +++ b/srchybrid/UPnPImplMiniLib.cpp @@ -221,7 +221,7 @@ int CUPnPImplMiniLib::CStartDiscoveryThread::Run() { if (!m_pOwner->m_bCheckAndRefresh) { int error = 0; - UPNPDev *structDeviceList = upnpDiscover(2000, NULL, NULL, 0, 0, 2, &error); + UPNPDev *structDeviceList = upnpDiscover(2000, thePrefs.m_pszBindAddrA, NULL, 0, 0, 2, &error); if (structDeviceList == NULL) { DebugLog(_T("UPNP: No Internet Gateway Devices found, aborting: %d"), error); m_pOwner->m_bUPnPPortsForwarded = TRIS_FALSE; diff --git a/srchybrid/UPnPImplWinServ.cpp b/srchybrid/UPnPImplWinServ.cpp index 7e1a2a92..522f5316 100644 --- a/srchybrid/UPnPImplWinServ.cpp +++ b/srchybrid/UPnPImplWinServ.cpp @@ -877,43 +877,43 @@ HRESULT CUPnPImplWinServ::InvokeAction(ServicePointer pService, vaActionArgs.vt = VT_VARIANT | VT_BYREF; vaActionArgs.pvarVal = &vaArray; - for (LONG nArg = 0; nArg < nArgs; ++nArg) { + for (LONG nArg = 0; nArg < nArgs; ++nArg) { LONG nPos = nArg + 1; (void)SafeArrayPutElement(psaArgs, &nPos, ppVars[nArg]); } hr = pService->InvokeAction(action, vaActionArgs, &vaOutArgs, &vaRet); if (SUCCEEDED(hr)) { - // In connection services return value is empty - // when OUT arguments are returned - if (vaRet.vt == VT_EMPTY) - hr = GetStringFromOutArgs(&vaOutArgs, strResult); - else { - switch (vaRet.vt) { - case VT_BSTR: - strResult = _T("|VT_BSTR="); - break; - case VT_UI2: - strResult = _T("|VT_UI2="); - break; - case VT_UI4: - strResult = _T("|VT_UI4="); - break; - case VT_BOOL: - strResult = _T("|VT_BOOL="); - break; - default: - hr = E_FAIL; - } - if (SUCCEEDED(hr)) { - hr = VariantChangeType(&vaRet, &vaRet, VARIANT_ALPHABOOL, VT_BSTR); - if (SUCCEEDED(hr)) - strResult.AppendFormat(_T("%s|"), vaRet.bstrVal); - } + bool bInvalid = false; + + switch (vaRet.vt) { + case VT_BSTR: + strResult = _T("|VT_BSTR="); + break; + case VT_UI2: + strResult = _T("|VT_UI2="); + break; + case VT_UI4: + strResult = _T("|VT_UI4="); + break; + case VT_BOOL: + strResult = _T("|VT_BOOL="); + break; + case VT_EMPTY: + // If connection services return value is empty + // then OUT arguments are returned + GetStringFromOutArgs(&vaOutArgs, strResult); + default: + bInvalid = true; + } + if (!bInvalid) { + hr = VariantChangeType(&vaRet, &vaRet, VARIANT_ALPHABOOL, VT_BSTR); + if (SUCCEEDED(hr)) + strResult.AppendFormat(_T("%s|"), vaRet.bstrVal); + else + strResult.Empty(); } } - if (FAILED(hr)) - strResult.Empty(); if (ppVars != NULL) DestroyVars(nArgs, &ppVars); @@ -1060,7 +1060,7 @@ LONG CUPnPImplWinServ::GetStringFromOutArgs(const VARIANT *pvaOutArgs, CString & hr = VariantChangeType(&vaOutElement, &vaOutElement, VARIANT_ALPHABOOL, VT_BSTR); if (FAILED(hr)) return -1; - strResult.AppendFormat(_T("%s|%s|"), vaOutElement.bstrVal, pToken); + strResult.AppendFormat(_T("%s%s|"), pToken, vaOutElement.bstrVal); } } strArgs = strResult; @@ -1111,7 +1111,7 @@ void CUPnPImplWinServ::DestroyVars(const INT_PTR nCount, VARIANT ***pppVars) // Called when a device is added // nFindData--AsyncFindHandle; pDevice--COM interface pointer of the device being added -HRESULT __stdcall CDeviceFinderCallback::DeviceAdded(LONG /*nFindData*/, IUPnPDevice * pDevice) +HRESULT __stdcall CDeviceFinderCallback::DeviceAdded(LONG /*nFindData*/, IUPnPDevice *pDevice) { ATLTRACE2(atlTraceCOM, 1, _T("Device Added\n")); m_instance.AddDevice(pDevice, true); @@ -1202,8 +1202,8 @@ HRESULT __stdcall CServiceCallback::StateVariableChanged(IUPnPService *pService, } } - DebugLog(_T("UPnP device state variable %s changed to %s in %s"), - pszStateVarName, strValue.IsEmpty() ? _T("NULL") : strValue.GetString(), bsServiceId.m_str); + DebugLog(_T("UPnP device state variable %s changed to %s in %s") + , pszStateVarName, strValue.IsEmpty() ? _T("NULL") : (LPCTSTR)strValue, bsServiceId.m_str); return hr; } @@ -1222,7 +1222,7 @@ HRESULT __stdcall CServiceCallback::ServiceInstanceDied(IUPnPService *pService) return UPnPMessage(hr); } -HRESULT __stdcall CServiceCallback::QueryInterface(REFIID iid, LPVOID * ppvObject) +HRESULT __stdcall CServiceCallback::QueryInterface(REFIID iid, LPVOID *ppvObject) { if (NULL == ppvObject) return E_POINTER; @@ -1331,6 +1331,6 @@ HRESULT UPnPMessage(HRESULT hr) { CString strError(translateUPnPResult(hr)); if (!strError.IsEmpty()) - DebugLogWarning(_T("upnp: ") + strError); + DebugLogWarning(_T("UPnP: ") + strError); return hr; } \ No newline at end of file diff --git a/srchybrid/UpdownClient.h b/srchybrid/UpdownClient.h index 5b2b6092..463b52be 100644 --- a/srchybrid/UpdownClient.h +++ b/srchybrid/UpdownClient.h @@ -396,6 +396,8 @@ class CUpDownClient : public CObject void UpdateDisplayedInfo(bool force = false); int GetFileListRequested() const { return m_iFileListRequested; } void SetFileListRequested(int iFileListRequested) { m_iFileListRequested = iFileListRequested; } + uint32 GetSearchID() const { return m_uSearchID; } + void SetSearchID(uint32 uID) { m_uSearchID = uID; } virtual void SetRequestFile(CPartFile *pReqFile); CPartFile* GetRequestFile() const { return m_reqfile; } @@ -537,6 +539,7 @@ class CUpDownClient : public CObject uint32 m_dwLastSourceRequest; uint32 m_dwLastSourceAnswer; uint32 m_dwLastAskedForSources; + uint32 m_uSearchID; int m_iFileListRequested; CString m_strFileComment; //--group aligned to int32 diff --git a/srchybrid/Version.h b/srchybrid/Version.h index e1460757..48714ec3 100644 --- a/srchybrid/Version.h +++ b/srchybrid/Version.h @@ -30,8 +30,8 @@ // #define VERSION_MJR 0 #define VERSION_MIN 60 -#define VERSION_UPDATE 1 -#define VERSION_BUILD 3 +#define VERSION_UPDATE 2 +#define VERSION_BUILD 1 #ifdef _M_X64 #define VERSION_X64 _T(" x64") #else diff --git a/srchybrid/emule.rc b/srchybrid/emule.rc index 943a280b..95e61bb7 100644 --- a/srchybrid/emule.rc +++ b/srchybrid/emule.rc @@ -394,8 +394,8 @@ BEGIN CONTROL "",IDC_PROVIDERS,"SysListView32",LVS_REPORT | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | LVS_NOSORTHEADER | WS_BORDER | WS_GROUP | WS_TABSTOP,14,79,228,85 EDITTEXT IDC_WIZ_TRUEDOWNLOAD_BOX,133,166,40,12,ES_AUTOHSCROLL EDITTEXT IDC_WIZ_TRUEUPLOAD_BOX,133,179,40,12,ES_AUTOHSCROLL - CONTROL "kbit/s",IDC_KBITS,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,176,168,66,11 - CONTROL "kB/s",IDC_KBYTES,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,176,180,66,11 + CONTROL "Kbit/s",IDC_KBITS,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,176,168,66,11 + CONTROL "KB/s",IDC_KBYTES,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,176,180,66,11 DEFPUSHBUTTON "Apply",IDC_WIZ_APPLY_BUTTON,136,204,55,14,WS_GROUP PUSHBUTTON "Cancel",IDC_WIZ_CANCEL_BUTTON,194,204,56,14 GROUPBOX "Operating System",IDC_WIZ_OS_FRAME,7,7,242,25 @@ -1092,8 +1092,8 @@ BEGIN CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,17,150,162,1 CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,17,132,162,1 CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,17,114,162,1 - LTEXT "kB/s",IDC_DOWNKB,159,18,19,12,SS_CENTERIMAGE - LTEXT "kB/s",IDC_UPKB,159,34,19,12,SS_CENTERIMAGE + LTEXT "KB/s",IDC_DOWNKB,159,18,19,12,SS_CENTERIMAGE + LTEXT "KB/s",IDC_UPKB,159,34,19,12,SS_CENTERIMAGE LTEXT "eMule",IDC_SIDEBAR,0,0,16,166 ICON "",IDC_TRAYDOWN,18,18,20,20 ICON "",IDC_TRAYUP,18,34,20,20 @@ -1172,7 +1172,7 @@ BEGIN GROUPBOX "Advanced Options",IDC_LD_ADVANCEDGROUP,4,87,384,46 CONTROL "Add HTML-Tags",IDC_LD_HTMLCHE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,98,370,10 CONTROL "Add complete hashset",IDC_LD_HASHSETCHE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,108,369,10 - CONTROL "Use hostname (from peferences) instead of IP when creating a source link",IDC_LD_HOSTNAMECHE, + CONTROL "Use hostname (from preferences) instead of IP when creating a source link",IDC_LD_HOSTNAMECHE, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,118,370,10 END @@ -2806,12 +2806,12 @@ BEGIN IDS_ERR_EMFRIENDSINVALID "The file 'emfriends.met' is invalid or corrupted!" IDS_ERR_READEMFRIENDS "Unknown error while reading emfriends.met: %s" IDS_ERR_KNOWNSERVERINFOREC "Unknown server info received!" - IDS_WIZ_DOWN "Down (kbit/s)" + IDS_WIZ_DOWN "Down (Kbit/s)" END STRINGTABLE BEGIN - IDS_WIZ_UP "Up (kbit/s)" + IDS_WIZ_UP "Up (Kbit/s)" IDS_SELECT_INCOMINGDIR "Choose a folder for incoming files" IDS_SELECT_TEMPDIR "Choose a folder for temporary files" IDS_PRIOAUTO "Auto" @@ -3196,8 +3196,8 @@ BEGIN IDS_HYPERTEXT_FONT_HINT "Font for Server-, Message- and IRC-Window" IDS_SELECT_FONT "Select Font" IDS_SERVER_LIMITS "Soft/Hard File Limits" - IDS_KBITSSEC "kbit/s" - IDS_KBYTESSEC "kB/s" + IDS_KBITSSEC "Kbit/s" + IDS_KBYTESSEC "KB/s" IDS_ERR_CREATE_DIR "Failed to create %s directory ""%s"" - %s" IDS_WRN_INCFILE_RESERVED "The incoming directory must not be set to an eMule installation directory." IDS_WRN_TEMPFILES_RESERVED "The temporary directory must not be set to an eMule installation directory." @@ -3314,7 +3314,7 @@ BEGIN IDS_TEXTLABELS "Text Label Options" IDS_ENABLETEXTLABELS "Show Text Labels" IDS_CUSTOMIZETOOLBAR "Customize Toolbar..." - IDS_MINBITRATE "Min. Bitrate [kbit/s]" + IDS_MINBITRATE "Min. Bitrate [Kbit/s]" IDS_KAD_RECHECKFW "Recheck Firewall" IDS_SHAREDTITLE "Shared eD2K|Kad" IDS_FIREWALLED "Firewalled" @@ -3443,7 +3443,7 @@ BEGIN IDS_SAVEACFAILED "Failed to save AICH Hashset!" IDS_AICHHASH "AICH Hash" IDS_BYTESPERSEC "B/s" - IDS_KBYTESPERSEC "kB/s" + IDS_KBYTESPERSEC "KB/s" IDS_MBYTESPERSEC "MB/s" IDS_GBYTESPERSEC "GB/s" IDS_TBYTESPERSEC "TB/s" diff --git a/srchybrid/emule.sln b/srchybrid/emule.sln index 60ad3588..fdb6d4de 100644 --- a/srchybrid/emule.sln +++ b/srchybrid/emule.sln @@ -4,7 +4,7 @@ VisualStudioVersion = 15.0.27130.2036 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "emule", "emule.vcxproj", "{584EA69D-3443-4197-8994-364880FC1B9B}" ProjectSection(ProjectDependencies) = postProject - {c39f4b46-6e89-4074-902e-ca57073044d2} = {c39f4b46-6e89-4074-902e-ca57073044d2} + {C39F4B46-6E89-4074-902E-CA57073044D2} = {C39F4B46-6E89-4074-902E-CA57073044D2} {B8C41401-6A2B-488D-B198-B0564C2B7404} = {B8C41401-6A2B-488D-B198-B0564C2B7404} {4AACBF8D-B90F-41AD-A5BE-D5E557C668E3} = {4AACBF8D-B90F-41AD-A5BE-D5E557C668E3} {E27AB0B5-84CC-47E8-8F43-34C4F3FDA71E} = {E27AB0B5-84CC-47E8-8F43-34C4F3FDA71E} @@ -14,7 +14,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "emule", "emule.vcxproj", "{ {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8} = {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8} EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cryptlib", "..\cryptopp\cryptlib.vcxproj", "{c39f4b46-6e89-4074-902e-ca57073044d2}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cryptlib", "..\cryptopp\cryptlib.vcxproj", "{C39F4B46-6E89-4074-902E-CA57073044D2}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cximage", "..\CxImage\cximage.vcxproj", "{B8C41401-6A2B-488D-B198-B0564C2B7404}" EndProject @@ -52,18 +52,18 @@ Global {584EA69D-3443-4197-8994-364880FC1B9B}.Release|Win32.Build.0 = Release|Win32 {584EA69D-3443-4197-8994-364880FC1B9B}.Release|x64.ActiveCfg = Release|x64 {584EA69D-3443-4197-8994-364880FC1B9B}.Release|x64.Build.0 = Release|x64 - {c39f4b46-6e89-4074-902e-ca57073044d2}._SpecialBootstrapNodes|Win32.ActiveCfg = Debug|Win32 - {c39f4b46-6e89-4074-902e-ca57073044d2}._SpecialBootstrapNodes|Win32.Build.0 = Debug|Win32 - {c39f4b46-6e89-4074-902e-ca57073044d2}._SpecialBootstrapNodes|x64.ActiveCfg = Debug|x64 - {c39f4b46-6e89-4074-902e-ca57073044d2}._SpecialBootstrapNodes|x64.Build.0 = Debug|x64 - {c39f4b46-6e89-4074-902e-ca57073044d2}.Debug|Win32.ActiveCfg = Debug|Win32 - {c39f4b46-6e89-4074-902e-ca57073044d2}.Debug|Win32.Build.0 = Debug|Win32 - {c39f4b46-6e89-4074-902e-ca57073044d2}.Debug|x64.ActiveCfg = Debug|x64 - {c39f4b46-6e89-4074-902e-ca57073044d2}.Debug|x64.Build.0 = Debug|x64 - {c39f4b46-6e89-4074-902e-ca57073044d2}.Release|Win32.ActiveCfg = Release|Win32 - {c39f4b46-6e89-4074-902e-ca57073044d2}.Release|Win32.Build.0 = Release|Win32 - {c39f4b46-6e89-4074-902e-ca57073044d2}.Release|x64.ActiveCfg = Release|x64 - {c39f4b46-6e89-4074-902e-ca57073044d2}.Release|x64.Build.0 = Release|x64 + {C39F4B46-6E89-4074-902E-CA57073044D2}._SpecialBootstrapNodes|Win32.ActiveCfg = Debug|Win32 + {C39F4B46-6E89-4074-902E-CA57073044D2}._SpecialBootstrapNodes|Win32.Build.0 = Debug|Win32 + {C39F4B46-6E89-4074-902E-CA57073044D2}._SpecialBootstrapNodes|x64.ActiveCfg = Debug|x64 + {C39F4B46-6E89-4074-902E-CA57073044D2}._SpecialBootstrapNodes|x64.Build.0 = Debug|x64 + {C39F4B46-6E89-4074-902E-CA57073044D2}.Debug|Win32.ActiveCfg = Debug|Win32 + {C39F4B46-6E89-4074-902E-CA57073044D2}.Debug|Win32.Build.0 = Debug|Win32 + {C39F4B46-6E89-4074-902E-CA57073044D2}.Debug|x64.ActiveCfg = Debug|x64 + {C39F4B46-6E89-4074-902E-CA57073044D2}.Debug|x64.Build.0 = Debug|x64 + {C39F4B46-6E89-4074-902E-CA57073044D2}.Release|Win32.ActiveCfg = Release|Win32 + {C39F4B46-6E89-4074-902E-CA57073044D2}.Release|Win32.Build.0 = Release|Win32 + {C39F4B46-6E89-4074-902E-CA57073044D2}.Release|x64.ActiveCfg = Release|x64 + {C39F4B46-6E89-4074-902E-CA57073044D2}.Release|x64.Build.0 = Release|x64 {B8C41401-6A2B-488D-B198-B0564C2B7404}._SpecialBootstrapNodes|Win32.ActiveCfg = Debug|Win32 {B8C41401-6A2B-488D-B198-B0564C2B7404}._SpecialBootstrapNodes|Win32.Build.0 = Debug|Win32 {B8C41401-6A2B-488D-B198-B0564C2B7404}._SpecialBootstrapNodes|x64.ActiveCfg = Debug|x64 diff --git a/srchybrid/emule.vcxproj b/srchybrid/emule.vcxproj index 1facad6f..f39cdfc9 100644 --- a/srchybrid/emule.vcxproj +++ b/srchybrid/emule.vcxproj @@ -50,12 +50,12 @@ <_ProjectFileVersion>11.0.60610.1 - *.obj%3b*.ilk%3b*.pdb%3b*.tlb%3b*.tli%3b*.tlh%3b*.tmp%3b*.rsp%3b*.bat%3b*.asm%3b$(TargetPath) + *.obj;*.ilk;*.pdb;*.tlb;*.tli;*.tlh;*.tmp;*.rsp;*.bat;*.asm; $(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ - *.obj%3b*.ilk%3b*.pdb%3b*.tlb%3b*.tli%3b*.tlh%3b*.tmp%3b*.rsp%3b*.bat%3b*.asm%3b$(TargetPath) + *.obj;*.ilk;*.pdb;*.tlb;*.tli;*.tlh;*.tmp;*.rsp;*.bat;*.asm; $(Platform)\Debug\ $(Platform)\Debug\ @@ -85,6 +85,7 @@ res/$(TargetName)$(Platform).manifest %(AdditionalManifestFiles) + false @@ -111,6 +112,7 @@ res/$(TargetName)$(Platform).manifest %(AdditionalManifestFiles) + false @@ -139,6 +141,7 @@ res/$(TargetName)$(Platform).manifest %(AdditionalManifestFiles) + false @@ -165,6 +168,7 @@ res/$(TargetName)$(Platform).manifest %(AdditionalManifestFiles) + false @@ -193,6 +197,7 @@ res/$(TargetName)$(Platform).manifest %(AdditionalManifestFiles) + false @@ -219,6 +224,7 @@ res/$(TargetName)$(Platform).manifest %(AdditionalManifestFiles) + false diff --git a/srchybrid/lang/ar_AE.vcxproj b/srchybrid/lang/ar_AE.vcxproj index eeacedbd..8abd6e0a 100644 --- a/srchybrid/lang/ar_AE.vcxproj +++ b/srchybrid/lang/ar_AE.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/lang/ba_BA.vcxproj b/srchybrid/lang/ba_BA.vcxproj index 0ed023d6..2ce73f33 100644 --- a/srchybrid/lang/ba_BA.vcxproj +++ b/srchybrid/lang/ba_BA.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/lang/bg_BG.vcxproj b/srchybrid/lang/bg_BG.vcxproj index ae69a2ea..86bf0cb1 100644 --- a/srchybrid/lang/bg_BG.vcxproj +++ b/srchybrid/lang/bg_BG.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/lang/ca_ES.vcxproj b/srchybrid/lang/ca_ES.vcxproj index 9fc7ee02..2b7310b5 100644 --- a/srchybrid/lang/ca_ES.vcxproj +++ b/srchybrid/lang/ca_ES.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/lang/cz_CZ.vcxproj b/srchybrid/lang/cz_CZ.vcxproj index ea523f48..1e29b392 100644 --- a/srchybrid/lang/cz_CZ.vcxproj +++ b/srchybrid/lang/cz_CZ.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/lang/da_DK.vcxproj b/srchybrid/lang/da_DK.vcxproj index dae06e0f..b329d13a 100644 --- a/srchybrid/lang/da_DK.vcxproj +++ b/srchybrid/lang/da_DK.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/lang/de_DE.vcxproj b/srchybrid/lang/de_DE.vcxproj index 0495533d..a6d624d8 100644 --- a/srchybrid/lang/de_DE.vcxproj +++ b/srchybrid/lang/de_DE.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/lang/el_GR.vcxproj b/srchybrid/lang/el_GR.vcxproj index 117b730b..8e5327e3 100644 --- a/srchybrid/lang/el_GR.vcxproj +++ b/srchybrid/lang/el_GR.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/lang/es_AS.vcxproj b/srchybrid/lang/es_AS.vcxproj index 7c6008b5..8d3d5a39 100644 --- a/srchybrid/lang/es_AS.vcxproj +++ b/srchybrid/lang/es_AS.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/lang/es_ES_T.vcxproj b/srchybrid/lang/es_ES_T.vcxproj index dd5b6597..9e638404 100644 --- a/srchybrid/lang/es_ES_T.vcxproj +++ b/srchybrid/lang/es_ES_T.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/lang/et_EE.vcxproj b/srchybrid/lang/et_EE.vcxproj index b562d741..5dd27ef8 100644 --- a/srchybrid/lang/et_EE.vcxproj +++ b/srchybrid/lang/et_EE.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/lang/fa_IR.vcxproj b/srchybrid/lang/fa_IR.vcxproj index b58df8e2..295c1fe4 100644 --- a/srchybrid/lang/fa_IR.vcxproj +++ b/srchybrid/lang/fa_IR.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/lang/fi_FI.vcxproj b/srchybrid/lang/fi_FI.vcxproj index 6dba60f3..ac8531a0 100644 --- a/srchybrid/lang/fi_FI.vcxproj +++ b/srchybrid/lang/fi_FI.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/lang/fr_BR.vcxproj b/srchybrid/lang/fr_BR.vcxproj index 98be982b..34c1ca6e 100644 --- a/srchybrid/lang/fr_BR.vcxproj +++ b/srchybrid/lang/fr_BR.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/lang/fr_FR.vcxproj b/srchybrid/lang/fr_FR.vcxproj index 61f8c2a1..459fdda6 100644 --- a/srchybrid/lang/fr_FR.vcxproj +++ b/srchybrid/lang/fr_FR.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/lang/gl_ES.vcxproj b/srchybrid/lang/gl_ES.vcxproj index 8878b8f6..df69e593 100644 --- a/srchybrid/lang/gl_ES.vcxproj +++ b/srchybrid/lang/gl_ES.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/lang/he_IL.vcxproj b/srchybrid/lang/he_IL.vcxproj index fa1f2c41..4b8fe75c 100644 --- a/srchybrid/lang/he_IL.vcxproj +++ b/srchybrid/lang/he_IL.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/lang/hu_HU.vcxproj b/srchybrid/lang/hu_HU.vcxproj index a13167e9..8756a3d4 100644 --- a/srchybrid/lang/hu_HU.vcxproj +++ b/srchybrid/lang/hu_HU.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/lang/it_IT.vcxproj b/srchybrid/lang/it_IT.vcxproj index dffde361..dce43e0b 100644 --- a/srchybrid/lang/it_IT.vcxproj +++ b/srchybrid/lang/it_IT.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/lang/jp_JP.vcxproj b/srchybrid/lang/jp_JP.vcxproj index 2006f1df..108a77a2 100644 --- a/srchybrid/lang/jp_JP.vcxproj +++ b/srchybrid/lang/jp_JP.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/lang/ko_KR.vcxproj b/srchybrid/lang/ko_KR.vcxproj index 280a5755..7e24764c 100644 --- a/srchybrid/lang/ko_KR.vcxproj +++ b/srchybrid/lang/ko_KR.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/lang/lt_LT.vcxproj b/srchybrid/lang/lt_LT.vcxproj index 1f9f4d3a..ac445142 100644 --- a/srchybrid/lang/lt_LT.vcxproj +++ b/srchybrid/lang/lt_LT.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/lang/lv_LV.vcxproj b/srchybrid/lang/lv_LV.vcxproj index d71d6f45..bb194b00 100644 --- a/srchybrid/lang/lv_LV.vcxproj +++ b/srchybrid/lang/lv_LV.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/lang/mt_MT.vcxproj b/srchybrid/lang/mt_MT.vcxproj index 9226cc46..d4f00447 100644 --- a/srchybrid/lang/mt_MT.vcxproj +++ b/srchybrid/lang/mt_MT.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/lang/nb_NO.vcxproj b/srchybrid/lang/nb_NO.vcxproj index 391ad4bd..b4f52e70 100644 --- a/srchybrid/lang/nb_NO.vcxproj +++ b/srchybrid/lang/nb_NO.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/lang/nl_NL.vcxproj b/srchybrid/lang/nl_NL.vcxproj index 91da9c8a..a9d44cfd 100644 --- a/srchybrid/lang/nl_NL.vcxproj +++ b/srchybrid/lang/nl_NL.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/lang/nn_NO.vcxproj b/srchybrid/lang/nn_NO.vcxproj index 8204a843..55d77ba5 100644 --- a/srchybrid/lang/nn_NO.vcxproj +++ b/srchybrid/lang/nn_NO.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/lang/pl_PL.vcxproj b/srchybrid/lang/pl_PL.vcxproj index ce210d4f..7e8958ae 100644 --- a/srchybrid/lang/pl_PL.vcxproj +++ b/srchybrid/lang/pl_PL.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/lang/pt_BR.vcxproj b/srchybrid/lang/pt_BR.vcxproj index 1d105959..6c96dcdb 100644 --- a/srchybrid/lang/pt_BR.vcxproj +++ b/srchybrid/lang/pt_BR.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/lang/pt_PT.vcxproj b/srchybrid/lang/pt_PT.vcxproj index f8486551..5943aefe 100644 --- a/srchybrid/lang/pt_PT.vcxproj +++ b/srchybrid/lang/pt_PT.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/lang/ro_RO.vcxproj b/srchybrid/lang/ro_RO.vcxproj index 45e04860..9af0a299 100644 --- a/srchybrid/lang/ro_RO.vcxproj +++ b/srchybrid/lang/ro_RO.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/lang/ru_RU.vcxproj b/srchybrid/lang/ru_RU.vcxproj index 84c203ab..8a3cfde4 100644 --- a/srchybrid/lang/ru_RU.vcxproj +++ b/srchybrid/lang/ru_RU.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/lang/sl_SI.vcxproj b/srchybrid/lang/sl_SI.vcxproj index b8caf212..5ce09be2 100644 --- a/srchybrid/lang/sl_SI.vcxproj +++ b/srchybrid/lang/sl_SI.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/lang/sq_AL.vcxproj b/srchybrid/lang/sq_AL.vcxproj index 8d9701a4..be449af9 100644 --- a/srchybrid/lang/sq_AL.vcxproj +++ b/srchybrid/lang/sq_AL.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/lang/sv_SE.vcxproj b/srchybrid/lang/sv_SE.vcxproj index 835c1b76..f900de12 100644 --- a/srchybrid/lang/sv_SE.vcxproj +++ b/srchybrid/lang/sv_SE.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/lang/tr_TR.vcxproj b/srchybrid/lang/tr_TR.vcxproj index 7435e32e..3265bb62 100644 --- a/srchybrid/lang/tr_TR.vcxproj +++ b/srchybrid/lang/tr_TR.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/lang/ua_UA.vcxproj b/srchybrid/lang/ua_UA.vcxproj index f7097c30..64b82671 100644 --- a/srchybrid/lang/ua_UA.vcxproj +++ b/srchybrid/lang/ua_UA.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/lang/ug_CN.vcxproj b/srchybrid/lang/ug_CN.vcxproj index 8808513c..7f1b18d9 100644 --- a/srchybrid/lang/ug_CN.vcxproj +++ b/srchybrid/lang/ug_CN.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/lang/va_ES.vcxproj b/srchybrid/lang/va_ES.vcxproj index c382f306..710bef90 100644 --- a/srchybrid/lang/va_ES.vcxproj +++ b/srchybrid/lang/va_ES.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/lang/va_ES_RACV.vcxproj b/srchybrid/lang/va_ES_RACV.vcxproj index 666c6741..d331bbc5 100644 --- a/srchybrid/lang/va_ES_RACV.vcxproj +++ b/srchybrid/lang/va_ES_RACV.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/lang/vi_VN.vcxproj b/srchybrid/lang/vi_VN.vcxproj index 4b4809eb..1a3cc873 100644 --- a/srchybrid/lang/vi_VN.vcxproj +++ b/srchybrid/lang/vi_VN.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/lang/zh_CN.vcxproj b/srchybrid/lang/zh_CN.vcxproj index 06cfaaa0..8bfbf49d 100644 --- a/srchybrid/lang/zh_CN.vcxproj +++ b/srchybrid/lang/zh_CN.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/lang/zh_TW.vcxproj b/srchybrid/lang/zh_TW.vcxproj index 4872e57f..ed2cc260 100644 --- a/srchybrid/lang/zh_TW.vcxproj +++ b/srchybrid/lang/zh_TW.vcxproj @@ -19,12 +19,12 @@ DynamicLibrary - v142 + v141_xp Unicode DynamicLibrary - v142 + v141_xp Unicode diff --git a/srchybrid/res/emuleWin32.manifest b/srchybrid/res/emuleWin32.manifest index 05e84563..2fe13973 100644 --- a/srchybrid/res/emuleWin32.manifest +++ b/srchybrid/res/emuleWin32.manifest @@ -4,7 +4,7 @@ name="eMule" processorArchitecture="x86" publicKeyToken="0000000000000000" - version="0.60.1.3" + version="0.60.2.1" /> eMule by https://www.emule-project.net diff --git a/srchybrid/res/emulex64.manifest b/srchybrid/res/emulex64.manifest index b1b6de66..a62d1a17 100644 --- a/srchybrid/res/emulex64.manifest +++ b/srchybrid/res/emulex64.manifest @@ -4,7 +4,7 @@ name="eMule" processorArchitecture="ia64" publicKeyToken="0000000000000000" - version="0.60.1.3" + version="0.60.2.1" /> eMule by https://www.emule-project.net