From faf22fc165caf88e561b78752aab4a1704c89086 Mon Sep 17 00:00:00 2001
From: George Hazan <george.hazan@gmail.com>
Date: Wed, 9 Oct 2013 15:12:22 +0000
Subject: - fix for moving contact to another group; - home made debug
 functions replaced with their CRT analogs

git-svn-id: http://svn.miranda-ng.org/main/trunk@6417 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
---
 protocols/MRA/src/Mra.cpp              |  45 ++++------
 protocols/MRA/src/Mra.h                |   2 +-
 protocols/MRA/src/MraAvatars.cpp       |   2 +-
 protocols/MRA/src/MraMPop.cpp          |   9 +-
 protocols/MRA/src/MraMRIMProxy.cpp     |  12 +--
 protocols/MRA/src/MraOfflineMsg.cpp    |  16 ++--
 protocols/MRA/src/MraProto.h           |   6 +-
 protocols/MRA/src/MraRTFMsg.cpp        |   4 +-
 protocols/MRA/src/MraSendCommand.cpp   |   4 +-
 protocols/MRA/src/Mra_functions.cpp    |  38 ++++----
 protocols/MRA/src/Mra_proto.cpp        | 153 +++++++++++++--------------------
 protocols/MRA/src/Mra_svcs.cpp         |   2 +-
 protocols/MRA/src/Sdk/DebugFunctions.h | 103 ----------------------
 13 files changed, 125 insertions(+), 271 deletions(-)
 delete mode 100644 protocols/MRA/src/Sdk/DebugFunctions.h

(limited to 'protocols/MRA/src')

diff --git a/protocols/MRA/src/Mra.cpp b/protocols/MRA/src/Mra.cpp
index d77cbb639f..efaddcfd34 100644
--- a/protocols/MRA/src/Mra.cpp
+++ b/protocols/MRA/src/Mra.cpp
@@ -1,5 +1,7 @@
 #include "Mra.h"
 
+LIST<CMraProto> g_Instances(1, PtrKeySortT);
+
 MRA_SETTINGS masMraSettings;
 int hLangpack;
 
@@ -19,9 +21,6 @@ PLUGININFOEX pluginInfoEx = {
 
 void IconsLoad();
 
-int  OnModulesLoaded(WPARAM, LPARAM);
-int  OnPreShutdown(WPARAM, LPARAM);
-
 BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID Reserved)
 {
 	switch (dwReason) {
@@ -47,16 +46,6 @@ extern "C" __declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD miranda
 	return &pluginInfoEx;
 }
 
-///////////////////////////////////////////////////////////////////////////////
-// Protocol instances
-
-static int sttCompareProtocols(const CMraProto *p1, const CMraProto *p2)
-{
-	return lstrcmp(p1->m_tszUserName, p2->m_tszUserName);
-}
-
-LIST<CMraProto> g_Instances(1, sttCompareProtocols);
-
 ///////////////////////////////////////////////////////////////////////////////
 
 static CMraProto* mraProtoInit(const char* pszProtoName, const TCHAR* tszUserName)
@@ -73,6 +62,20 @@ static int mraProtoUninit(CMraProto *ppro)
 	return 0;
 }
 
+///////////////////////////////////////////////////////////////////////////////
+
+static int OnModulesLoaded(WPARAM, LPARAM)
+{
+	masMraSettings.dwGlobalPluginRunning = TRUE;
+	return 0;
+}
+
+static int OnPreShutdown(WPARAM, LPARAM)
+{
+	masMraSettings.dwGlobalPluginRunning = FALSE;
+	return 0;
+}
+
 extern "C" __declspec(dllexport) int Load(void)
 {
 	mir_getLP(&pluginInfoEx);
@@ -117,8 +120,6 @@ extern "C" __declspec(dllexport) int Load(void)
 	pd.fnInit = (pfnInitProto)mraProtoInit;
 	pd.fnUninit = (pfnUninitProto)mraProtoUninit;
 	CallService(MS_PROTO_REGISTERMODULE, 0, (LPARAM)&pd);
-
-	DebugPrintCRLFW(_T("Load - DONE"));
 	return 0;
 }
 
@@ -131,19 +132,5 @@ extern "C" __declspec(dllexport) int Unload(void)
 	}
 
 	g_Instances.destroy();
-	DebugPrintCRLFW(_T("Unload - DONE"));
-	return 0;
-}
-
-
-static int OnModulesLoaded(WPARAM, LPARAM)
-{
-	masMraSettings.dwGlobalPluginRunning = TRUE;
-	return 0;
-}
-
-int OnPreShutdown(WPARAM, LPARAM)
-{
-	masMraSettings.dwGlobalPluginRunning = FALSE;
 	return 0;
 }
diff --git a/protocols/MRA/src/Mra.h b/protocols/MRA/src/Mra.h
index 6629845429..cf8a474842 100644
--- a/protocols/MRA/src/Mra.h
+++ b/protocols/MRA/src/Mra.h
@@ -27,6 +27,7 @@
 #pragma comment(lib,"ws2_32.lib")
 #pragma comment(lib,"mswsock.lib")
 
+#include <crtdbg.h>
 #include <malloc.h>
 #include <stdio.h>
 #include <time.h>
@@ -76,7 +77,6 @@
 #include "resource.h"
 #include "..\xstatus_MRA\src\resource.h"
 
-#include "Sdk/DebugFunctions.h"
 #include "Sdk/MemoryFind.h"
 #include "Sdk/MemoryFindByte.h"
 #include "Sdk/BuffToLowerCase.h"
diff --git a/protocols/MRA/src/MraAvatars.cpp b/protocols/MRA/src/MraAvatars.cpp
index f4a22c4d06..33907a5da0 100644
--- a/protocols/MRA/src/MraAvatars.cpp
+++ b/protocols/MRA/src/MraAvatars.cpp
@@ -310,7 +310,7 @@ void CMraProto::MraAvatarsThreadProc(LPVOID lpParameter)
 									}
 								}
 							}
-							else DebugBreak();
+							else _CrtDbgBreak();
 
 							if (bUseKeepAliveConn == FALSE || bKeepAlive == FALSE) NETLIB_CLOSEHANDLE(m_hConnection);
 						}
diff --git a/protocols/MRA/src/MraMPop.cpp b/protocols/MRA/src/MraMPop.cpp
index d2e5506f6d..022ede41e2 100644
--- a/protocols/MRA/src/MraMPop.cpp
+++ b/protocols/MRA/src/MraMPop.cpp
@@ -112,15 +112,12 @@ DWORD CMraProto::MraMPopSessionQueueAddUrlAndEMail(HANDLE hMPopSessionQueue, con
 
 DWORD CMraProto::MraMPopSessionQueueStart(HANDLE hMPopSessionQueue)
 {
-	DWORD dwRetErrorCode;
-
 	if (!hMPopSessionQueue)
 		return ERROR_INVALID_HANDLE;
 
 	MRA_MPOP_SESSION_QUEUE *pmpsqMPopSessionQueue = (MRA_MPOP_SESSION_QUEUE*)hMPopSessionQueue;
 	MRA_MPOP_SESSION_QUEUE_ITEM *pmpsqi;
 
-	dwRetErrorCode = NO_ERROR;
 	if (pmpsqMPopSessionQueue->bKeyValid == TRUE)
 	if ( FifoMTItemPop(pmpsqMPopSessionQueue, NULL, (LPVOID*)&pmpsqi) == NO_ERROR) {
 		CMStringA szUrl, szEmail;
@@ -129,8 +126,7 @@ DWORD CMraProto::MraMPopSessionQueueStart(HANDLE hMPopSessionQueue)
 			szEmail.MakeLower();
 			szUrl.Format(MRA_MPOP_AUTH_URL, szEmail, pmpsqMPopSessionQueue->lpszMPOPKey, pmpsqi->lpszUrl);
 			CallService(MS_UTILS_OPENURL, TRUE, (LPARAM)szUrl.c_str());
-			DebugPrint(_T("Opening URL: "));
-			DebugPrintCRLFA(szUrl);
+			DebugLogA("Opening URL: %s\n", szUrl);
 		}
 		mir_free(pmpsqi);
 	}
@@ -153,9 +149,6 @@ DWORD MraMPopSessionQueueSetNewMPopKey(HANDLE hMPopSessionQueue, const CMStringA
 		pmpsqMPopSessionQueue->dwMPOPKeySize = szKey.GetLength();
 		memmove(pmpsqMPopSessionQueue->lpszMPOPKey, szKey, szKey.GetLength());
 		(*(pmpsqMPopSessionQueue->lpszMPOPKey + szKey.GetLength())) = 0;
-
-		DebugPrint(_T("New MPOP session key: "));
-		DebugPrintCRLFA(pmpsqMPopSessionQueue->lpszMPOPKey);
 		return NO_ERROR;
 	}
 
diff --git a/protocols/MRA/src/MraMRIMProxy.cpp b/protocols/MRA/src/MraMRIMProxy.cpp
index 0f1068c0c0..f081596605 100644
--- a/protocols/MRA/src/MraMRIMProxy.cpp
+++ b/protocols/MRA/src/MraMRIMProxy.cpp
@@ -148,7 +148,7 @@ DWORD CMraProto::MraMrimProxyConnect(HANDLE hMraMrimProxyData, HANDLE *phConnect
 							case 1:
 								if (dwRcvBuffSizeUsed == BUFF_SIZE_RCV_MIN_FREE) { // bad packet
 									bContinue = FALSE;
-									DebugBreak();
+									_CrtDbgBreak();
 								}
 								else {
 									dwBytesReceived = Netlib_Recv(nls.hReadConns[0], (LPSTR)(lpbBufferRcv+dwRcvBuffSizeUsed), (dwRcvBuffSize-dwRcvBuffSizeUsed), 0);
@@ -160,21 +160,21 @@ DWORD CMraProto::MraMrimProxyConnect(HANDLE hMraMrimProxyData, HANDLE *phConnect
 													if (((mrim_packet_header_t*)lpbBufferRcv)->msg == MRIM_CS_PROXY_HELLO_ACK) // connect OK!
 														dwRetErrorCode = NO_ERROR;
 													else // bad/wrong
-														DebugBreak();
+														_CrtDbgBreak();
 
 													bContinue = FALSE;
 												}
 												else // not all packet received, continue receiving
-													DebugPrintCRLF(L"Not all packet received, continue receiving");
+													DebugLogA("Not all packet received, continue receiving\n");
 											}
 											else  { // bad packet
-												DebugPrintCRLF(L"Bad packet");
-												DebugBreak();
+												DebugLogA("Bad packet\n");
+												_ASSERT(false);
 												bContinue = FALSE;
 											}
 										}
 										else // packet too small, continue receiving
-											DebugPrintCRLF(L"Packet to small, continue receiving");
+											DebugLogA("Packet to small, continue receiving\n");
 									}
 									else { // disconnected
 										dwRetErrorCode = GetLastError();
diff --git a/protocols/MRA/src/MraOfflineMsg.cpp b/protocols/MRA/src/MraOfflineMsg.cpp
index b94790afb9..dad1b3b693 100644
--- a/protocols/MRA/src/MraOfflineMsg.cpp
+++ b/protocols/MRA/src/MraOfflineMsg.cpp
@@ -112,7 +112,7 @@ static DWORD MraOfflineMessageGetNextMIMEPart(LPSTR lpszBody, size_t dwBodySize,
 		else if ((*((WORD*)lpszMIMEPart)) == '--')
 			lpszMIMEPart = NULL;
 		else
-			DebugBreak();
+			_CrtDbgBreak();
 
 		if (lpszMIMEPart == NULL)
 			return ERROR_NO_MORE_ITEMS;
@@ -125,7 +125,7 @@ static DWORD MraOfflineMessageGetNextMIMEPart(LPSTR lpszBody, size_t dwBodySize,
 			else if ((*((BYTE*)(lpszTemp-3))) == (*((BYTE*)LF)))
 				dwMIMEPartSize -= 3;
 			else
-				DebugBreak();
+				_CrtDbgBreak();
 
 			if (plpszMIMEPart) (*plpszMIMEPart) = lpszMIMEPart;
 			if (pdwMIMEPartSize) (*pdwMIMEPartSize) = dwMIMEPartSize;
@@ -162,7 +162,7 @@ static DWORD PlainText2message(const CMStringA &szContentType, const CMStringA &
 		}
 		return NO_ERROR;
 	}
-	else DebugBreak();
+	else _CrtDbgBreak();
 
 	return ERROR_INVALID_HANDLE;
 }
@@ -174,13 +174,8 @@ DWORD MraOfflineMessageGet(CMStringA *plpsMsg, DWORD *pdwTime, DWORD *pdwFlags,
 
 	LPSTR lpszHeader, lpszBody, lpszContentTypeLow;
 	size_t dwHeaderSize, dwBodySize, dwContentTypeSize;
-	DWORD dwMultichatType;
 	CMStringA szTemp;
 
-	#ifdef _DEBUG
-		DebugPrintCRLFA(plpsMsg->GetString());
-	#endif
-
 	if ( MraOfflineMessageGetMIMEHeadAndBody(plpsMsg->GetString(), plpsMsg->GetLength(), &lpszHeader, &dwHeaderSize, &lpszBody, &dwBodySize) != NO_ERROR)
 		return ERROR_INVALID_HANDLE;
 
@@ -202,6 +197,7 @@ DWORD MraOfflineMessageGet(CMStringA *plpsMsg, DWORD *pdwTime, DWORD *pdwFlags,
 	else
 		*pdwFlags = 0;
 
+	DWORD dwMultichatType;
 	if (MraOfflineMessageGetHeaderValue(lpszHeader, lpszHeaderLow, dwHeaderSize, "x-mrim-multichat-type", 21, szTemp) == NO_ERROR)
 		dwMultichatType = StrHexToUNum32(szTemp, szTemp.GetLength());
 	else
@@ -265,13 +261,13 @@ DWORD MraOfflineMessageGet(CMStringA *plpsMsg, DWORD *pdwTime, DWORD *pdwFlags,
 								return NO_ERROR;
 							}
 						}
-						else DebugBreak();
+						else _CrtDbgBreak();
 					}
 				}
 				i++;
 			}
 
-			DebugBreakIf((i>3 || i == 0));
+			_ASSERTE((i>3 || i == 0));
 		}
 		return ERROR_NOT_FOUND;
 	}
diff --git a/protocols/MRA/src/MraProto.h b/protocols/MRA/src/MraProto.h
index c6f9b779e6..c7483ca40a 100644
--- a/protocols/MRA/src/MraProto.h
+++ b/protocols/MRA/src/MraProto.h
@@ -198,7 +198,10 @@ struct CMraProto : public PROTO<CMraProto>
 
 	CRITICAL_SECTION csCriticalSectionSend;
 
-	HANDLE  AddToListByEmail(LPCTSTR plpsEMail, LPCTSTR plpsNick, LPCTSTR plpsFirstName, LPCTSTR plpsLastName, DWORD dwFlags);
+	void   DebugLogA(LPCSTR szFormat, ...);
+	void   DebugLogW(LPCWSTR szFormat, ...);
+
+	HANDLE AddToListByEmail(LPCTSTR plpsEMail, LPCTSTR plpsNick, LPCTSTR plpsFirstName, LPCTSTR plpsLastName, DWORD dwFlags);
 
 	DWORD  MraMessage(BOOL bAddToQueue, HANDLE hContact, DWORD dwAckType, DWORD dwFlags, const CMStringA &szEmail, const CMStringW &wszMessage, LPBYTE lpbMultiChatData, size_t dwMultiChatDataSize);
 	DWORD  MraMessageAsk(DWORD dwMsgID, DWORD dwFlags, const CMStringA &szEmail, const CMStringW &wszMessage, const CMStringW &wszMessageRTF);
@@ -347,5 +350,4 @@ struct CMraProto : public PROTO<CMraProto>
    DWORD   MraAvatarsDeleteContactAvatarFile(HANDLE hAvatarsQueueHandle, HANDLE hContact);
 
 	void    __cdecl MraAvatarsThreadProc(LPVOID lpParameter);
-
 };
diff --git a/protocols/MRA/src/MraRTFMsg.cpp b/protocols/MRA/src/MraRTFMsg.cpp
index bb19c55578..55e2fdf185 100644
--- a/protocols/MRA/src/MraRTFMsg.cpp
+++ b/protocols/MRA/src/MraRTFMsg.cpp
@@ -174,7 +174,7 @@ DWORD MraSymbolsToRTFTags(DWORD dwFlags, LPSTR lpszMessage, size_t dwMessageSize
 			}
 			else {
 				dwRetErrorCode = ERROR_BUFFER_OVERFLOW;
-				DebugBreak();
+				_CrtDbgBreak();
 				break;
 			}
 		}
@@ -235,7 +235,7 @@ DWORD CMraProto::MraConvertToRTFW(const CMStringW &wszMessage, CMStringA &szMess
 			memmove(lpszMessageRTFCur, PAR, sizeof(PAR));lpszMessageRTFCur += (sizeof(PAR)-1);
 			memmove(lpszMessageRTFCur, CRLF, sizeof(CRLF));lpszMessageRTFCur += (sizeof(CRLF)-1);
 			memmove(lpszMessageRTFCur, "}", 2);lpszMessageRTFCur += 2;
-			DebugPrintCRLFA(szMessageRTF);
+			DebugLogA("%s\n", szMessageRTF);
 			return NO_ERROR;
 		}
 
diff --git a/protocols/MRA/src/MraSendCommand.cpp b/protocols/MRA/src/MraSendCommand.cpp
index e821b3548c..27519820ce 100644
--- a/protocols/MRA/src/MraSendCommand.cpp
+++ b/protocols/MRA/src/MraSendCommand.cpp
@@ -73,7 +73,7 @@ public:
 
 DWORD CMraProto::MraMessage(BOOL bAddToQueue, HANDLE hContact, DWORD dwAckType, DWORD dwFlags, const CMStringA &szEmail, const CMStringW &lpwszMessage, LPBYTE lpbMultiChatData, size_t dwMultiChatDataSize)
 {
-	Netlib_Logf(m_hNetlibUser, "Sending message: flags %08x, to '%S', message '%S'\n", dwFlags, szEmail, lpwszMessage);
+	DebugLogA("Sending message: flags %08x, to '%S', message '%S'\n", dwFlags, szEmail, lpwszMessage);
 
 	DWORD dwRet = 0;
 	LPSTR lpszMessageConverted = (LPSTR)lpwszMessage.GetString();
@@ -508,7 +508,7 @@ DWORD CMraProto::MraSendPacket(HANDLE m_hConnection, DWORD dwCMDNum, DWORD dwTyp
 	pmaHeader->msg = dwType;// ��� ������
 	pmaHeader->dlen = dwDataSize;// ����� ������
 	
-	Netlib_Logf(m_hNetlibUser, "Sending packet %08x\n", dwType);
+	DebugLogA("Sending packet %08x\n", dwType);
 
 	memcpy(lpbData+sizeof(mrim_packet_header_t), lpData, dwDataSize);
 	return Netlib_Send(m_hConnection, (LPSTR)lpbData, (dwDataSize+sizeof(mrim_packet_header_t)), 0);
diff --git a/protocols/MRA/src/Mra_functions.cpp b/protocols/MRA/src/Mra_functions.cpp
index 2f2bbeb346..35c4e610c1 100644
--- a/protocols/MRA/src/Mra_functions.cpp
+++ b/protocols/MRA/src/Mra_functions.cpp
@@ -307,7 +307,6 @@ DWORD CMraProto::MraMoveContactToGroup(HANDLE hContact, DWORD dwGroupID, LPCTSTR
 			break;
 		}
 
-	DWORD dwContactFlags = CONTACT_FLAG_UNICODE_NAME | CONTACT_FLAG_GROUP;
 	if (p == NULL) {
 		if (m_groups.getCount() == 20)
 			return 0;
@@ -317,16 +316,15 @@ DWORD CMraProto::MraMoveContactToGroup(HANDLE hContact, DWORD dwGroupID, LPCTSTR
 			if (m_groups.find((MraGroupItem*)&id) == NULL)
 				break;
 
-		dwContactFlags |= (id << 24);
+		DWORD dwContactFlags = CONTACT_FLAG_UNICODE_NAME | CONTACT_FLAG_GROUP | (id << 24);
 		p = new MraGroupItem(id, dwContactFlags, ptszName);
 		m_groups.insert(p);
 		MraAddContact(NULL, dwContactFlags, 0, ptszName, p->m_name);
 	}
-	else dwContactFlags |= (p->m_id << 24);
 
 	if (dwGroupID != p->m_id) {
-		setDword("GroupID", p->m_id);
-		MraModifyContact(hContact, 0, &dwContactFlags, &p->m_id);
+		setDword(hContact, "GroupID", p->m_id);
+		MraModifyContact(hContact, 0, 0, &p->m_id);
 	}
 	return p->m_id;
 }
@@ -1463,14 +1461,6 @@ static DWORD ReplaceInBuff(LPVOID lpInBuff, size_t dwInBuffSize, size_t dwReplac
 {
 	DWORD dwRetErrorCode = NO_ERROR;
 	
-	#ifdef _DEBUG //check tables
-		for (size_t i = 0;i<dwReplaceItemsCount;i++)
-		{
-			if (lstrlen((LPTSTR)plpInReplaceItems[i]) != (pdwInReplaceItemsCounts[i]/sizeof(TCHAR))) DebugBreak();
-			if (lstrlen((LPTSTR)plpOutReplaceItems[i]) != (pdwOutReplaceItemsCounts[i]/sizeof(TCHAR))) DebugBreak();
-		}
-	#endif
-
 	LPBYTE *plpbtFounded = (LPBYTE*)mir_calloc((sizeof(LPBYTE)*dwReplaceItemsCount));
 	if (plpbtFounded) {
 		LPBYTE lpbtOutBuffCur, lpbtInBuffCur, lpbtInBuffCurPrev, lpbtOutBuffMax;
@@ -1507,12 +1497,12 @@ static DWORD ReplaceInBuff(LPVOID lpInBuff, size_t dwInBuffSize, size_t dwReplac
 				}
 				else {
 					dwRetErrorCode = ERROR_BUFFER_OVERFLOW;
-					DebugBreak();
+					_CrtDbgBreak();
 					break;
 				}
 			}
 			else {// ���� �� ���� ������� �� ������, �� ������ ������.
-				DebugBreak();
+				_CrtDbgBreak();
 				break;
 			}
 		}
@@ -1549,3 +1539,21 @@ CMStringW EncodeXML(const CMStringW &lptszMessage)
 	ReplaceInBuff((void*)lptszMessage.GetString(), lptszMessage.GetLength()*sizeof(TCHAR), SIZEOF(lpszXMLTags), (LPVOID*)lpszXMLSymbols, (size_t*)dwXMLSymbolsCount, (LPVOID*)lpszXMLTags, (size_t*)dwXMLTagsCount, ret);
 	return ret;
 }
+
+void CMraProto::DebugLogA(LPCSTR szFormat, ...)
+{
+	char buf[4096];
+	va_list args;
+	va_start(args, szFormat);
+	vsprintf_s(buf, sizeof(buf), szFormat, args);
+	CallService(MS_NETLIB_LOG, (WPARAM)m_hNetlibUser, (LPARAM)buf);
+}
+
+void CMraProto::DebugLogW(LPCWSTR szFormat, ...)
+{
+	WCHAR buf[4096];
+	va_list args;
+	va_start(args, szFormat);
+	vswprintf_s(buf, SIZEOF(buf), szFormat, args);
+	CallService(MS_NETLIB_LOGW, (WPARAM)m_hNetlibUser, (LPARAM)buf);
+}
diff --git a/protocols/MRA/src/Mra_proto.cpp b/protocols/MRA/src/Mra_proto.cpp
index 82c72b335c..e57266d7a8 100644
--- a/protocols/MRA/src/Mra_proto.cpp
+++ b/protocols/MRA/src/Mra_proto.cpp
@@ -329,13 +329,13 @@ DWORD CMraProto::MraNetworkDispatcher()
 									dwRcvBuffSizeUsed = dwDataCurrentBuffSizeUsed;
 									dwDataCurrentBuffOffset = 0;
 								}
-								DebugPrintCRLFW(L"Not all packet received, continue receiving");
+								DebugLogW(L"Not all packet received, continue receiving\n");
 								break;
 							}
 						}
 						// bad packet
 						else {
-							DebugPrintCRLFW(L"Bad packet");
+							DebugLogW(L"Bad packet\n");
 							dwDataCurrentBuffOffset = 0;
 							dwRcvBuffSizeUsed = 0;
 							break;
@@ -343,7 +343,7 @@ DWORD CMraProto::MraNetworkDispatcher()
 					}
 					// packet to small, continue receiving
 					else {
-						DebugPrintCRLFW(L"Packet to small, continue receiving");
+						DebugLogW(L"Packet to small, continue receiving\n");
 						memmove(lpbBufferRcv, (lpbBufferRcv+dwDataCurrentBuffOffset), dwDataCurrentBuffSizeUsed);
 						dwRcvBuffSizeUsed = dwDataCurrentBuffSizeUsed;
 						dwDataCurrentBuffOffset = 0;
@@ -360,8 +360,8 @@ DWORD CMraProto::MraNetworkDispatcher()
 				bContinue = FALSE;
 			}
 			break;
-		}// end switch
-	}// end while
+		}
+	}
 	mir_free(lpbBufferRcv);
 
 	return dwRetErrorCode;
@@ -516,14 +516,14 @@ bool CMraProto::CmdUserInfo(BinBuffer &buf)
 			}
 		}
 		else if (szString == "connect.xml") {
-			DebugPrintA(szString);
+			DebugLogA(szString);
 			buf >> szStringW;
-			DebugPrintCRLFW(szStringW);
+			DebugLogW(szStringW);
 		}
 		else if (szString == "micblog.show_title") {
-			DebugPrintA(szString);
+			DebugLogA(szString);
 			buf >> szStringW;
-			DebugPrintCRLFW(szStringW);
+			DebugLogW(szStringW);
 		}
 		else if (szString == "micblog.status.id") {
 			buf >> szString;
@@ -559,11 +559,7 @@ bool CMraProto::CmdUserInfo(BinBuffer &buf)
 		else if (szString == "trusted_update") {
 			buf >> szString;
 		}
-		else {
-			#ifdef _DEBUG
-				DebugBreak();
-			#endif
-		}
+		else _CrtDbgBreak();
 	}
 	MraUpdateEmailStatus("", "", 0, 0);
 	return true;
@@ -649,7 +645,7 @@ bool CMraProto::CmdFileTransfer(BinBuffer &buf)
 		buf >> szFiles >> dwTemp;
 		if (dwTemp) { // LPS DESCRIPTION
 			buf >> dwTemp >> wszFilesW;
-			DebugBreakIf(dwTemp != 1);
+			_ASSERTE(dwTemp != 1);
 		}
 		buf >> szAddresses;
 	}
@@ -770,7 +766,7 @@ bool CMraProto::CmdContactAck(int cmd, int seq, BinBuffer &buf)
 			break;
 		case CONTACT_OPER_NO_SUCH_USER:// ## ������������ ������������ �� ���������� � �������
 			SetContactBasicInfoW(hContact, 0, SCBIF_SERVER_FLAG, 0, 0, 0, -1, 0, 0, 0, 0);
-			ShowFormattedErrorMessage(_T("User does not registred"), NO_ERROR);
+			ShowFormattedErrorMessage(_T("No such user to add"), NO_ERROR);
 			break;
 		case CONTACT_OPER_INVALID_INFO:// ## ������������ ��� ������������
 			ShowFormattedErrorMessage(_T("Invalid user name"), NO_ERROR);
@@ -828,7 +824,7 @@ bool CMraProto::CmdAnketaInfo(int seq, BinBuffer &buf)
 		// read headers name
 		for (unsigned i = 0; i < dwFieldsNum; i++) {
 			buf >> pmralpsFields[i];
-			DebugPrintCRLFA(pmralpsFields[i]);
+			DebugLogA("%s ", pmralpsFields[i]);
 		}
 
 		while (!buf.eof()) {
@@ -977,10 +973,7 @@ bool CMraProto::CmdAnketaInfo(int seq, BinBuffer &buf)
 					}
 					else {// for DEBUG ONLY
 						buf >> val;
-#ifdef _DEBUG
-						DebugPrintCRLFA(fld);
-						DebugPrintCRLFA(val);
-#endif
+						DebugLogA("%s = %s\n", fld, val);
 					}
 				}
 			}
@@ -1110,8 +1103,7 @@ bool CMraProto::CmdClist2(BinBuffer &buf)
 
 		int iGroupMode = getByte("GroupMode", 100);
 
-		DebugPrintCRLFW(L"Groups:");
-		DebugPrintCRLFA(szGroupMask);
+		DebugLogA("Groups: %s\n", szGroupMask);
 		DWORD dwID = 0;
 		for (DWORD i = 0; i < dwGroupsCount; i++) { //groups handle
 			DWORD dwControlParam = 0, dwGroupFlags;
@@ -1141,31 +1133,24 @@ bool CMraProto::CmdClist2(BinBuffer &buf)
 					m_groups.insert( new MraGroupItem(dwID, dwGroupFlags, wszGroupName));
 					Clist_CreateGroup(0, wszGroupName);
 				}
-				#ifdef _DEBUG
-					DebugPrintW(wszGroupName);
-
-					char szBuff[200];
-					mir_snprintf(szBuff, SIZEOF(szBuff), ": flags: %lu (", dwGroupFlags);
-					DebugPrintA(szBuff);
-
-					if (dwGroupFlags & CONTACT_FLAG_REMOVED)      DebugPrintA("CONTACT_FLAG_REMOVED, ");
-					if (dwGroupFlags & CONTACT_FLAG_GROUP)        DebugPrintA("CONTACT_FLAG_GROUP, ");
-					if (dwGroupFlags & CONTACT_FLAG_INVISIBLE)    DebugPrintA("CONTACT_FLAG_INVISIBLE, ");
-					if (dwGroupFlags & CONTACT_FLAG_VISIBLE)      DebugPrintA("CONTACT_FLAG_VISIBLE, ");
-					if (dwGroupFlags & CONTACT_FLAG_IGNORE)       DebugPrintA("CONTACT_FLAG_IGNORE, ");
-					if (dwGroupFlags & CONTACT_FLAG_SHADOW)       DebugPrintA("CONTACT_FLAG_SHADOW, ");
-					if (dwGroupFlags & CONTACT_FLAG_AUTHORIZED)   DebugPrintA("CONTACT_FLAG_AUTHORIZED, ");
-					if (dwGroupFlags & CONTACT_FLAG_MULTICHAT)    DebugPrintA("CONTACT_FLAG_MULTICHAT, ");
-					if (dwGroupFlags & CONTACT_FLAG_UNICODE_NAME) DebugPrintA("CONTACT_FLAG_UNICODE_NAME, ");
-					if (dwGroupFlags & CONTACT_FLAG_PHONE)        DebugPrintA("CONTACT_FLAG_PHONE, ");
-					DebugPrintCRLFA(")");
-				#endif
+
+				DebugLogW(L"'%s', flags: %lu (", wszGroupName, dwGroupFlags);
+				if (dwGroupFlags & CONTACT_FLAG_REMOVED)      DebugLogA("CONTACT_FLAG_REMOVED, ");
+				if (dwGroupFlags & CONTACT_FLAG_GROUP)        DebugLogA("CONTACT_FLAG_GROUP, ");
+				if (dwGroupFlags & CONTACT_FLAG_INVISIBLE)    DebugLogA("CONTACT_FLAG_INVISIBLE, ");
+				if (dwGroupFlags & CONTACT_FLAG_VISIBLE)      DebugLogA("CONTACT_FLAG_VISIBLE, ");
+				if (dwGroupFlags & CONTACT_FLAG_IGNORE)       DebugLogA("CONTACT_FLAG_IGNORE, ");
+				if (dwGroupFlags & CONTACT_FLAG_SHADOW)       DebugLogA("CONTACT_FLAG_SHADOW, ");
+				if (dwGroupFlags & CONTACT_FLAG_AUTHORIZED)   DebugLogA("CONTACT_FLAG_AUTHORIZED, ");
+				if (dwGroupFlags & CONTACT_FLAG_MULTICHAT)    DebugLogA("CONTACT_FLAG_MULTICHAT, ");
+				if (dwGroupFlags & CONTACT_FLAG_UNICODE_NAME) DebugLogA("CONTACT_FLAG_UNICODE_NAME, ");
+				if (dwGroupFlags & CONTACT_FLAG_PHONE)        DebugLogA("CONTACT_FLAG_PHONE, ");
+				DebugLogA(")");
 			}
 			dwID++;
 		}
 
-		DebugPrintCRLFA("Contacts:");
-		DebugPrintCRLFA(szContactMask);
+		DebugLogA("Contacts: %s\n", szContactMask);
 		dwID = 20;
 		while (!buf.eof()) {
 			DWORD dwControlParam = 0;
@@ -1253,52 +1238,40 @@ bool CMraProto::CmdClist2(BinBuffer &buf)
 				else if (j == 19 && fieldType == 's') { // ?????? ?
 					buf >> szString;
 					dwControlParam++;
-					DebugBreakIf(szString.GetLength());
+					_ASSERTE(szString.GetLength());
 				}
 				else {
 					if (fieldType == 's') {
 						buf >> szString;
 						if (szString.GetLength()) {
-							DebugPrintCRLFA(szString);
+							DebugLogA("%s ", szString);
 						}
 					}
 					else if (fieldType == 'u') {
 						char szBuff[50];
 						mir_snprintf(szBuff, SIZEOF(szBuff), "%lu, ", dwTemp);//;
-						DebugPrintCRLFA(szBuff);
+						DebugLogA("%s ", szBuff);
 					}
-					else DebugBreak();
+					else _CrtDbgBreak();
 				}
 			}
 
-			#ifdef _DEBUG
-			{
-				char szBuff[200];
-				mir_snprintf(szBuff, SIZEOF(szBuff), "ID: %lu, Group id: %lu, ", dwID, dwGroupID);
-				DebugPrintA(szBuff);
-				DebugPrintA(szEmail);
-
-				mir_snprintf(szBuff, SIZEOF(szBuff), ": flags: %lu (", dwContactFlag);
-				DebugPrintA(szBuff);
-				if (dwContactFlag & CONTACT_FLAG_REMOVED)      DebugPrintA("CONTACT_FLAG_REMOVED, ");
-				if (dwContactFlag & CONTACT_FLAG_GROUP)        DebugPrintA("CONTACT_FLAG_GROUP, ");
-				if (dwContactFlag & CONTACT_FLAG_INVISIBLE)    DebugPrintA("CONTACT_FLAG_INVISIBLE, ");
-				if (dwContactFlag & CONTACT_FLAG_VISIBLE)      DebugPrintA("CONTACT_FLAG_VISIBLE, ");
-				if (dwContactFlag & CONTACT_FLAG_IGNORE)       DebugPrintA("CONTACT_FLAG_IGNORE, ");
-				if (dwContactFlag & CONTACT_FLAG_SHADOW)       DebugPrintA("CONTACT_FLAG_SHADOW, ");
-				if (dwContactFlag & CONTACT_FLAG_AUTHORIZED)   DebugPrintA("CONTACT_FLAG_AUTHORIZED, ");
-				if (dwContactFlag & CONTACT_FLAG_MULTICHAT)    DebugPrintA("CONTACT_FLAG_MULTICHAT, ");
-				if (dwContactFlag & CONTACT_FLAG_UNICODE_NAME) DebugPrintA("CONTACT_FLAG_UNICODE_NAME, ");
-				if (dwContactFlag & CONTACT_FLAG_PHONE)        DebugPrintA("CONTACT_FLAG_PHONE, ");
-				DebugPrintA(")");
-
-				mir_snprintf(szBuff, SIZEOF(szBuff), ": server flags: %lu (", dwContactSeverFlags);
-				DebugPrintA(szBuff);
-				if (dwContactSeverFlags & CONTACT_INTFLAG_NOT_AUTHORIZED)
-					DebugPrintA("CONTACT_INTFLAG_NOT_AUTHORIZED, ");
-				DebugPrintCRLFA(")");
-			}
-			#endif
+			DebugLogA("ID: %lu, Group id: %lu, %s: flags: %lu (", dwID, dwGroupID, szEmail, dwContactFlag);
+				if (dwContactFlag & CONTACT_FLAG_REMOVED)      DebugLogA("CONTACT_FLAG_REMOVED, ");
+				if (dwContactFlag & CONTACT_FLAG_GROUP)        DebugLogA("CONTACT_FLAG_GROUP, ");
+				if (dwContactFlag & CONTACT_FLAG_INVISIBLE)    DebugLogA("CONTACT_FLAG_INVISIBLE, ");
+				if (dwContactFlag & CONTACT_FLAG_VISIBLE)      DebugLogA("CONTACT_FLAG_VISIBLE, ");
+				if (dwContactFlag & CONTACT_FLAG_IGNORE)       DebugLogA("CONTACT_FLAG_IGNORE, ");
+				if (dwContactFlag & CONTACT_FLAG_SHADOW)       DebugLogA("CONTACT_FLAG_SHADOW, ");
+				if (dwContactFlag & CONTACT_FLAG_AUTHORIZED)   DebugLogA("CONTACT_FLAG_AUTHORIZED, ");
+				if (dwContactFlag & CONTACT_FLAG_MULTICHAT)    DebugLogA("CONTACT_FLAG_MULTICHAT, ");
+				if (dwContactFlag & CONTACT_FLAG_UNICODE_NAME) DebugLogA("CONTACT_FLAG_UNICODE_NAME, ");
+				if (dwContactFlag & CONTACT_FLAG_PHONE)        DebugLogA("CONTACT_FLAG_PHONE, ");
+			DebugLogA(")");
+
+			DebugLogA(": server flags: %lu (", dwContactSeverFlags);
+				if (dwContactSeverFlags & CONTACT_INTFLAG_NOT_AUTHORIZED) DebugLogA("CONTACT_INTFLAG_NOT_AUTHORIZED, ");
+			DebugLogA(")");
 
 			// add/modify contact
 			if (dwGroupID != 103)//***deb filtering phone/sms contats
@@ -1311,7 +1284,7 @@ bool CMraProto::CmdClist2(BinBuffer &buf)
 					// already in list, remove the duplicate
 					if (GetContactBasicInfoW(hContact, &dwTemp, NULL, NULL, NULL, NULL, NULL, NULL, NULL) == NO_ERROR && dwTemp != -1) {
 						dwTemp = dwTemp;
-						DebugBreak();
+						_CrtDbgBreak();
 					}
 					else {
 						dwTemp = GetMirandaStatusFromMraStatus(dwStatus, GetMraXStatusIDFromMraUriStatus(szSpecStatusUri), &dwXStatus);
@@ -1436,7 +1409,7 @@ bool CMraProto::CmdProxy(BinBuffer &buf)
 			MraFilesQueueStartMrimProxy(hFilesQueueHandle, dwIDRequest);
 		else { // empty/invalid session
 			MraProxyAck(PROXY_STATUS_ERROR, szEmail, dwIDRequest, dwAckType, szString, szAddresses, mguidSessionID);
-			DebugBreak();
+			_CrtDbgBreak();
 		}
 	}
 	return true;
@@ -1473,11 +1446,11 @@ bool CMraProto::CmdProxyAck(BinBuffer &buf)
 			case PROXY_STATUS_MIRROR:
 			case PROXY_STATUS_CLOSED:
 			default:
-				DebugBreak();
+				_CrtDbgBreak();
 				break;
 			}
 		}
-		else DebugBreak();
+		else _CrtDbgBreak();
 	}
 	return true;
 }
@@ -1527,7 +1500,7 @@ bool CMraProto::MraCommandDispatcher(mrim_packet_header_t *pmaHeader)
 	HANDLE hContact = NULL;
 	LPBYTE pByte;
 
-	Netlib_Logf(m_hNetlibUser, "Received packet %x\n", pmaHeader->msg);
+	DebugLogA("Received packet %x\n", pmaHeader->msg);
 
 	BinBuffer buf((LPBYTE)pmaHeader + sizeof(mrim_packet_header_t), pmaHeader->dlen);
 
@@ -1600,11 +1573,11 @@ bool CMraProto::MraCommandDispatcher(mrim_packet_header_t *pmaHeader)
 		break;
 
 	case MRIM_CS_PROXY_HELLO:
-		DebugBreak();
+		_CrtDbgBreak();
 		break;
 
 	case MRIM_CS_PROXY_HELLO_ACK:
-		DebugBreak();
+		_CrtDbgBreak();
 		break;
 
 	case MRIM_CS_UNKNOWN:
@@ -1613,9 +1586,7 @@ bool CMraProto::MraCommandDispatcher(mrim_packet_header_t *pmaHeader)
 		break;
 
 	default:
-		#ifdef _DEBUG
-			DebugBreak();
-		#endif
+		_CrtDbgBreak();
 		break;
 	}
 	return true;
@@ -1697,24 +1668,24 @@ DWORD CMraProto::MraRecvCommand_Message(DWORD dwTime, DWORD dwFlags, CMStringA &
 								buf >> szString;
 								wszMessage = ptrW(mir_a2u_cp(szString, MRA_CODE_PAGE));
 							}
-							else DebugBreak();
+							else _CrtDbgBreak();
 						}
 						else { // RTF text
 							if (dwRTFPartsCount > 2) {
 								buf >> szString;
-								DebugBreak();
+								_CrtDbgBreak();
 							}
 
 							lpszMessageExt = lpsRTFString;
 						}
 					}
-					else DebugBreak();
+					else _CrtDbgBreak();
 				}
 			}
 		}
 	}
 
-	Netlib_Logf(m_hNetlibUser, "Processing message: %08X, from '%s', text '%S'\n", dwFlags, plpsFrom.c_str(), wszMessage.c_str());
+	DebugLogA("Processing message: %08X, from '%s', text '%S'\n", dwFlags, plpsFrom.c_str(), wszMessage.c_str());
 
 	// processing
 	if (dwFlags & (MESSAGE_FLAG_SMS | MESSAGE_SMS_DELIVERY_REPORT)) {// SMS //if (IsPhone(plpsFrom->lpszData, plpsFrom->dwSize))
@@ -1794,7 +1765,7 @@ DWORD CMraProto::MraRecvCommand_Message(DWORD dwTime, DWORD dwFlags, CMStringA &
 					MraAddContact(hContact, (CONTACT_FLAG_VISIBLE|CONTACT_FLAG_MULTICHAT|CONTACT_FLAG_UNICODE_NAME), -1, plpsFrom, lpsMultichatName);
 					break;
 				default:
-					DebugBreak();
+					_CrtDbgBreak();
 					break;
 				}
 			}
diff --git a/protocols/MRA/src/Mra_svcs.cpp b/protocols/MRA/src/Mra_svcs.cpp
index aa7144a00c..48295be603 100644
--- a/protocols/MRA/src/Mra_svcs.cpp
+++ b/protocols/MRA/src/Mra_svcs.cpp
@@ -481,7 +481,7 @@ int CMraProto::MraDbSettingChanged(WPARAM wParam, LPARAM lParam)
 					break;
 				}
 				if (wszGroup.GetLength()) {
-					DWORD dwGroupID = getDword("GroupID", -1);
+					DWORD dwGroupID = getDword(hContact, "GroupID", -1);
 					if (dwGroupID != -1)
 						MraMoveContactToGroup(hContact, dwGroupID, wszGroup);
 				}
diff --git a/protocols/MRA/src/Sdk/DebugFunctions.h b/protocols/MRA/src/Sdk/DebugFunctions.h
deleted file mode 100644
index 9ae925d448..0000000000
--- a/protocols/MRA/src/Sdk/DebugFunctions.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright (c) 2004 Rozhuk Ivan <rozhuk.im@gmail.com>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- */
-
-
-
-#if !defined(AFX_DEBUG_FUNCTIONS__H__INCLUDED_)
-#define AFX_DEBUG_FUNCTIONS__H__INCLUDED_
-
-#pragma once
-
-//////////////////////////////////////////////////////////////////////////
-////////////////////////////DebugPrint////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-// DebugBuildPrint(Helo world);
-// ����������� ������ � Debug ���� �� ����� �������
-#ifdef _DEBUG
-	#define DebugPrintA(szText) OutputDebugStringA((szText))
-	#define DebugPrintW(szText) OutputDebugStringW((szText))
-	#define DebugPrintCRLFA(szText) OutputDebugStringA((szText));OutputDebugStringA("\r\n")
-	#define DebugPrintCRLFW(szText) OutputDebugStringW((szText));OutputDebugStringW(L"\r\n")
-#else
-	#define DebugPrintA(szText)
-	#define DebugPrintW(szText)
-	#define DebugPrintCRLFA(szText)
-	#define DebugPrintCRLFW(szText)
-#endif //_DEBUG
-
-
-#ifdef UNICODE
-	#define DebugPrint DebugPrintW
-	#define DebugPrintCRLF DebugPrintCRLFW
-#else
-	#define DebugPrint DebugPrintA
-	#define DebugPrintCRLF DebugPrintCRLFA
-#endif
-//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-
-
-
-//////////////////////////////////////////////////////////////////////////
-////////////////////////////DebugBreak////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-// DebugBreak();
-// ����� ��������, ����� ������� ������������ API
-#if defined(_DEBUG)
-	#if defined(_X86_)
-		#define DebugBreak() _asm{int 3}
-	#else
-		#include <intrin.h>
-		#define DebugBreak() __debugbreak()
-	#endif
-#else
-	#define DebugBreak()
-#endif //_DEBUG
-//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-
-
-//////////////////////////////////////////////////////////////////////////
-////////////////////////////DebugBreakIf//////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-// DebugBreakIf();
-// ����� ��������, ����� ������� ������������ API, ����������� ��� �������
-#if defined(_DEBUG)
-	#define DebugBreakIf(a) if ((a)) DebugBreak();
-#else
-	#define DebugBreakIf(a)
-#endif //_DEBUG
-//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-
-
-
-
-#endif // !defined(AFX_DEBUG_FUNCTIONS__H__INCLUDED_)
-- 
cgit v1.2.3