diff options
Diffstat (limited to 'protocols/Gadu-Gadu/src')
| -rw-r--r-- | protocols/Gadu-Gadu/src/avatar.cpp | 96 | ||||
| -rw-r--r-- | protocols/Gadu-Gadu/src/core.cpp | 259 | ||||
| -rw-r--r-- | protocols/Gadu-Gadu/src/dialogs.cpp | 8 | ||||
| -rw-r--r-- | protocols/Gadu-Gadu/src/filetransfer.cpp | 167 | ||||
| -rw-r--r-- | protocols/Gadu-Gadu/src/gg.cpp | 31 | ||||
| -rw-r--r-- | protocols/Gadu-Gadu/src/gg.h | 5 | ||||
| -rw-r--r-- | protocols/Gadu-Gadu/src/gg_proto.cpp | 146 | ||||
| -rw-r--r-- | protocols/Gadu-Gadu/src/gg_proto.h | 36 | ||||
| -rw-r--r-- | protocols/Gadu-Gadu/src/groupchat.cpp | 38 | ||||
| -rw-r--r-- | protocols/Gadu-Gadu/src/image.cpp | 75 | ||||
| -rw-r--r-- | protocols/Gadu-Gadu/src/import.cpp | 36 | ||||
| -rw-r--r-- | protocols/Gadu-Gadu/src/keepalive.cpp | 14 | ||||
| -rw-r--r-- | protocols/Gadu-Gadu/src/oauth.cpp | 20 | ||||
| -rw-r--r-- | protocols/Gadu-Gadu/src/ownerinfo.cpp | 25 | ||||
| -rw-r--r-- | protocols/Gadu-Gadu/src/services.cpp | 38 | ||||
| -rw-r--r-- | protocols/Gadu-Gadu/src/sessions.cpp | 12 | ||||
| -rw-r--r-- | protocols/Gadu-Gadu/src/userutils.cpp | 8 | 
17 files changed, 615 insertions, 399 deletions
diff --git a/protocols/Gadu-Gadu/src/avatar.cpp b/protocols/Gadu-Gadu/src/avatar.cpp index 46b41361c3..92bb9f141a 100644 --- a/protocols/Gadu-Gadu/src/avatar.cpp +++ b/protocols/Gadu-Gadu/src/avatar.cpp @@ -52,14 +52,14 @@ void GGPROTO::getAvatarFilename(HANDLE hContact, TCHAR *pszDest, int cbLen)  	if (hContact != NULL) {
  		DBVARIANT dbv;
  		if (!db_get_s(hContact, m_szModuleName, GG_KEY_AVATARHASH, &dbv, DBVT_ASCIIZ)) {
 -            TCHAR* avatarHashT = mir_a2t(dbv.pszVal);
 +			TCHAR* avatarHashT = mir_a2t(dbv.pszVal);
  			mir_sntprintf(pszDest + tPathLen, cbLen - tPathLen, _T("\\%s.%s"), avatarHashT, avatartype);
 -            mir_free(avatarHashT);
 +			mir_free(avatarHashT);
  			DBFreeVariant(&dbv);
  		}
  	} else {
 -        mir_sntprintf(pszDest + tPathLen, cbLen - tPathLen, _T("\\%s avatar.%s"), m_tszUserName, avatartype);
 -    }
 +		mir_sntprintf(pszDest + tPathLen, cbLen - tPathLen, _T("\\%s avatar.%s"), m_tszUserName, avatartype);
 +	}
  }
  void GGPROTO::getAvatarFileInfo(uin_t uin, char **avatarurl, int *type)
 @@ -122,10 +122,10 @@ void GGPROTO::getAvatarFileInfo(uin_t uin, char **avatarurl, int *type)  			mir_free(tag);
  			mir_free(xmlAction);
  		}
 -		else netlog("gg_getavatarfileinfo(): Invalid response code from HTTP request");
 +		else netlog("getAvatarFileInfo(): Invalid response code from HTTP request");
  		CallService(MS_NETLIB_FREEHTTPREQUESTSTRUCT, 0, (LPARAM)resp);
  	}
 -	else netlog("gg_getavatarfileinfo(): No response from HTTP request");
 +	else netlog("getAvatarFileInfo(): No response from HTTP request");
  }
  char *gg_avatarhash(char *param)
 @@ -152,13 +152,16 @@ typedef struct  void GGPROTO::getAvatar(HANDLE hContact, char *szAvatarURL)
  {
 +#ifdef DEBUGMODE
 +	netlog("getAvatar(): start");
 +#endif
  	if (pth_avatar.dwThreadId) {
  		GGGETAVATARDATA *data = (GGGETAVATARDATA*)mir_alloc(sizeof(GGGETAVATARDATA));
  		data->hContact = hContact;
  		data->AvatarURL = mir_strdup(szAvatarURL);
 -		EnterCriticalSection(&avatar_mutex);
 +		gg_EnterCriticalSection(&avatar_mutex, "getAvatar", 1, "avatar_mutex", 1);
  		list_add(&avatar_transfers, data, 0);
 -		LeaveCriticalSection(&avatar_mutex);
 +		gg_LeaveCriticalSection(&avatar_mutex, "getAvatar", 1, 1, "avatar_mutex", 1);
  	}
  }
 @@ -170,14 +173,18 @@ typedef struct  void GGPROTO::requestAvatar(HANDLE hContact, int iWaitFor)
  {
 +#ifdef DEBUGMODE
 +	netlog("requestAvatar(): start");
 +#endif
 +
  	if (db_get_b(NULL, m_szModuleName, GG_KEY_ENABLEAVATARS, GG_KEYDEF_ENABLEAVATARS)
  		&& pth_avatar.dwThreadId) {
  		GGREQUESTAVATARDATA *data = (GGREQUESTAVATARDATA*)mir_alloc(sizeof(GGREQUESTAVATARDATA));
  		data->hContact = hContact;
  		data->iWaitFor = iWaitFor;
 -		EnterCriticalSection(&avatar_mutex);
 +		gg_EnterCriticalSection(&avatar_mutex, "requestAvatar", 2, "avatar_mutex", 1);
  		list_add(&avatar_requests, data, 0);
 -		LeaveCriticalSection(&avatar_mutex);
 +		gg_LeaveCriticalSection(&avatar_mutex, "requestAvatar", 2, 1, "avatar_mutex", 1);
  	}
  }
 @@ -185,10 +192,10 @@ void __cdecl GGPROTO::avatarrequestthread(void*)  {
  	list_t l;
 -	netlog("gg_avatarrequestthread(): Avatar Request Thread Starting");
 +	netlog("avatarrequestthread() started. Avatar Request Thread Starting");
  	while (pth_avatar.dwThreadId)
  	{
 -		EnterCriticalSection(&avatar_mutex);
 +		gg_EnterCriticalSection(&avatar_mutex, "avatarrequestthread", 3, "avatar_mutex", 1);
  		if (avatar_requests) {
  			GGREQUESTAVATARDATA *data = (GGREQUESTAVATARDATA *)avatar_requests->data;
  			char *AvatarURL;
 @@ -197,7 +204,7 @@ void __cdecl GGPROTO::avatarrequestthread(void*)  			list_remove(&avatar_requests, data, 0);
  			mir_free(data);
 -			LeaveCriticalSection(&avatar_mutex);
 +			gg_LeaveCriticalSection(&avatar_mutex, "avatarrequestthread", 3, 1, "avatar_mutex", 1);
  			getAvatarFileInfo( db_get_dw(hContact, m_szModuleName, GG_KEY_UIN, 0), &AvatarURL, &AvatarType);
  			if (AvatarURL != NULL && strlen(AvatarURL) > 0)
 @@ -215,10 +222,11 @@ void __cdecl GGPROTO::avatarrequestthread(void*)  					ProtoBroadcastAck(m_szModuleName, hContact, ACKTYPE_AVATAR, ACKRESULT_SUCCESS, (HANDLE)&pai, 0);
  			}
  			else ProtoBroadcastAck(m_szModuleName, hContact, ACKTYPE_AVATAR, ACKRESULT_STATUS, 0, 0);
 +		} else {
 +			gg_LeaveCriticalSection(&avatar_mutex, "avatarrequestthread", 3, 2, "avatar_mutex", 1);
  		}
 -		else LeaveCriticalSection(&avatar_mutex);
 -		EnterCriticalSection(&avatar_mutex);
 +		gg_EnterCriticalSection(&avatar_mutex, "avatarrequestthread", 4, "avatar_mutex", 1);
  		if (avatar_transfers) {
  			GGGETAVATARDATA *data = (GGGETAVATARDATA *)avatar_transfers->data;
  			NETLIBHTTPREQUEST req = {0};
 @@ -247,10 +255,10 @@ void __cdecl GGPROTO::avatarrequestthread(void*)  						result = 1;
  					}
  				}
 -				else netlog("gg_avatarrequestthread(): Invalid response code from HTTP request");
 +				else netlog("avatarrequestthread(): Invalid response code from HTTP request");
  				CallService(MS_NETLIB_FREEHTTPREQUESTSTRUCT, 0, (LPARAM)resp);
  			}
 -			else netlog("gg_avatarrequestthread(): No response from HTTP request");
 +			else netlog("avatarrequestthread(): No response from HTTP request");
  			ProtoBroadcastAck(m_szModuleName, pai.hContact, ACKTYPE_AVATAR,
  				result ? ACKRESULT_SUCCESS : ACKRESULT_FAILED, (HANDLE)&pai, 0);
 @@ -262,8 +270,8 @@ void __cdecl GGPROTO::avatarrequestthread(void*)  			mir_free(data->AvatarURL);
  			mir_free(data);
  		}
 -		LeaveCriticalSection(&avatar_mutex);
 -		SleepEx(100, FALSE);
 +		gg_LeaveCriticalSection(&avatar_mutex, "avatarrequestthread", 4, 1, "avatar_mutex", 1);
 +		gg_sleep(100, FALSE, "avatarrequestthread", 101, 1);
  	}
  	for (l = avatar_requests; l; l = l->next) {
 @@ -277,7 +285,7 @@ void __cdecl GGPROTO::avatarrequestthread(void*)  	}
  	list_destroy(avatar_requests, 0);
  	list_destroy(avatar_transfers, 0);
 -	netlog("gg_avatarrequestthread(): Avatar Request Thread Ending");
 +	netlog("avatarrequestthread(): end. Avatar Request Thread Ending");
  }
  void GGPROTO::initavatarrequestthread()
 @@ -287,6 +295,9 @@ void GGPROTO::initavatarrequestthread()  	GetExitCodeThread(pth_avatar.hThread, &exitCode);
  	if (exitCode != STILL_ACTIVE) {
  		avatar_requests = avatar_transfers = NULL;
 +#ifdef DEBUGMODE
 +		netlog("initavatarrequestthread(): forkthreadex 1 GGPROTO::avatarrequestthread");
 +#endif
  		pth_avatar.hThread = forkthreadex(&GGPROTO::avatarrequestthread, NULL, &pth_avatar.dwThreadId);
  	}
  }
 @@ -295,9 +306,12 @@ void GGPROTO::uninitavatarrequestthread()  {
  	pth_avatar.dwThreadId = 0;
  #ifdef DEBUGMODE
 -	netlog("gg_uninitavatarrequestthread(): Waiting until Avatar Request Thread finished, if needed.");
 +	netlog("initavatarrequestthread() Waiting pth_avatar thread. Waiting until Avatar Request Thread finished, if needed.");
  #endif
  	threadwait(&pth_avatar);
 +#ifdef DEBUGMODE
 +	netlog("initavatarrequestthread() Waiting pth_avatar thread - OK");
 +#endif
  }
  void __cdecl GGPROTO::getuseravatarthread(void*)
 @@ -305,6 +319,8 @@ void __cdecl GGPROTO::getuseravatarthread(void*)  	char *AvatarURL;
  	int AvatarType;
 +	netlog("getuseravatarthread() started");
 +
  	getAvatarFileInfo( db_get_dw(NULL, m_szModuleName, GG_KEY_UIN, 0), &AvatarURL, &AvatarType);
  	if (AvatarURL != NULL && strlen(AvatarURL) > 0)
  		db_set_s(NULL, m_szModuleName, GG_KEY_AVATARURL, AvatarURL);
 @@ -317,13 +333,20 @@ void __cdecl GGPROTO::getuseravatarthread(void*)  	PROTO_AVATAR_INFORMATIONT pai = {0};
  	pai.cbSize = sizeof(pai);
  	getavatarinfo((WPARAM)GAIF_FORCE, (LPARAM)&pai);
 +#ifdef DEBUGMODE
 +	netlog("getuseravatarthread(): end");
 +#endif
  }
  void GGPROTO::getUserAvatar()
  {
  	if (db_get_b(NULL, m_szModuleName, GG_KEY_ENABLEAVATARS, GG_KEYDEF_ENABLEAVATARS)
 -		&& db_get_dw(NULL, m_szModuleName, GG_KEY_UIN, 0))
 +		&& db_get_dw(NULL, m_szModuleName, GG_KEY_UIN, 0)){
 +#ifdef DEBUGMODE
 +		netlog("getUserAvatar(): forkthread 2 GGPROTO::getuseravatarthread");
 +#endif
  		forkthread(&GGPROTO::getuseravatarthread, NULL);
 +	}
  }
  void __cdecl GGPROTO::setavatarthread(void *param)
 @@ -336,14 +359,17 @@ void __cdecl GGPROTO::setavatarthread(void *param)  	char szUrl[128], uin[32], *authHeader, *data, *avatardata, content[256], image_ext[4], image_type[11];
  	int file_fd, avatardatalen, datalen, contentlen, contentendlen, res = 0, repeat = 0;
 -	netlog("gg_setavatar(): Trying to set user avatar using %s...", szFilename);
 +	netlog("setavatarthread(): started. Trying to set user avatar using %s...", szFilename);
  	UIN2ID( db_get_dw(NULL, m_szModuleName, GG_KEY_UIN, 0), uin);
  	file_fd = _topen(szFilename, _O_RDONLY | _O_BINARY, _S_IREAD);
  	if (file_fd == -1) {
 -		netlog("gg_setavatar(): Failed to open avatar file (%s).", strerror(errno));
 +		netlog("setavatarthread(): Failed to open avatar file (%s).", strerror(errno));
  		mir_free(szFilename);
  		getUserAvatar();
 +#ifdef DEBUGMODE
 +		netlog("setavatarthread(): end. err1");
 +#endif
  		return;
  	}
  	avatardatalen = _filelength(file_fd);
 @@ -403,16 +429,16 @@ void __cdecl GGPROTO::setavatarthread(void *param)  	if (resp) {
  		if (resp->resultCode == 200 && resp->dataLength > 0 && resp->pData) {
  #ifdef DEBUGMODE
 -			netlog("%s", resp->pData);
 +			netlog("setavatarthread(): 1 resp.data= %s", resp->pData);
  #endif
  			res = 1;
  		}
 -		else netlog("gg_setavatar(): Invalid response code from HTTP request");
 +		else netlog("setavatarthread() Invalid response code from HTTP request");
  		if (resp->resultCode == 403 || resp->resultCode == 401)
  			repeat = 1;
  		CallService(MS_NETLIB_FREEHTTPREQUESTSTRUCT, 0, (LPARAM)resp);
  	}
 -	else netlog("gg_setavatar(): No response from HTTP request");
 +	else netlog("setavatarthread(): No response from HTTP request");
  	if (repeat) { // Access Token expired - we need to obtain new
  		mir_free(authHeader);
 @@ -433,14 +459,14 @@ void __cdecl GGPROTO::setavatarthread(void *param)  		if (resp) {
  			if (resp->resultCode == 200 && resp->dataLength > 0 && resp->pData) {
  #ifdef DEBUGMODE
 -				netlog("%s", resp->pData);
 +				netlog("setavatarthread(): 2 resp.data= %s", resp->pData);
  #endif
  				res = 1;
  			}
 -			else netlog("gg_setavatar(): Invalid response code from HTTP request");
 +			else netlog("setavatarthread(): Invalid response code from HTTP request");
  			CallService(MS_NETLIB_FREEHTTPREQUESTSTRUCT, 0, (LPARAM)resp);
  		}
 -		else netlog("gg_setavatar(): No response from HTTP request");
 +		else netlog("setavatarthread(): No response from HTTP request");
  	}
  	mir_free(authHeader);
 @@ -448,15 +474,21 @@ void __cdecl GGPROTO::setavatarthread(void *param)  	mir_free(data);
  	if (res)
 -		netlog("gg_setavatar(): User avatar set successfully.");
 +		netlog("setavatarthread(): User avatar set successfully.");
  	else
 -		netlog("gg_setavatar(): Failed to set user avatar.");
 +		netlog("setavatarthread(): Failed to set user avatar.");
  	mir_free(szFilename);
  	getUserAvatar();
 +#ifdef DEBUGMODE
 +	netlog("setavatarthread(): end.");
 +#endif
  }
  void GGPROTO::setAvatar(const TCHAR *szFilename)
  {
 +#ifdef DEBUGMODE
 +		netlog("setAvatar(): forkthread 3 GGPROTO::setavatarthread");
 +#endif
  	forkthread(&GGPROTO::setavatarthread, mir_tstrdup(szFilename));
  }
 diff --git a/protocols/Gadu-Gadu/src/core.cpp b/protocols/Gadu-Gadu/src/core.cpp index 02a12bbf9f..f790be87d3 100644 --- a/protocols/Gadu-Gadu/src/core.cpp +++ b/protocols/Gadu-Gadu/src/core.cpp @@ -39,8 +39,15 @@ uint32_t swap32(uint32_t x)  int GGPROTO::isonline()
  {
 -	mir_cslock lck(sess_mutex);
 -	return (sess != NULL);
 +
 +	int isonline;
 +
 +	gg_EnterCriticalSection(&sess_mutex, "isonline", 76, "sess_mutex", 1);
 +	isonline = (sess != NULL);
 +	gg_LeaveCriticalSection(&sess_mutex, "isonline", 76, 1, "sess_mutex", 1);
 +
 +	return isonline;
 +
  }
  ////////////////////////////////////////////////////////////
 @@ -59,9 +66,9 @@ void GGPROTO::disconnect()  			DBVARIANT dbv;
  			switch (db_get_w(NULL, m_szModuleName, GG_KEY_LEAVESTATUS, GG_KEYDEF_LEAVESTATUS)) {
  			case ID_STATUS_ONLINE:
 -				EnterCriticalSection(&modemsg_mutex);
 +				gg_EnterCriticalSection(&modemsg_mutex, "disconnect", 6, "modemsg_mutex", 1);
  				szMsg = mir_strdup(modemsg.online);
 -				LeaveCriticalSection(&modemsg_mutex);
 +				gg_LeaveCriticalSection(&modemsg_mutex, "disconnect", 6, 1, "modemsg_mutex", 1);
  				if (!szMsg && !db_get_s(NULL, "SRAway", gg_status2db(ID_STATUS_ONLINE, "Default"), &dbv, DBVT_ASCIIZ)) {
  					if (dbv.pszVal && *(dbv.pszVal))
  						szMsg = mir_strdup(dbv.pszVal);
 @@ -69,9 +76,9 @@ void GGPROTO::disconnect()  				}
  				break;
  			case ID_STATUS_AWAY:
 -				EnterCriticalSection(&modemsg_mutex);
 +				gg_EnterCriticalSection(&modemsg_mutex, "disconnect", 7, "modemsg_mutex", 1);
  				szMsg = mir_strdup(modemsg.away);
 -				LeaveCriticalSection(&modemsg_mutex);
 +				gg_LeaveCriticalSection(&modemsg_mutex, "disconnect", 7, 1, "modemsg_mutex", 1);
  				if (!szMsg && !db_get_s(NULL, "SRAway", gg_status2db(ID_STATUS_AWAY, "Default"), &dbv, DBVT_ASCIIZ)) {
  					if (dbv.pszVal && *(dbv.pszVal))
  						szMsg = mir_strdup(dbv.pszVal);
 @@ -79,9 +86,9 @@ void GGPROTO::disconnect()  				}
  				break;
  			case ID_STATUS_DND:
 -				EnterCriticalSection(&modemsg_mutex);
 +				gg_EnterCriticalSection(&modemsg_mutex, "disconnect", 8, "modemsg_mutex", 1);
  				szMsg = mir_strdup(modemsg.dnd);
 -				LeaveCriticalSection(&modemsg_mutex);
 +				gg_LeaveCriticalSection(&modemsg_mutex, "disconnect", 8, 1, "modemsg_mutex", 1);
  				if (!szMsg && !db_get_s(NULL, "SRAway", gg_status2db(ID_STATUS_DND, "Default"), &dbv, DBVT_ASCIIZ)) {
  					if (dbv.pszVal && *(dbv.pszVal))
  						szMsg = mir_strdup(dbv.pszVal);
 @@ -89,9 +96,9 @@ void GGPROTO::disconnect()  				}
  				break;
  			case ID_STATUS_FREECHAT:
 -				EnterCriticalSection(&modemsg_mutex);
 +				gg_EnterCriticalSection(&modemsg_mutex, "disconnect", 9, "modemsg_mutex", 1);
  				szMsg = mir_strdup(modemsg.freechat);
 -				LeaveCriticalSection(&modemsg_mutex);
 +				gg_LeaveCriticalSection(&modemsg_mutex, "disconnect", 9, 1, "modemsg_mutex", 1);
  				if (!szMsg && !db_get_s(NULL, "SRAway", gg_status2db(ID_STATUS_FREECHAT, "Default"), &dbv, DBVT_ASCIIZ)) {
  					if (dbv.pszVal && *(dbv.pszVal))
  						szMsg = mir_strdup(dbv.pszVal);
 @@ -99,9 +106,9 @@ void GGPROTO::disconnect()  				}
  				break;
  			case ID_STATUS_INVISIBLE:
 -				EnterCriticalSection(&modemsg_mutex);
 +				gg_EnterCriticalSection(&modemsg_mutex, "disconnect", 10, "modemsg_mutex", 1);
  				szMsg = mir_strdup(modemsg.invisible);
 -				LeaveCriticalSection(&modemsg_mutex);
 +				gg_LeaveCriticalSection(&modemsg_mutex, "disconnect", 10, 1, "modemsg_mutex", 1);
  				if (!szMsg && !db_get_s(NULL, "SRAway", gg_status2db(ID_STATUS_INVISIBLE, "Default"), &dbv, DBVT_ASCIIZ)) {
  					if (dbv.pszVal && *(dbv.pszVal))
  						szMsg = mir_strdup(dbv.pszVal);
 @@ -110,13 +117,13 @@ void GGPROTO::disconnect()  				break;
  			default:
  				// Set last status
 -				EnterCriticalSection(&modemsg_mutex);
 +				gg_EnterCriticalSection(&modemsg_mutex, "disconnect", 11, "modemsg_mutex", 1);
  				szMsg = mir_strdup(getstatusmsg(m_iStatus));
 -				LeaveCriticalSection(&modemsg_mutex);
 +				gg_LeaveCriticalSection(&modemsg_mutex, "disconnect", 11, 1, "modemsg_mutex", 1);
  			}
  		}
 -		EnterCriticalSection(&sess_mutex);
 +		gg_EnterCriticalSection(&sess_mutex, "disconnect", 12, "sess_mutex", 1);
  		// Check if it has message
  		if (szMsg)
  		{
 @@ -130,7 +137,7 @@ void GGPROTO::disconnect()  			// Send logoff immediately
  			gg_logoff(sess);
  		}
 -		LeaveCriticalSection(&sess_mutex);
 +		gg_LeaveCriticalSection(&sess_mutex, "disconnect", 12, 1, "sess_mutex", 1);
  	}
  	// Else cancel connection attempt
  	else if (sock)
 @@ -246,7 +253,7 @@ void __cdecl GGPROTO::mainthread(void *)  	time_t timeDeviation = db_get_w(NULL, m_szModuleName, GG_KEY_TIMEDEVIATION, GG_KEYDEF_TIMEDEVIATION);
  	int gg_failno = 0;
 -	netlog("gg_mainthread(%x): Server Thread Starting", this);
 +	netlog("mainthread(): started. (%x) Server Thread Starting", this);
  #ifdef DEBUGMODE
  	gg_debug_level = GG_DEBUG_NET | GG_DEBUG_TRAFFIC | GG_DEBUG_FUNCTION | GG_DEBUG_MISC;
  #else
 @@ -279,7 +286,7 @@ void __cdecl GGPROTO::mainthread(void *)  	if (CallService(MS_NETLIB_GETUSERSETTINGS, (WPARAM)netlib, (LPARAM)&nlus))
  	{
  		if (nlus.useProxy)
 -			netlog("gg_mainthread(%x): Using proxy %s:%d.", this, nlus.szProxyServer, nlus.wProxyPort);
 +			netlog("mainthread() (%x): Using proxy %s:%d.", this, nlus.szProxyServer, nlus.wProxyPort);
  		gg_proxy_enabled = nlus.useProxy;
  		gg_proxy_host = nlus.szProxyServer;
  		gg_proxy_port = nlus.wProxyPort;
 @@ -293,7 +300,7 @@ void __cdecl GGPROTO::mainthread(void *)  	}
  	else
  	{
 -		netlog("gg_mainthread(%x): Failed loading proxy settings.", this);
 +		netlog("mainthread() (%x): Failed loading proxy settings.", this);
  		gg_proxy_enabled = 0;
  	}
 @@ -316,23 +323,29 @@ void __cdecl GGPROTO::mainthread(void *)  	}
  	else
  	{
 -		netlog("gg_mainthread(%x): No password specified. Exiting.", this);
 +		netlog("mainthread() (%x): No password specified. Exiting.", this);
  		broadcastnewstatus(ID_STATUS_OFFLINE);
 +#ifdef DEBUGMODE
 +		netlog("mainthread(): end. err1");
 +#endif
  		return;
  	}
  	// Readup number
  	if (!(p.uin = db_get_dw(NULL, m_szModuleName, GG_KEY_UIN, 0)))
  	{
 -		netlog("gg_mainthread(%x): No Gadu-Gadu number specified. Exiting.", this);
 +		netlog("mainthread() (%x): No Gadu-Gadu number specified. Exiting.", this);
  		broadcastnewstatus(ID_STATUS_OFFLINE);
  		mir_free(p.password);
 +#ifdef DEBUGMODE
 +		netlog("mainthread(): end. err2");
 +#endif
  		return;
  	}
  	// Readup SSL/TLS setting
  	if (p.tls = db_get_b(NULL, m_szModuleName, GG_KEY_SSLCONN, GG_KEYDEF_SSLCONN))
 -		netlog("gg_mainthread(%x): Using TLS/SSL for connections.", this);
 +		netlog("mainthread() (%x): Using TLS/SSL for connections.", this);
  	// Gadu-Gadu accepts image sizes upto 255
  	p.image_size = 255;
 @@ -346,7 +359,7 @@ void __cdecl GGPROTO::mainthread(void *)  		// Wait for DCC
  #ifdef DEBUGMODE
 -		netlog("gg_mainthread(%x): Waiting DCC service to start...", this);
 +		netlog("mainthread() (%x): Waiting DCC service to start...", this);
  #endif
  		while (WaitForSingleObjectEx(hEvent, INFINITE, TRUE) != WAIT_OBJECT_0);
  		CloseHandle(hEvent); hEvent = NULL;
 @@ -365,7 +378,7 @@ void __cdecl GGPROTO::mainthread(void *)  				showpopup(m_tszUserName, error, GG_POPUP_WARNING | GG_POPUP_ALLOW_MSGBOX);
  			}
  			else
 -				netlog("gg_mainthread(%x): Loading forwarding host %s and port %d.", dbv.pszVal, p.external_port, this);
 +				netlog("mainthread() (%x): Loading forwarding host %s and port %d.", dbv.pszVal, p.external_port, this);
  			if (p.external_addr)	p.external_port = db_get_w(NULL, m_szModuleName, GG_KEY_FORWARDPORT, GG_KEYDEF_FORWARDPORT);
  			DBFreeVariant(&dbv);
  		}
 @@ -375,13 +388,13 @@ void __cdecl GGPROTO::mainthread(void *)  retry:
  	// Loadup startup status & description
 -	EnterCriticalSection(&modemsg_mutex);
 +	gg_EnterCriticalSection(&modemsg_mutex, "mainthread", 13, "modemsg_mutex", 1);
  	p.status_descr = mir_strdup(getstatusmsg(m_iDesiredStatus));
  	p.status = status_m2gg(m_iDesiredStatus, p.status_descr != NULL);
 -	netlog("gg_mainthread(%x): Connecting with number %d, status %d and description \"%s\".", this, p.uin, m_iDesiredStatus,
 +	netlog("mainthread() (%x): Connecting with number %d, status %d and description \"%s\".", this, p.uin, m_iDesiredStatus,
  				p.status_descr ? p.status_descr : "<none>");
 -	LeaveCriticalSection(&modemsg_mutex);
 +	gg_LeaveCriticalSection(&modemsg_mutex, "mainthread", 13, 1, "modemsg_mutex", 1);
  	// Check manual hosts
  	if (hostnum < hostcount)
 @@ -397,7 +410,7 @@ retry:  		else
  		{
  			p.server_port = hosts[hostnum].port;
 -			netlog("gg_mainthread(%x): Connecting to manually specified host %s (%d.%d.%d.%d) and port %d.", this,
 +			netlog("mainthread() (%x): Connecting to manually specified host %s (%d.%d.%d.%d) and port %d.", this,
  				hosts[hostnum].hostname, LOBYTE(LOWORD(p.server_addr)), HIBYTE(LOWORD(p.server_addr)),
  				LOBYTE(HIWORD(p.server_addr)), HIBYTE(HIWORD(p.server_addr)), p.server_port);
  		}
 @@ -424,7 +437,7 @@ retry:  				mir_sntprintf(error, SIZEOF(error), TranslateT("Connection cannot be established because of error:\n\t%s"), _tcserror(errno));
  				perror = error;
  			}
 -			netlog("gg_mainthread(%x): %s", this, perror);
 +			netlog("mainthread() (%x): %s", this, perror);
  			if (db_get_b(NULL, m_szModuleName, GG_KEY_SHOWCERRORS, GG_KEYDEF_SHOWCERRORS))
  				showpopup(m_tszUserName, perror, GG_POPUP_ERROR | GG_POPUP_ALLOW_MSGBOX | GG_POPUP_ONCE);
 @@ -454,21 +467,21 @@ retry:  				}
  			}
  			// We cannot do more about this
 -			EnterCriticalSection(&modemsg_mutex);
 +			gg_EnterCriticalSection(&modemsg_mutex, "mainthread", 14, "modemsg_mutex", 1);
  			m_iDesiredStatus = ID_STATUS_OFFLINE;
 -			LeaveCriticalSection(&modemsg_mutex);
 +			gg_LeaveCriticalSection(&modemsg_mutex, "mainthread", 14, 1, "modemsg_mutex", 1);
  		}
  		else
 -			netlog("gg_mainthread(%x)): Connection attempt cancelled by the user.", this);
 +			netlog("mainthread() (%x)): Connection attempt cancelled by the user.", this);
  	}
  	else
  	{
  		// Successfully connected
  		logonTime = time(NULL);
  		db_set_dw(NULL, m_szModuleName, GG_KEY_LOGONTIME, logonTime);
 -		EnterCriticalSection(&sess_mutex);
 +		gg_EnterCriticalSection(&sess_mutex, "mainthread", 15, "sess_mutex", 1);
  		sess = sess;
 -		LeaveCriticalSection(&sess_mutex);
 +		gg_LeaveCriticalSection(&sess_mutex, "mainthread", 15, 1, "sess_mutex", 1);
  		// Subscribe users status notifications
  		notifyall();
  		// Set startup status
 @@ -495,17 +508,27 @@ retry:  	while(isonline())
  	{
  		// Connection broken/closed
 +#ifdef DEBUGMODE
 +		netlog("mainthread(): waiting for gg_watch_fd");
 +#endif
  		if (!(e = gg_watch_fd(sess)))
  		{
 -			netlog("gg_mainthread(%x): Connection closed.", this);
 -			EnterCriticalSection(&sess_mutex);
 +#ifdef DEBUGMODE
 +			netlog("mainthread(): waiting for gg_watch_fd - DONE error");
 +#endif
 +			netlog("mainthread() (%x): Connection closed.", this);
 +			gg_EnterCriticalSection(&sess_mutex, "mainthread", 16, "sess_mutex", 1);
  			gg_free_session(sess);
  			sess = NULL;
 -			LeaveCriticalSection(&sess_mutex);
 +			gg_LeaveCriticalSection(&sess_mutex, "mainthread", 16, 1, "sess_mutex", 1);
  			break;
  		}
 -		else
 -			netlog("gg_mainthread(%x): Event: %s", this, ggdebug_eventtype(e));
 +		else {
 +#ifdef DEBUGMODE
 +			netlog("mainthread(): waiting for gg_watch_fd - DONE");
 +#endif
 +			netlog("mainthread() (%x): Event: %s", this, ggdebug_eventtype(e));
 +		}
  		switch(e->type)
  		{
 @@ -517,10 +540,10 @@ retry:  			// Client disconnected or connection failure
  			case GG_EVENT_CONN_FAILED:
  			case GG_EVENT_DISCONNECT:
 -				EnterCriticalSection(&sess_mutex);
 +				gg_EnterCriticalSection(&sess_mutex, "mainthread", 17, "sess_mutex", 1);
  				gg_free_session(sess);
  				sess = NULL;
 -				LeaveCriticalSection(&sess_mutex);
 +				gg_LeaveCriticalSection(&sess_mutex, "mainthread", 17, 1, "sess_mutex", 1);
  				break;
  			// Client allowed to disconnect
 @@ -578,18 +601,18 @@ retry:  				if (e->type == GG_EVENT_PUBDIR50_SEARCH_REPLY)
  				{
 -					netlog("gg_mainthread(%x): Got user info.", this);
 +					netlog("mainthread() (%x): Got user info.", this);
  					// Store next search UIN
  					if (res->seq == GG_SEQ_SEARCH)
  						next_uin = gg_pubdir50_next(res);
  				}
  				else if (e->type == GG_EVENT_PUBDIR50_READ)
  				{
 -					netlog("gg_mainthread(%x): Got owner info.", this);
 +					netlog("mainthread() (%x): Got owner info.", this);
  				}
  				else if (e->type == GG_EVENT_PUBDIR50_WRITE)
  				{
 -					netlog("gg_mainthread(%x): Public directory save succesful.", this);
 +					netlog("mainthread() (%x): Public directory save succesful.", this);
  					// Update user details
  					GetInfo(NULL, 0);
  				}
 @@ -612,7 +635,7 @@ retry:  						uin_t uin = __fmnumber ? atoi(__fmnumber) : 0;
  						HANDLE hContact = (res->seq == GG_SEQ_CHINFO) ? NULL : getcontact(uin, 0, 0, NULL);
 -						netlog("gg_mainthread(%x): Search result for uin %d, seq %d.", this, uin, res->seq);
 +						netlog("mainthread() (%x): Search result for uin %d, seq %d.", this, uin, res->seq);
  						if (res->seq == GG_SEQ_SEARCH)
  						{
  							char strFmt1[64];
 @@ -727,7 +750,7 @@ retry:  								db_unset(NULL, m_szModuleName, "Gender");
  							}
 -							netlog("gg_mainthread(%x): Setting user info for uin %d.", this, uin);
 +							netlog("mainthread() (%x): Setting user info for uin %d.", this, uin);
  							ProtoBroadcastAck(m_szModuleName, hContact, ACKTYPE_GETINFO, ACKRESULT_SUCCESS, (HANDLE) 1, 0);
  						}
  					}
 @@ -813,7 +836,7 @@ retry:  							gcevent.ptszNick = (TCHAR*) CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM) getcontact(e->event.msg.sender, 1, 0, NULL), GCDNF_TCHAR);
  							gcevent.time = (!(e->event.msg.msgclass & GG_CLASS_OFFLINE) || e->event.msg.time > (t - timeDeviation)) ? t : e->event.msg.time;
  							gcevent.dwFlags = GC_TCHAR | GCEF_ADDTOLOG;
 -							netlog("gg_mainthread(%x): Conference message to room %s & id %s.", this, chat, id);
 +							netlog("mainthread() (%x): Conference message to room %s & id %s.", this, chat, id);
  							CallServiceSync(MS_GC_EVENT, 0, (LPARAM)&gcevent);
  							mir_free(messageT);
  						}
 @@ -846,11 +869,11 @@ retry:  							if (((struct gg_msg_richtext_format*)formats)->font & GG_FONT_IMAGE)
  							{
  								struct gg_msg_richtext_image *image = (struct gg_msg_richtext_image *)(formats + add_ptr);
 -								EnterCriticalSection(&sess_mutex);
 +								gg_EnterCriticalSection(&sess_mutex, "mainthread", 18, "sess_mutex", 1);
  								gg_image_request(sess, e->event.msg.sender, image->size, image->crc32);
 -								LeaveCriticalSection(&sess_mutex);
 +								gg_LeaveCriticalSection(&sess_mutex, "mainthread", 18, 1, "sess_mutex", 1);
 -								netlog("gg_mainthread: image request sent!");
 +								netlog("mainthread(): image request sent!");
  								add_ptr += sizeof(struct gg_msg_richtext_image);
  							}
  							if (((struct gg_msg_richtext_format*)formats)->font & GG_FONT_COLOR)
 @@ -890,7 +913,7 @@ retry:  						gcevent.time = e->event.multilogon_msg.time;
  						gcevent.bIsMe = 1;
  						gcevent.dwFlags = GCEF_ADDTOLOG;
 -						netlog("gg_mainthread(%x): Sent conference message to room %s.", this, chat);
 +						netlog("mainthread() (%x): Sent conference message to room %s.", this, chat);
  						CallServiceSync(MS_GC_EVENT, 0, (LPARAM)&gcevent);
  						mir_free(messageT);
  						if (pszValT != NULL) mir_free(pszValT);;
 @@ -916,10 +939,10 @@ retry:  				{
  					list_t l;
  					int* iIndexes = NULL, i;
 -					netlog("gg_mainthread(): Concurrent sessions count: %d.", e->event.multilogon_info.count);
 +					netlog("mainthread(): Concurrent sessions count: %d.", e->event.multilogon_info.count);
  					if (e->event.multilogon_info.count > 0)
  						iIndexes = (int*)mir_calloc(e->event.multilogon_info.count * sizeof(int));
 -					EnterCriticalSection(&sessions_mutex);
 +					gg_EnterCriticalSection(&sessions_mutex, "mainthread", 19, "sess_mutex", 1);
  					for (l = sessions; l; l = l->next)
  					{
  						struct gg_multilogon_session* sess = (struct gg_multilogon_session*)l->data;
 @@ -945,7 +968,7 @@ retry:  												: Translate("Unknown client"));
  						list_add(&sessions, sess, 0);
  					}
 -					LeaveCriticalSection(&sessions_mutex);
 +					gg_LeaveCriticalSection(&sessions_mutex, "mainthread", 19, 1, "sessions_mutex", 1);
  					sessions_updatedlg();
  					if (ServiceExists(MS_POPUP_ADDPOPUPCLASS))
  					{
 @@ -1016,7 +1039,7 @@ retry:  			case GG_EVENT_DCC7_NEW:
  				{
  					struct gg_dcc7 *dcc7 = e->event.dcc7_new;
 -					netlog("gg_mainthread(%x): Incoming direct connection.", this);
 +					netlog("mainthread() (%x): Incoming direct connection.", this);
  					dcc7->contact = getcontact(dcc7->peer_uin, 0, 0, NULL);
  					// Check if user is on the list and if it is my uin
 @@ -1027,14 +1050,14 @@ retry:  					}
  					// Add to waiting transfers
 -					EnterCriticalSection(&ft_mutex);
 +					gg_EnterCriticalSection(&ft_mutex, "mainthread", 20, "ft_mutex", 1);
  					list_add(&transfers, dcc7, 0);
 -					LeaveCriticalSection(&ft_mutex);
 +					gg_LeaveCriticalSection(&ft_mutex, "mainthread", 20, 1, "ft_mutex", 1);
  					//////////////////////////////////////////////////
  					// Add file recv request
 -					netlog("gg_mainthread(%x): Client: %d, File ack filename \"%s\" size %d.", this, dcc7->peer_uin,
 +					netlog("mainthread() (%x): Client: %d, File ack filename \"%s\" size %d.", this, dcc7->peer_uin,
  						dcc7->filename, dcc7->size);
  					TCHAR* filenameT = mir_utf8decodeT((char*)dcc7->filename);
 @@ -1061,23 +1084,24 @@ retry:  					struct gg_dcc7 *dcc7 = e->event.dcc7_reject.dcc7;
  					if (dcc7->type == GG_SESSION_DCC7_SEND)
  					{
 -						netlog("gg_mainthread(%x): File transfer denied by client %d (reason = %d).", this, dcc7->peer_uin, e->event.dcc7_reject.reason);
 +						netlog("mainthread() (%x): File transfer denied by client %d (reason = %d).", this, dcc7->peer_uin, e->event.dcc7_reject.reason);
  						ProtoBroadcastAck(m_szModuleName, dcc7->contact, ACKTYPE_FILE, ACKRESULT_DENIED, dcc7, 0);
  						// Remove from watches and free
 -						EnterCriticalSection(&ft_mutex);
 +						gg_EnterCriticalSection(&ft_mutex, "mainthread", 21, "ft_mutex", 1);
  						list_remove(&watches, dcc7, 0);
 -						LeaveCriticalSection(&ft_mutex);
 +						gg_LeaveCriticalSection(&ft_mutex, "mainthread", 21, 1, "ft_mutex", 1);
  						gg_dcc7_free(dcc7);
  					}
  					else
  					{
 -						netlog("gg_mainthread(%x): File transfer aborted by client %d.", this, dcc7->peer_uin);
 +						netlog("mainthread() (%x): File transfer aborted by client %d.", this, dcc7->peer_uin);
  						// Remove transfer from waiting list
 -						EnterCriticalSection(&ft_mutex);
 +						gg_EnterCriticalSection(&ft_mutex, "mainthread", 22, "ft_mutex", 1);
  						list_remove(&transfers, dcc7, 0);
 -						LeaveCriticalSection(&ft_mutex);
 +						gg_LeaveCriticalSection(&ft_mutex, "mainthread", 22, 1, "ft_mutex", 1);
 +
  					}
  				}
  				break;
 @@ -1089,25 +1113,25 @@ retry:  					switch (e->event.dcc7_error)
  					{
  						case GG_ERROR_DCC7_HANDSHAKE:
 -							netlog("gg_mainthread(%x): Client: %d, Handshake error.", this, dcc7 ? dcc7->peer_uin : 0);
 +							netlog("mainthread() (%x): Client: %d, Handshake error.", this, dcc7 ? dcc7->peer_uin : 0);
  							break;
  						case GG_ERROR_DCC7_NET:
 -							netlog("gg_mainthread(%x): Client: %d, Network error.", this, dcc7 ? dcc7->peer_uin : 0);
 +							netlog("mainthread() (%x): Client: %d, Network error.", this, dcc7 ? dcc7->peer_uin : 0);
  							break;
  						case GG_ERROR_DCC7_FILE:
 -							netlog("gg_mainthread(%x): Client: %d, File read/write error.", this, dcc7 ? dcc7->peer_uin : 0);
 +							netlog("mainthread() (%x): Client: %d, File read/write error.", this, dcc7 ? dcc7->peer_uin : 0);
  							break;
  						case GG_ERROR_DCC7_EOF:
 -							netlog("gg_mainthread(%x): Client: %d, End of file/connection error.", this, dcc7 ? dcc7->peer_uin : 0);
 +							netlog("mainthread() (%x): Client: %d, End of file/connection error.", this, dcc7 ? dcc7->peer_uin : 0);
  							break;
  						case GG_ERROR_DCC7_REFUSED:
 -							netlog("gg_mainthread(%x): Client: %d, Connection refused error.", this, dcc7 ? dcc7->peer_uin : 0);
 +							netlog("mainthread() (%x): Client: %d, Connection refused error.", this, dcc7 ? dcc7->peer_uin : 0);
  							break;
  						case GG_ERROR_DCC7_RELAY:
 -							netlog("gg_mainthread(%x): Client: %d, Relay connection error.", this, dcc7 ? dcc7->peer_uin : 0);
 +							netlog("mainthread() (%x): Client: %d, Relay connection error.", this, dcc7 ? dcc7->peer_uin : 0);
  							break;
  						default:
 -							netlog("gg_mainthread(%x): Client: %d, Unknown error.", this, dcc7 ? dcc7->peer_uin : 0);
 +							netlog("mainthread() (%x): Client: %d, Unknown error.", this, dcc7 ? dcc7->peer_uin : 0);
  					}
  					if (!dcc7) break;
 @@ -1152,10 +1176,10 @@ retry:  						tag = mir_a2t("event/sender");
  						node = xi.getChildByPath(hXml, tag, 0);
  						sender = node != NULL ? mir_t2a(xi.getText(node)) : NULL;
 -						netlog("gg_mainthread(%x): XML Action type: %s.", this, type != NULL ? type : "unknown");
 +						netlog("mainthread() (%x): XML Action type: %s.", this, type != NULL ? type : "unknown");
  						// Avatar change notify
  						if (type != NULL && !strcmp(type, "28")) {
 -							netlog("gg_mainthread(%x): Client %s changed his avatar.", this, sender);
 +							netlog("mainthread() (%x): Client %s changed his avatar.", this, sender);
  							requestAvatar(getcontact(atoi(sender), 0, 0, NULL), 0);
  						}
  						mir_free(type);
 @@ -1171,7 +1195,7 @@ retry:  				{
  					HANDLE hContact = getcontact(e->event.typing_notification.uin, 0, 0, NULL);
  #ifdef DEBUGMODE
 -					netlog("gg_mainthread(%x): Typing notification from %d (%d).", this,
 +					netlog("mainthread() (%x): Typing notification from %d (%d).", this,
  						e->event.typing_notification.uin, e->event.typing_notification.length);
  #endif
  					CallService(MS_PROTO_CONTACTISTYPING, (WPARAM)hContact,
 @@ -1191,7 +1215,7 @@ retry:  	if (m_iDesiredStatus != ID_STATUS_OFFLINE
  		&& db_get_b(NULL, m_szModuleName, GG_KEY_ARECONNECT, GG_KEYDEF_ARECONNECT))
  	{
 -		netlog("gg_mainthread(%x): Unintentional disconnection detected. Going to reconnect...", this);
 +		netlog("mainthread() (%x): Unintentional disconnection detected. Going to reconnect...", this);
  		hostnum = 0;
  		broadcastnewstatus(ID_STATUS_CONNECTING);
  		mir_free(p.status_descr);
 @@ -1204,7 +1228,7 @@ retry:  	// Destroy concurrent sessions list
  	{
  		list_t l;
 -		EnterCriticalSection(&sessions_mutex);
 +		gg_EnterCriticalSection(&sessions_mutex, "mainthread", 23, "sessions_mutex", 1);
  		for (l = sessions; l; l = l->next)
  		{
  			struct gg_multilogon_session* sess = (struct gg_multilogon_session*)l->data;
 @@ -1213,17 +1237,20 @@ retry:  		}
  		list_destroy(sessions, 0);
  		sessions = NULL;
 -		LeaveCriticalSection(&sessions_mutex);
 +		gg_LeaveCriticalSection(&sessions_mutex, "mainthread", 23, 1, "sessions_mutex", 1);
  	}
  	// Stop dcc server
  	pth_dcc.dwThreadId = 0;
  #ifdef DEBUGMODE
 -	netlog("gg_mainthread(%x): Waiting until DCC Server Thread finished, if needed.", this);
 +	netlog("mainthread() (%x): Waiting pth_dcc thread. Waiting until DCC Server Thread finished, if needed.", this);
  #endif
  	threadwait(&pth_dcc);
 +#ifdef DEBUGMODE
 +	netlog("mainthread() (%x): Waiting pth_dcc thread - OK", this);
 +#endif
 -	netlog("gg_mainthread(%x): Server Thread Ending", this);
 +	netlog("mainthread(): end. (%x) Server Thread Ending", this);
  	return;
  }
 @@ -1233,19 +1260,19 @@ void GGPROTO::broadcastnewstatus(int newStatus)  {
  	int oldStatus;
 -	EnterCriticalSection(&modemsg_mutex);
 +	gg_EnterCriticalSection(&modemsg_mutex, "broadcastnewstatus", 24, "modemsg_mutex", 1);
  	oldStatus = m_iStatus;
  	if (oldStatus == newStatus)
  	{
 -		LeaveCriticalSection(&modemsg_mutex);
 +		gg_LeaveCriticalSection(&modemsg_mutex, "broadcastnewstatus", 24, 1, "modemsg_mutex", 1);
  		return;
  	}
  	m_iStatus = newStatus;
 -	LeaveCriticalSection(&modemsg_mutex);
 +	gg_LeaveCriticalSection(&modemsg_mutex, "broadcastnewstatus", 24, 2, "modemsg_mutex", 1);
  	ProtoBroadcastAck(m_szModuleName, NULL, ACKTYPE_STATUS, ACKRESULT_SUCCESS, (HANDLE) oldStatus, newStatus);
 -	netlog("gg_broadcastnewstatus(): Broadcast new status: %d.", newStatus);
 +	netlog("broadcastnewstatus(): Broadcast new status: %d.", newStatus);
  }
  ////////////////////////////////////////////////////////////
 @@ -1266,7 +1293,7 @@ int GGPROTO::contactdeleted(WPARAM wParam, LPARAM lParam)  		GCEVENT gcevent = {sizeof(GCEVENT), &gcdest};
  		GGGC *chat = gc_lookup(dbv.pszVal);
 -		netlog("gg_gc_event(): Terminating chat %x, id %s from contact list...", chat, dbv.pszVal);
 +		netlog("contactdeleted(): Terminating chat %x, id %s from contact list...", chat, dbv.pszVal);
  		if (chat)
  		{
  			// Destroy chat entry
 @@ -1283,9 +1310,9 @@ int GGPROTO::contactdeleted(WPARAM wParam, LPARAM lParam)  	if (uin && isonline())
  	{
 -		EnterCriticalSection(&sess_mutex);
 +		gg_EnterCriticalSection(&sess_mutex, "contactdeleted", 25, "sess_mutex", 1);
  		gg_remove_notify_ex(sess, uin, GG_USER_NORMAL);
 -		LeaveCriticalSection(&sess_mutex);
 +		gg_LeaveCriticalSection(&sess_mutex, "contactdeleted", 25, 1, "sess_mutex", 1);
  	}
  	return 0;
 @@ -1300,6 +1327,8 @@ int GGPROTO::dbsettingchanged(WPARAM wParam, LPARAM lParam)  	HANDLE hContact = (HANDLE) wParam;
  	char *szProto = NULL;
 +	netlog("dbsettingchanged(): fired. szModule=%s szSetting=%s", cws->szModule, cws->szSetting);
 +
  	// Check if the contact is NULL or we are not online
  	if (!isonline())
  		return 0;
 @@ -1327,7 +1356,7 @@ int GGPROTO::dbsettingchanged(WPARAM wParam, LPARAM lParam)  				GCDEST gcdest = {m_szModuleName, dbv.pszVal, GC_EVENT_CHANGESESSIONAME};
  				GCEVENT gcevent = {sizeof(GCEVENT), &gcdest};
  				gcevent.pszText = cws->value.pszVal;
 -				netlog("gg_dbsettingchanged(): Conference %s was renamed to %s.", dbv.pszVal, cws->value.pszVal);
 +				netlog("dbsettingchanged(): Conference %s was renamed to %s.", dbv.pszVal, cws->value.pszVal);
  				// Mark cascading
  				/* FIXME */ cascade = 1;
  				CallServiceSync(MS_GC_EVENT, 0, (LPARAM)&gcevent);
 @@ -1357,6 +1386,11 @@ int GGPROTO::dbsettingchanged(WPARAM wParam, LPARAM lParam)  				notifyuser(hContact, 1);
  		}
  	}
 +
 +#ifdef DEBUGMODE
 +	netlog("dbsettingchanged(): end. szModule=%s szSetting=%s", cws->szModule, cws->szSetting);
 +#endif
 +
  	return 0;
  }
 @@ -1365,7 +1399,7 @@ int GGPROTO::dbsettingchanged(WPARAM wParam, LPARAM lParam)  void GGPROTO::setalloffline()
  {
 -	netlog("gg_setalloffline(): Setting buddies offline");
 +	netlog("setalloffline(): started. Setting buddies offline");
  	db_set_w(NULL, m_szModuleName, GG_KEY_STATUS, ID_STATUS_OFFLINE);
  	HANDLE hContact = db_find_first();
  	while (hContact)
 @@ -1383,7 +1417,7 @@ void GGPROTO::setalloffline()  		hContact = db_find_next(hContact);
  	}
  #ifdef DEBUGMODE
 -	netlog("gg_setalloffline(): End");
 +	netlog("setalloffline(): End.");
  #endif
  }
 @@ -1401,28 +1435,31 @@ void GGPROTO::notifyuser(HANDLE hContact, int refresh)  		if ((db_get_w(hContact, m_szModuleName, GG_KEY_APPARENT, (WORD) ID_STATUS_ONLINE) == ID_STATUS_OFFLINE) ||
  			db_get_b(hContact, "CList", "NotOnList", 0))
  		{
 -			mir_cslock l(sess_mutex);
 +			gg_EnterCriticalSection(&sess_mutex, "notifyuser", 77, "sess_mutex", 1);
  			if (refresh) {
  				gg_remove_notify_ex(sess, uin, GG_USER_NORMAL);
  				gg_remove_notify_ex(sess, uin, GG_USER_BLOCKED);
  			}
  			gg_add_notify_ex(sess, uin, GG_USER_OFFLINE);
 +			gg_LeaveCriticalSection(&sess_mutex, "notifyuser", 77, 1, "sess_mutex", 1);
  		}
  		else if (db_get_b(hContact, m_szModuleName, GG_KEY_BLOCK, 0))
  		{
 -			mir_cslock l(sess_mutex);
 +			gg_EnterCriticalSection(&sess_mutex, "notifyuser", 78, "sess_mutex", 1);
  			if (refresh)
  				gg_remove_notify_ex(sess, uin, GG_USER_OFFLINE);
  			gg_add_notify_ex(sess, uin, GG_USER_BLOCKED);
 +			gg_LeaveCriticalSection(&sess_mutex, "notifyuser", 78, 1, "sess_mutex", 1);
  		}
  		else {
 -			mir_cslock l(sess_mutex);
 +			gg_EnterCriticalSection(&sess_mutex, "notifyuser", 79, "sess_mutex", 1);
  			if (refresh)
  				gg_remove_notify_ex(sess, uin, GG_USER_BLOCKED);
  			gg_add_notify_ex(sess, uin, GG_USER_NORMAL);
 +			gg_LeaveCriticalSection(&sess_mutex, "notifyuser", 79, 1, "sess_mutex", 1);
  		}
  	}
  }
 @@ -1435,7 +1472,7 @@ void GGPROTO::notifyall()  	uin_t *uins;
  	char *types;
 -	netlog("gg_notifyall(): Subscribing notification to all users");
 +	netlog("notifyall(): Subscribing notification to all users");
  	// Readup count
  	hContact = db_find_first();
  	while (hContact)
 @@ -1451,9 +1488,9 @@ void GGPROTO::notifyall()  	{
  		if (isonline())
  		{
 -			EnterCriticalSection(&sess_mutex);
 +			gg_EnterCriticalSection(&sess_mutex, "notifyall", 29, "sess_mutex", 1);
  			gg_notify_ex(sess, NULL, NULL, 0);
 -			LeaveCriticalSection(&sess_mutex);
 +			gg_LeaveCriticalSection(&sess_mutex, "notifyall", 29, 1, "sess_mutex", 1);
  		}
  		return;
  	}
 @@ -1482,9 +1519,9 @@ void GGPROTO::notifyall()  	// Send notification
  	if (isonline())
  	{
 -		EnterCriticalSection(&sess_mutex);
 +		gg_EnterCriticalSection(&sess_mutex, "notifyall", 30, "sess_mutex", 1);
  		gg_notify_ex(sess, uins, types, count);
 -		LeaveCriticalSection(&sess_mutex);
 +		gg_LeaveCriticalSection(&sess_mutex, "notifyall", 30, 1, "sess_mutex", 1);
  	}
  	// Free variables
 @@ -1496,6 +1533,9 @@ void GGPROTO::notifyall()  HANDLE GGPROTO::getcontact(uin_t uin, int create, int inlist, TCHAR *szNick)
  {
 +#ifdef DEBUGMODE
 +	netlog("getcontact(): uin=%d create=%d inlist=%d", uin, create, inlist);
 +#endif
  	// Look for contact in DB
  	HANDLE hContact = db_find_first();
  	while (hContact) {
 @@ -1517,18 +1557,18 @@ HANDLE GGPROTO::getcontact(uin_t uin, int create, int inlist, TCHAR *szNick)  	hContact = (HANDLE) CallService(MS_DB_CONTACT_ADD, 0, 0);
  	if (!hContact) {
 -		netlog("gg_getcontact(): Failed to create Gadu-Gadu contact %s", szNick);
 +		netlog("getcontact(): Failed to create Gadu-Gadu contact %s", szNick);
  		return NULL;
  	}
  	if (CallService(MS_PROTO_ADDTOCONTACT, (WPARAM) hContact, (LPARAM) m_szModuleName) != 0) {
  		// For some reason we failed to register the protocol for this contact
  		CallService(MS_DB_CONTACT_DELETE, (WPARAM) hContact, 0);
 -		netlog("Failed to register GG contact %d", uin);
 +		netlog("getcontact(): Failed to register GG contact %d", uin);
  		return NULL;
  	}
 -	netlog("gg_getcontact(): Added buddy: %d", uin);
 +	netlog("getcontact(): Added buddy: %d", uin);
  	if (!inlist) 
  		db_set_b(hContact, "CList", "NotOnList", 1);
 @@ -1548,12 +1588,12 @@ HANDLE GGPROTO::getcontact(uin_t uin, int create, int inlist, TCHAR *szNick)  			// Add uin and search it
  			gg_pubdir50_add(req, GG_PUBDIR50_UIN, ditoa(uin));
  			gg_pubdir50_seq_set(req, GG_SEQ_GETNICK);
 -			EnterCriticalSection(&sess_mutex);
 +			gg_EnterCriticalSection(&sess_mutex, "getcontact", 31, "sess_mutex", 1);
  			gg_pubdir50(sess, req);
 -			LeaveCriticalSection(&sess_mutex);
 +			gg_LeaveCriticalSection(&sess_mutex, "getcontact", 31, 1, "sess_mutex", 1);
  			gg_pubdir50_free(req);
  			db_set_s(hContact, m_szModuleName, GG_KEY_NICK, ditoa(uin));
 -			netlog("gg_getcontact(): Search for nick on uin: %d", uin);
 +			netlog("getcontact(): Search for nick on uin: %d", uin);
  		}
  	}
 @@ -1562,9 +1602,9 @@ HANDLE GGPROTO::getcontact(uin_t uin, int create, int inlist, TCHAR *szNick)  	{
  		PROTO_AVATAR_INFORMATIONT pai = {0};
 -		EnterCriticalSection(&sess_mutex);
 +		gg_EnterCriticalSection(&sess_mutex, "getcontact", 32, "sess_mutex", 1);
  		gg_add_notify_ex(sess, uin, (char)(inlist ? GG_USER_NORMAL : GG_USER_OFFLINE));
 -		LeaveCriticalSection(&sess_mutex);
 +		gg_LeaveCriticalSection(&sess_mutex, "getcontact", 32, 1, "sess_mutex", 1);
  		pai.cbSize = sizeof(pai);
  		pai.hContact = hContact;
 @@ -1573,9 +1613,9 @@ HANDLE GGPROTO::getcontact(uin_t uin, int create, int inlist, TCHAR *szNick)  		// Change status of the contact with our own UIN (if got yourself added to the contact list)
  		if (db_get_dw(NULL, m_szModuleName, GG_KEY_UIN, 0) == uin) {
  			char *szMsg;
 -			EnterCriticalSection(&modemsg_mutex);
 +			gg_EnterCriticalSection(&modemsg_mutex, "getcontact", 33, "modemsg_mutex", 1);
  			szMsg = mir_strdup(getstatusmsg(m_iStatus));
 -			LeaveCriticalSection(&modemsg_mutex);
 +			gg_LeaveCriticalSection(&modemsg_mutex, "getcontact", 33, 1, "modemsg_mutex", 1);
  			changecontactstatus(uin, status_m2gg(m_iStatus, szMsg != NULL), szMsg, 0, 0, 0, 0);
  			mir_free(szMsg);
  		}
 @@ -1670,6 +1710,9 @@ int GGPROTO::status_gg2m(int status)  void GGPROTO::changecontactstatus(uin_t uin, int status, const char *idescr, int time, uint32_t remote_ip, uint16_t remote_port, uint32_t version)
  {
 +#ifdef DEBUGMODE
 +	netlog("changecontactstatus(): uin=%d status=%d", uin, status);
 +#endif
  	HANDLE hContact = getcontact(uin, 0, 0, NULL);
  	// Check if contact is on list
 @@ -1681,7 +1724,7 @@ void GGPROTO::changecontactstatus(uin_t uin, int status, const char *idescr, int  	// Check if there's description and if it's not empty
  	if (idescr && *idescr)
  	{
 -		netlog("gg_changecontactstatus(): Saving for %d status descr \"%s\".", uin, idescr);
 +		netlog("changecontactstatus(): Saving for %d status descr \"%s\".", uin, idescr);
  		db_set_s(hContact, "CList", GG_KEY_STATUSDESCR, idescr);
  	}
  	else
 diff --git a/protocols/Gadu-Gadu/src/dialogs.cpp b/protocols/Gadu-Gadu/src/dialogs.cpp index 476907f2e8..d34b8e54d1 100644 --- a/protocols/Gadu-Gadu/src/dialogs.cpp +++ b/protocols/Gadu-Gadu/src/dialogs.cpp @@ -458,9 +458,9 @@ static INT_PTR CALLBACK gg_genoptsdlgproc(HWND hwndDlg, UINT msg, WPARAM wParam,  					db_set_b(NULL, gg->m_szModuleName, GG_KEY_SHOWLINKS, (BYTE) IsDlgButtonChecked(hwndDlg, IDC_SHOWLINKS));
  					if (IsDlgButtonChecked(hwndDlg, IDC_SHOWLINKS))
  						status_flags |= GG_STATUS_FLAG_SPAM;
 -					EnterCriticalSection(&gg->sess_mutex);
 +					gg->gg_EnterCriticalSection(&gg->sess_mutex, "gg_genoptsdlgproc", 34, "sess_mutex", 1);
  					gg_change_status_flags(gg->sess, status_flags);
 -					LeaveCriticalSection(&gg->sess_mutex);
 +					gg->gg_LeaveCriticalSection(&gg->sess_mutex, "gg_genoptsdlgproc", 34, 1, "sess_mutex", 1);
  					db_set_b(NULL, gg->m_szModuleName, GG_KEY_ENABLEAVATARS, (BYTE) IsDlgButtonChecked(hwndDlg, IDC_ENABLEAVATARS));
  					db_set_b(NULL, gg->m_szModuleName, GG_KEY_IMGMETHOD,
 @@ -847,9 +847,9 @@ static INT_PTR CALLBACK gg_detailsdlgproc(HWND hwndDlg, UINT msg, WPARAM wParam,  			// Run update
  			gg_pubdir50_seq_set(req, GG_SEQ_CHINFO);
 -			EnterCriticalSection(&gg->sess_mutex);
 +			gg->gg_EnterCriticalSection(&gg->sess_mutex, "gg_detailsdlgproc", 35, "sess_mutex", 1);
  			gg_pubdir50(gg->sess, req);
 -			LeaveCriticalSection(&gg->sess_mutex);
 +			gg->gg_LeaveCriticalSection(&gg->sess_mutex, "gg_genoptsdlgproc", 35, 1, "sess_mutex", 1);
  			dat->updating = TRUE;
  			gg_pubdir50_free(req);
 diff --git a/protocols/Gadu-Gadu/src/filetransfer.cpp b/protocols/Gadu-Gadu/src/filetransfer.cpp index e7560e16a2..86eae9458c 100644 --- a/protocols/Gadu-Gadu/src/filetransfer.cpp +++ b/protocols/Gadu-Gadu/src/filetransfer.cpp @@ -35,7 +35,7 @@ void GGPROTO::dccstart()  	if (exitCode == STILL_ACTIVE)
  	{
  #ifdef DEBUGMODE
 -		netlog("gg_dccstart(): DCC thread still active. Exiting...");
 +		netlog("dccstart(): DCC thread still active. Exiting...");
  #endif
  		// Signalize mainthread it's started
  		if (hEvent) SetEvent(hEvent);
 @@ -45,12 +45,15 @@ void GGPROTO::dccstart()  	// Check if we wan't direct connections
  	if (!db_get_b(NULL, m_szModuleName, GG_KEY_DIRECTCONNS, GG_KEYDEF_DIRECTCONNS))
  	{
 -		netlog("gg_dccstart(): No direct connections setup.");
 +		netlog("dccstart(): No direct connections setup.");
  		if (hEvent) SetEvent(hEvent);
  		return;
  	}
  	// Start thread
 +#ifdef DEBUGMODE
 +	netlog("dccstart(): forkthreadex 4 GGPROTO::dccmainthread");
 +#endif
  	pth_dcc.hThread = forkthreadex(&GGPROTO::dccmainthread, NULL, &pth_dcc.dwThreadId);
  }
 @@ -60,7 +63,7 @@ void GGPROTO::dccconnect(uin_t uin)  	HANDLE hContact = getcontact(uin, 0, 0, NULL);
  	DWORD ip, myuin; WORD port;
 -	netlog("gg_dccconnect(): Connecting to uin %d.", uin);
 +	netlog("dccconnect(): Connecting to uin %d.", uin);
  	// If unknown user or not on list ignore
  	if (!hContact) return;
 @@ -77,9 +80,9 @@ void GGPROTO::dccconnect(uin_t uin)  		return;
  	// Add client dcc to watches
 -	EnterCriticalSection(&ft_mutex);
 +	gg_EnterCriticalSection(&ft_mutex, "dccconnect", 36, "ft_mutex", 1);
  	list_add(&watches, dcc, 0);
 -	LeaveCriticalSection(&ft_mutex);
 +	gg_LeaveCriticalSection(&ft_mutex, "dccconnect", 36, 1, "ft_mutex", 1);
  }
  //////////////////////////////////////////////////////////
 @@ -93,21 +96,25 @@ struct ftfaildata  void __cdecl GGPROTO::ftfailthread(void *param)
  {
  	struct ftfaildata *ft = (struct ftfaildata *)param;
 -	SleepEx(100, FALSE);
 -	netlog("gg_ftfailthread(): Sending failed file transfer.");
 +	netlog("ftfailthread(): started. Sending failed file transfer.");
 +	gg_sleep(100, FALSE, "ftfailthread", 102, 1);
  	ProtoBroadcastAck(m_szModuleName, ft->hContact, ACKTYPE_FILE, ACKRESULT_FAILED, ft->hProcess, 0);
  	free(ft);
 +	netlog("ftfailthread(): end.");
  }
  HANDLE ftfail(GGPROTO *gg, HANDLE hContact)
  {
  	ftfaildata *ft = (ftfaildata*)malloc(sizeof(struct ftfaildata));
  #ifdef DEBUGMODE
 -	gg->netlog("gg_ftfail(): Failing file transfer...");
 +	gg->netlog("ftfail(): Failing file transfer...");
  #endif
  	srand(time(NULL));
  	ft->hProcess = (HANDLE)rand();
  	ft->hContact = hContact;
 +#ifdef DEBUGMODE
 +	gg->netlog("ftfail(): forkthread 5 GGPROTO::ftfailthread");
 +#endif
  	gg->forkthread(&GGPROTO::ftfailthread, ft);
  	return ft->hProcess;
  }
 @@ -133,28 +140,34 @@ void __cdecl GGPROTO::dccmainthread(void*)  	// Zero up lists
  	watches = transfers = requests = l = NULL;
 -	netlog("gg_dccmainthread(): DCC Server Thread Starting");
 +	netlog("dccmainthread(): started. DCC Server Thread Starting");
  	// Readup number
  	if (!(uin = db_get_dw(NULL, m_szModuleName, GG_KEY_UIN, 0)))
  	{
 -		netlog("gg_dccmainthread(): No Gadu-Gadu number specified. Exiting.");
 +		netlog("dccmainthread(): No Gadu-Gadu number specified. Exiting.");
  		if (hEvent) SetEvent(hEvent);
 +#ifdef DEBUGMODE
 +		netlog("dccmainthread(): end 1.");
 +#endif
  		return;
  	}
  	// Create listen socket on config direct port
  	if (!(dcc = gg_dcc_socket_create(uin, (uint16_t)db_get_w(NULL, m_szModuleName, GG_KEY_DIRECTPORT, GG_KEYDEF_DIRECTPORT))))
  	{
 -		netlog("gg_dccmainthread(): Cannot create DCC listen socket. Exiting.");
 +		netlog("dccmainthread(): Cannot create DCC listen socket. Exiting.");
  		// Signalize mainthread we haven't start
  		if (hEvent) SetEvent(hEvent);
 +#ifdef DEBUGMODE
 +		netlog("dccmainthread(): end 2.");
 +#endif
  		return;
  	}
  	gg_dcc_port = dcc->port;
  	gg_dcc_ip = inet_addr("255.255.255.255");
 -	netlog("gg_dccmainthread(): Listening on port %d.", gg_dcc_port);
 +	netlog("dccmainthread(): Listening on port %d.", gg_dcc_port);
  	// Signalize mainthread we started
  	if (hEvent) SetEvent(hEvent);
 @@ -198,15 +211,15 @@ void __cdecl GGPROTO::dccmainthread(void*)  		if (ret == -1)
  		{
  			if (errno == EBADF)
 -				netlog("gg_dccmainthread(): Bad descriptor on select().");
 +				netlog("dccmainthread(): Bad descriptor on select().");
  			else if (errno != EINTR)
 -				netlog("gg_dccmainthread(): Unknown error on select().");
 +				netlog("dccmainthread(): Unknown error on select().");
  			continue;
  		}
  		// Process watches (carefull with l)
  		l = watches;
 -		EnterCriticalSection(&ft_mutex);
 +		gg_EnterCriticalSection(&ft_mutex, "dccmainthread", 37, "ft_mutex", 1);
  		while (l)
  		{
  			struct gg_common *c = (gg_common*)l->data;
 @@ -226,7 +239,7 @@ void __cdecl GGPROTO::dccmainthread(void*)  					// Connection broken/closed
  					if (!(e = gg_dcc_socket_watch_fd(dcc)))
  					{
 -						netlog("gg_dccmainthread(): Socket closed.");
 +						netlog("dccmainthread(): Socket closed.");
  						// Remove socket and _close
  						list_remove(&watches, dcc, 0);
  						gg_dcc_socket_free(dcc);
 @@ -235,7 +248,7 @@ void __cdecl GGPROTO::dccmainthread(void*)  						if (dcc == dcc) dcc = NULL;
  						continue;
  					}
 -					else netlog("gg_dccmainthread(): Event: %s", ggdebug_eventtype(e));
 +					else netlog("dccmainthread(): Event: %s", ggdebug_eventtype(e));
  					switch(e->type)
  					{
 @@ -274,7 +287,7 @@ void __cdecl GGPROTO::dccmainthread(void*)  						// Connection was successfuly ended
  						case GG_EVENT_DCC_DONE:
 -							netlog("gg_dccmainthread(): Client: %d, Transfer done ! Closing connection.", dcc->peer_uin);
 +							netlog("dccmainthread(): Client: %d, Transfer done ! Closing connection.", dcc->peer_uin);
  							// Remove from watches
  							list_remove(&watches, dcc, 0);
  							// Close file & success
 @@ -310,22 +323,22 @@ void __cdecl GGPROTO::dccmainthread(void*)  							switch (e->event.dcc_error)
  							{
  								case GG_ERROR_DCC_HANDSHAKE:
 -									netlog("gg_dccmainthread(): Client: %d, Handshake error.", dcc->peer_uin);
 +									netlog("dccmainthread(): Client: %d, Handshake error.", dcc->peer_uin);
  									break;
  								case GG_ERROR_DCC_NET:
 -									netlog("gg_dccmainthread(): Client: %d, Network error.", dcc->peer_uin);
 +									netlog("dccmainthread(): Client: %d, Network error.", dcc->peer_uin);
  									break;
  								case GG_ERROR_DCC_FILE:
 -									netlog("gg_dccmainthread(): Client: %d, File read/write error.", dcc->peer_uin);
 +									netlog("dccmainthread(): Client: %d, File read/write error.", dcc->peer_uin);
  									break;
  								case GG_ERROR_DCC_EOF:
 -									netlog("gg_dccmainthread(): Client: %d, End of file/connection error.", dcc->peer_uin);
 +									netlog("dccmainthread(): Client: %d, End of file/connection error.", dcc->peer_uin);
  									break;
  								case GG_ERROR_DCC_REFUSED:
 -									netlog("gg_dccmainthread(): Client: %d, Connection refused error.", dcc->peer_uin);
 +									netlog("dccmainthread(): Client: %d, Connection refused error.", dcc->peer_uin);
  									break;
  								default:
 -									netlog("gg_dccmainthread(): Client: %d, Unknown error.", dcc->peer_uin);
 +									netlog("dccmainthread(): Client: %d, Unknown error.", dcc->peer_uin);
  							}
  							// Don't do anything if it's main socket
  							if (dcc == dcc) break;
 @@ -345,7 +358,7 @@ void __cdecl GGPROTO::dccmainthread(void*)  						// Need file acknowledgement
  						case GG_EVENT_DCC_NEED_FILE_ACK:
 -							netlog("gg_dccmainthread(): Client: %d, File ack filename \"%s\" size %d.", dcc->peer_uin,
 +							netlog("dccmainthread(): Client: %d, File ack filename \"%s\" size %d.", dcc->peer_uin,
  								dcc->file_info.filename, dcc->file_info.size);
  							// Do not watch for transfer until user accept it
  							list_remove(&watches, dcc, 0);
 @@ -376,7 +389,7 @@ void __cdecl GGPROTO::dccmainthread(void*)  						// Need client accept
  						case GG_EVENT_DCC_CLIENT_ACCEPT:
 -							netlog("gg_dccmainthread(): Client: %d, Client accept.", dcc->peer_uin);
 +							netlog("dccmainthread(): Client: %d, Client accept.", dcc->peer_uin);
  							// Check if user is on the list and if it is my uin
  							if (getcontact(dcc->peer_uin, 0, 0, NULL) &&
  								db_get_dw(NULL, m_szModuleName, GG_KEY_UIN, -1) == dcc->uin)
 @@ -391,7 +404,7 @@ void __cdecl GGPROTO::dccmainthread(void*)  						case GG_EVENT_DCC_CALLBACK:
  						{
  							int found = 0;
 -							netlog("gg_dccmainthread(): Callback from client %d.", dcc->peer_uin);
 +							netlog("dccmainthread(): Callback from client %d.", dcc->peer_uin);
  							// Seek for stored callback request
  							for (l = requests; l; l = l->next)
  							{
 @@ -418,7 +431,7 @@ void __cdecl GGPROTO::dccmainthread(void*)  									list_add(&watches, req, 0);
  									// Free old dat
  									gg_free_dcc(dcc);
 -									netlog("gg_dccmainthread(): Found stored request to client %d, filename \"%s\" size %d, folder \"%s\".",
 +									netlog("dccmainthread(): Found stored request to client %d, filename \"%s\" size %d, folder \"%s\".",
  										req->peer_uin, req->file_info.filename, req->file_info.size, req->folder);
  									break;
  								}
 @@ -426,7 +439,7 @@ void __cdecl GGPROTO::dccmainthread(void*)  							if (!found)
  							{
 -								netlog("gg_dccmainthread(): Unknown request to client %d.", dcc->peer_uin);
 +								netlog("dccmainthread(): Unknown request to client %d.", dcc->peer_uin);
  								// Kill unauthorized dcc
  								list_remove(&watches, dcc, 0);
  								gg_free_dcc(dcc); if (dcc == dcc) dcc = NULL;
 @@ -452,13 +465,13 @@ void __cdecl GGPROTO::dccmainthread(void*)  					// Connection broken/closed
  					if (!(e = gg_dcc7_watch_fd(dcc7)))
  					{
 -						netlog("gg_dccmainthread(): Socket closed.");
 +						netlog("dccmainthread(): Socket closed.");
  						// Remove socket and _close
  						list_remove(&watches, dcc7, 0);
  						gg_dcc7_free(dcc7);
  						continue;
  					}
 -					else netlog("gg_dccmainthread(): Event: %s", ggdebug_eventtype(e));
 +					else netlog("dccmainthread(): Event: %s", ggdebug_eventtype(e));
  					switch(e->type)
  					{
 @@ -491,7 +504,7 @@ void __cdecl GGPROTO::dccmainthread(void*)  						// Connection was successfuly ended
  						case GG_EVENT_DCC7_DONE:
 -							netlog("gg_dccmainthread(): Client: %d, Transfer done ! Closing connection.", dcc->peer_uin);
 +							netlog("dccmainthread(): Client: %d, Transfer done ! Closing connection.", dcc->peer_uin);
  							// Remove from watches
  							list_remove(&watches, dcc7, 0);
  							// Close file & success
 @@ -527,25 +540,25 @@ void __cdecl GGPROTO::dccmainthread(void*)  							switch (e->event.dcc7_error)
  							{
  								case GG_ERROR_DCC7_HANDSHAKE:
 -									netlog("gg_dccmainthread(): Client: %d, Handshake error.", dcc7->peer_uin);
 +									netlog("dccmainthread(): Client: %d, Handshake error.", dcc7->peer_uin);
  									break;
  								case GG_ERROR_DCC7_NET:
 -									netlog("gg_dccmainthread(): Client: %d, Network error.", dcc7->peer_uin);
 +									netlog("dccmainthread(): Client: %d, Network error.", dcc7->peer_uin);
  									break;
  								case GG_ERROR_DCC7_FILE:
 -									netlog("gg_dccmainthread(): Client: %d, File read/write error.", dcc7->peer_uin);
 +									netlog("dccmainthread(): Client: %d, File read/write error.", dcc7->peer_uin);
  									break;
  								case GG_ERROR_DCC7_EOF:
 -									netlog("gg_dccmainthread(): Client: %d, End of file/connection error.", dcc7->peer_uin);
 +									netlog("dccmainthread(): Client: %d, End of file/connection error.", dcc7->peer_uin);
  									break;
  								case GG_ERROR_DCC7_REFUSED:
 -									netlog("gg_dccmainthread(): Client: %d, Connection refused error.", dcc7->peer_uin);
 +									netlog("dccmainthread(): Client: %d, Connection refused error.", dcc7->peer_uin);
  									break;
  								case GG_ERROR_DCC7_RELAY:
 -									netlog("gg_dccmainthread(): Client: %d, Relay connection error.", dcc7->peer_uin);
 +									netlog("dccmainthread(): Client: %d, Relay connection error.", dcc7->peer_uin);
  									break;
  								default:
 -									netlog("gg_dccmainthread(): Client: %d, Unknown error.", dcc7->peer_uin);
 +									netlog("dccmainthread(): Client: %d, Unknown error.", dcc7->peer_uin);
  							}
  							// Remove from watches
  							list_remove(&watches, dcc7, 0);
 @@ -570,7 +583,7 @@ void __cdecl GGPROTO::dccmainthread(void*)  					break;
  			}
  		}
 -		LeaveCriticalSection(&ft_mutex);
 +		gg_LeaveCriticalSection(&ft_mutex, "dccmainthread", 37, 1, "ft_mutex", 1);
  	}
  	// Close all dcc client sockets
 @@ -620,7 +633,7 @@ void __cdecl GGPROTO::dccmainthread(void*)  	gg_dcc_port = 0;
  	gg_dcc_ip = 0;
 -	netlog("gg_dccmainthread(): DCC Server Thread Ending");
 +	netlog("dccmainthread(): end. DCC Server Thread Ending");
  }
  HANDLE GGPROTO::dccfileallow(HANDLE hTransfer, const PROTOCHAR* szPath)
 @@ -634,14 +647,14 @@ HANDLE GGPROTO::dccfileallow(HANDLE hTransfer, const PROTOCHAR* szPath)  	mir_free(path);
  	// Remove transfer from waiting list
 -	EnterCriticalSection(&ft_mutex);
 +	gg_EnterCriticalSection(&ft_mutex, "dccfileallow", 38, "ft_mutex", 1);
  	list_remove(&transfers, dcc, 0);
 -	LeaveCriticalSection(&ft_mutex);
 +	gg_LeaveCriticalSection(&ft_mutex, "dccfileallow", 38, 1, "ft_mutex", 1);
  	// Open file for appending and check if ok
  	if ((dcc->file_fd = _open(fileName, _O_WRONLY | _O_APPEND | _O_BINARY | _O_CREAT, _S_IREAD | _S_IWRITE)) == -1)
  	{
 -		netlog("gg_dccfileallow(): Failed to create file \"%s\".", fileName);
 +		netlog("dccfileallow(): Failed to create file \"%s\".", fileName);
  		ProtoBroadcastAck(m_szModuleName, dcc->contact, ACKTYPE_FILE, ACKRESULT_FAILED, dcc, 0);
  		// Free transfer
  		gg_free_dcc(dcc);
 @@ -652,11 +665,11 @@ HANDLE GGPROTO::dccfileallow(HANDLE hTransfer, const PROTOCHAR* szPath)  	dcc->offset = _lseek(dcc->file_fd, 0, SEEK_END);
  	// Add to watches and start transfer
 -	EnterCriticalSection(&ft_mutex);
 +	gg_EnterCriticalSection(&ft_mutex, "dccfileallow", 39, "ft_mutex", 1);
  	list_add(&watches, dcc, 0);
 -	LeaveCriticalSection(&ft_mutex);
 +	gg_LeaveCriticalSection(&ft_mutex, "dccfileallow", 39, 1, "ft_mutex", 1);
 -	netlog("gg_dccfileallow(): Receiving file \"%s\" from %d.", dcc->file_info.filename, dcc->peer_uin);
 +	netlog("dccfileallow(): Receiving file \"%s\" from %d.", dcc->file_info.filename, dcc->peer_uin);
  	return hTransfer;
  }
 @@ -673,13 +686,13 @@ HANDLE GGPROTO::dcc7fileallow(HANDLE hTransfer, const PROTOCHAR* szPath)  	mir_free(path);
  	// Remove transfer from waiting list
 -	EnterCriticalSection(&ft_mutex);
 +	gg_EnterCriticalSection(&ft_mutex, "dcc7fileallow", 40, "ft_mutex", 1);
  	iFtRemoveRes = list_remove(&transfers, dcc7, 0);
 -	LeaveCriticalSection(&ft_mutex);
 +	gg_LeaveCriticalSection(&ft_mutex, "dcc7fileallow", 40, 1, "ft_mutex", 1);
  	if (iFtRemoveRes == -1)
  	{
 -		netlog("gg_dcc7fileallow(): File transfer denied.");
 +		netlog("dcc7fileallow(): File transfer denied.");
  		ProtoBroadcastAck(m_szModuleName, dcc7->contact, ACKTYPE_FILE, ACKRESULT_DENIED, dcc7, 0);
  		// Free transfer
  		gg_dcc7_free(dcc7);
 @@ -689,7 +702,7 @@ HANDLE GGPROTO::dcc7fileallow(HANDLE hTransfer, const PROTOCHAR* szPath)  	// Open file for appending and check if ok
  	if ((dcc7->file_fd = _open(fileName, _O_WRONLY | _O_APPEND | _O_BINARY | _O_CREAT, _S_IREAD | _S_IWRITE)) == -1)
  	{
 -		netlog("gg_dcc7fileallow(): Failed to create file \"%s\".", fileName);
 +		netlog("dcc7fileallow(): Failed to create file \"%s\".", fileName);
  		gg_dcc7_reject(dcc7, GG_DCC7_REJECT_USER);
  		ProtoBroadcastAck(m_szModuleName, dcc7->contact, ACKTYPE_FILE, ACKRESULT_FAILED, dcc7, 0);
  		// Free transfer
 @@ -702,11 +715,11 @@ HANDLE GGPROTO::dcc7fileallow(HANDLE hTransfer, const PROTOCHAR* szPath)  	gg_dcc7_accept(dcc7, dcc7->offset);
  	// Add to watches and start transfer
 -	EnterCriticalSection(&ft_mutex);
 +	gg_EnterCriticalSection(&ft_mutex, "dcc7fileallow", 41, "ft_mutex", 1);
  	list_add(&watches, dcc7, 0);
 -	LeaveCriticalSection(&ft_mutex);
 +	gg_LeaveCriticalSection(&ft_mutex, "dcc7fileallow", 41, 1, "ft_mutex", 1);
 -	netlog("gg_dcc7fileallow(): Receiving file \"%s\" from %d.", dcc7->filename, dcc7->peer_uin);
 +	netlog("dcc7fileallow(): Receiving file \"%s\" from %d.", dcc7->filename, dcc7->peer_uin);
  	return hTransfer;
  }
 @@ -716,13 +729,13 @@ int GGPROTO::dccfiledeny(HANDLE hTransfer)  	struct gg_dcc *dcc = (struct gg_dcc *) hTransfer;
  	// Remove transfer from any list
 -	EnterCriticalSection(&ft_mutex);
 +	gg_EnterCriticalSection(&ft_mutex, "dccfiledeny", 42, "ft_mutex", 1);
  	if (watches) list_remove(&watches, dcc, 0);
  	if (requests) list_remove(&requests, dcc, 0);
  	if (transfers) list_remove(&transfers, dcc, 0);
 -	LeaveCriticalSection(&ft_mutex);
 +	gg_LeaveCriticalSection(&ft_mutex, "dccfiledeny", 42, 1, "ft_mutex", 1);
 -	netlog("gg_dccfiledeny(): Rejected file \"%s\" from/to %d.", dcc->file_info.filename, dcc->peer_uin);
 +	netlog("dccfiledeny(): Rejected file \"%s\" from/to %d.", dcc->file_info.filename, dcc->peer_uin);
  	// Free transfer
  	gg_free_dcc(dcc);
 @@ -737,12 +750,12 @@ int GGPROTO::dcc7filedeny(HANDLE hTransfer)  	gg_dcc7_reject(dcc7, GG_DCC7_REJECT_USER);
  	// Remove transfer from any list
 -	EnterCriticalSection(&ft_mutex);
 +	gg_EnterCriticalSection(&ft_mutex, "dcc7filedeny", 43, "ft_mutex", 1);
  	if (watches) list_remove(&watches, dcc7, 0);
  	if (transfers) list_remove(&transfers, dcc7, 0);
 -	LeaveCriticalSection(&ft_mutex);
 +	gg_LeaveCriticalSection(&ft_mutex, "dcc7filedeny", 43, 1, "ft_mutex", 1);
 -	netlog("gg_dcc7filedeny(): Rejected file \"%s\" from/to %d.", dcc7->filename, dcc7->peer_uin);
 +	netlog("dcc7filedeny(): Rejected file \"%s\" from/to %d.", dcc7->filename, dcc7->peer_uin);
  	// Free transfer
  	gg_dcc7_free(dcc7);
 @@ -755,11 +768,11 @@ int GGPROTO::dccfilecancel(HANDLE hTransfer)  	struct gg_dcc *dcc = (struct gg_dcc *) hTransfer;
  	// Remove transfer from any list
 -	EnterCriticalSection(&ft_mutex);
 +	gg_EnterCriticalSection(&ft_mutex, "dccfilecancel", 44, "ft_mutex", 1);
  	if (watches) list_remove(&watches, dcc, 0);
  	if (requests) list_remove(&requests, dcc, 0);
  	if (transfers) list_remove(&transfers, dcc, 0);
 -	LeaveCriticalSection(&ft_mutex);
 +	gg_LeaveCriticalSection(&ft_mutex, "dccfilecancel", 44, 1, "ft_mutex", 1);
  	// Send failed info
  	ProtoBroadcastAck(m_szModuleName, dcc->contact, ACKTYPE_FILE, ACKRESULT_FAILED, dcc, 0);
 @@ -770,7 +783,7 @@ int GGPROTO::dccfilecancel(HANDLE hTransfer)  		dcc->file_fd = -1;
  	}
 -	netlog("gg_dccfilecancel(): Canceled file \"%s\" from/to %d.", dcc->file_info.filename, dcc->peer_uin);
 +	netlog("dccfilecancel(): Canceled file \"%s\" from/to %d.", dcc->file_info.filename, dcc->peer_uin);
  	// Free transfer
  	gg_free_dcc(dcc);
 @@ -786,10 +799,10 @@ int GGPROTO::dcc7filecancel(HANDLE hTransfer)  		gg_dcc7_abort(dcc7);
  	// Remove transfer from any list
 -	EnterCriticalSection(&ft_mutex);
 +	gg_EnterCriticalSection(&ft_mutex, "dcc7filecancel", 45, "ft_mutex", 1);
  	if (watches) list_remove(&watches, dcc7, 0);
  	if (transfers) list_remove(&transfers, dcc7, 0);
 -	LeaveCriticalSection(&ft_mutex);
 +	gg_LeaveCriticalSection(&ft_mutex, "dcc7filecancel", 45, 1, "ft_mutex", 1);
  	// Send failed info
  	ProtoBroadcastAck(m_szModuleName, dcc7->contact, ACKTYPE_FILE, ACKRESULT_FAILED, dcc7, 0);
 @@ -800,7 +813,7 @@ int GGPROTO::dcc7filecancel(HANDLE hTransfer)  		dcc7->file_fd = -1;
  	}
 -	netlog("gg_dcc7filecancel(): Canceled file \"%s\" from/to %d.", dcc7->filename, dcc7->peer_uin);
 +	netlog("dcc7filecancel(): Canceled file \"%s\" from/to %d.", dcc7->filename, dcc7->peer_uin);
  	// Free transfer
  	gg_dcc7_free(dcc7);
 @@ -892,16 +905,16 @@ HANDLE GGPROTO::SendFile(HANDLE hContact, const PROTOCHAR* szDescription, PROTOC  	if ((ver & 0x00ffffff) >= 0x29 || !ver) {
  		struct gg_dcc7 *dcc7;
 -		EnterCriticalSection(&sess_mutex);
 +		gg_EnterCriticalSection(&sess_mutex, "SendFile", 46, "sess_mutex", 1);
  		if (!(dcc7 = gg_dcc7_send_file(sess, uin, filename, NULL, NULL))) {
 -			LeaveCriticalSection(&sess_mutex);
 -			netlog("gg_sendfile(): Failed to send file \"%s\".", filename);
 +			gg_LeaveCriticalSection(&sess_mutex, "SendFile", 46, 1, "sess_mutex", 1);
 +			netlog("SendFile(): Failed to send file \"%s\".", filename);
  			mir_free(filename);
  			return ftfail(this, hContact);
  		}
 -		LeaveCriticalSection(&sess_mutex);
 +		gg_LeaveCriticalSection(&sess_mutex, "SendFile", 46, 2, "sess_mutex", 1);
 -		netlog("gg_sendfile(): Sending file \"%s\" to %d.", filename, uin);
 +		netlog("SendFile(): Sending file \"%s\" to %d.", filename, uin);
  		// Add dcc to watches
  		list_add(&watches, dcc7, 0);
 @@ -923,7 +936,7 @@ HANDLE GGPROTO::SendFile(HANDLE hContact, const PROTOCHAR* szDescription, PROTOC  	// Return if bad connection info
  	if (!port || !uin || !myuin)
  	{
 -		netlog("gg_sendfile(): Bad contact uin or my uin. Exit.");
 +		netlog("SendFile(): Bad contact uin or my uin. Exit.");
  		mir_free(filename);
  		return ftfail(this, hContact);
  	}
 @@ -939,23 +952,23 @@ HANDLE GGPROTO::SendFile(HANDLE hContact, const PROTOCHAR* szDescription, PROTOC  		dcc->peer_uin = uin;
  		dcc->fd = -1;
  		dcc->type = GG_SESSION_DCC_SEND;
 -		netlog("gg_sendfile(): Requesting user to connect us and scheduling gg_dcc struct for a later use.");
 -		EnterCriticalSection(&sess_mutex);
 +		netlog("SendFile(): Requesting user to connect us and scheduling gg_dcc struct for a later use.");
 +		gg_EnterCriticalSection(&sess_mutex, "SendFile", 47, "sess_mutex", 1);
  		gg_dcc_request(sess, uin);
 -		LeaveCriticalSection(&sess_mutex);
 +		gg_LeaveCriticalSection(&sess_mutex, "SendFile", 47, 1, "sess_mutex", 1);
  		list_add(&requests, dcc, 0);
  	}
  	// Write filename
  	if (gg_dcc_fill_file_info(dcc, filename) == -1)
  	{
 -		netlog("gg_sendfile(): Cannot open and file fileinfo \"%s\".", filename);
 +		netlog("SendFile(): Cannot open and file fileinfo \"%s\".", filename);
  		gg_free_dcc(dcc);
  		mir_free(filename);
  		return ftfail(this, hContact);
  	}
 -	netlog("gg_sendfile(): Sending file \"%s\" to %d in %s mode.", filename, uin, (dcc->fd != -1) ? "active" : "passive");
 +	netlog("SendFile(): Sending file \"%s\" to %d in %s mode.", filename, uin, (dcc->fd != -1) ? "active" : "passive");
  	// Add dcc to watches if not passive
  	if (dcc->fd != -1) list_add(&watches, dcc, 0);
 diff --git a/protocols/Gadu-Gadu/src/gg.cpp b/protocols/Gadu-Gadu/src/gg.cpp index b75b439af0..401eecf43c 100644 --- a/protocols/Gadu-Gadu/src/gg.cpp +++ b/protocols/Gadu-Gadu/src/gg.cpp @@ -154,7 +154,7 @@ void GGPROTO::cleanuplastplugin(DWORD version)  	if (version < PLUGIN_MAKE_VERSION(0, 0, 1, 4))
  	{
  #ifdef DEBUGMODE
 -		netlog("gg_cleanuplastplugin(%d): Cleaning junk Phone settings from < 0.0.1.4 ...", version);
 +		netlog("cleanuplastplugin() version=%d Cleaning junk Phone settings from < 0.0.1.4 ...", version);
  #endif
  		// Look for contact in DB
  		hContact = db_find_first();
 @@ -175,7 +175,7 @@ void GGPROTO::cleanuplastplugin(DWORD version)  	if (version < PLUGIN_MAKE_VERSION(0, 0, 3, 5))
  	{
  #ifdef DEBUGMODE
 -		netlog("gg_cleanuplastplugin(%d): Cleaning junk Nick settings from < 0.0.3.5 ...", version);
 +		netlog("cleanuplastplugin(): version=%d Cleaning junk Nick settings from < 0.0.3.5 ...", version);
  #endif
  		// Look for contact in DB
  		hContact = db_find_first();
 @@ -479,6 +479,10 @@ const char *ggdebug_eventtype(gg_event *e)  	return ggdebug_eventype2string[i].text;
  }
 +//////////////////////////////////////////////////////////
 +// Log funcion
 +#define PREFIXLEN	6	//prefix present in DEBUGMODE contains GetCurrentThreadId()
 +
  #ifdef DEBUGMODE
  void gg_debughandler(int level, const char *format, va_list ap)
  {
 @@ -487,7 +491,13 @@ void gg_debughandler(int level, const char *format, va_list ap)  	char *nl = strrchr(szFormat, '\n');
  	if (nl) *nl = 0;
 -	strncpy(szText, "[libgadu] \0", sizeof(szText));
 +	strncpy(szText + PREFIXLEN, "[libgadu] \0", sizeof(szText) - PREFIXLEN);
 +
 +	char prefix[6];
 +	mir_snprintf(prefix, PREFIXLEN, "%lu", GetCurrentThreadId());
 +	size_t prefixLen = strlen(prefix);
 +	if (prefixLen < PREFIXLEN) memset(prefix + prefixLen, ' ', PREFIXLEN - prefixLen);
 +	memcpy(szText, prefix, PREFIXLEN);
  	mir_vsnprintf(szText + strlen(szText), sizeof(szText) - strlen(szText), szFormat, ap);
  	CallService(MS_NETLIB_LOG, (WPARAM) NULL, (LPARAM) szText);
 @@ -495,17 +505,25 @@ void gg_debughandler(int level, const char *format, va_list ap)  }
  #endif
 -//////////////////////////////////////////////////////////
 -// Log funcion
  int GGPROTO::netlog(const char *fmt, ...)
  {
  	va_list va;
  	char szText[1024];
 +	memset(szText, '\0', PREFIXLEN + 1);
 +
 +#ifdef DEBUGMODE
 +	char prefix[6];
 +	mir_snprintf(prefix, PREFIXLEN, "%lu", GetCurrentThreadId());
 +	size_t prefixLen = strlen(prefix);
 +	if (prefixLen < PREFIXLEN) memset(prefix + prefixLen, ' ', PREFIXLEN - prefixLen);
 +	memcpy(szText, prefix, PREFIXLEN);
 +#endif
  	va_start(va, fmt);
 -	mir_vsnprintf(szText, sizeof(szText), fmt, va);
 +	mir_vsnprintf(szText + strlen(szText), sizeof(szText) - strlen(szText), fmt, va);
  	va_end(va);
 +
  	return CallService(MS_NETLIB_LOG, (WPARAM)netlib, (LPARAM) szText);
  }
 @@ -517,6 +535,7 @@ BOOL APIENTRY DllMain(HINSTANCE hInst, DWORD reason, LPVOID reserved)  	crc_gentable();
  	hInstance = hInst;
  #ifdef DEBUGMODE
 +	gg_debug_level = GG_DEBUG_FUNCTION;
  	gg_debug_handler = gg_debughandler;
  #endif
  	return TRUE;
 diff --git a/protocols/Gadu-Gadu/src/gg.h b/protocols/Gadu-Gadu/src/gg.h index 330f03c8cc..df2cc86b58 100644 --- a/protocols/Gadu-Gadu/src/gg.h +++ b/protocols/Gadu-Gadu/src/gg.h @@ -129,11 +129,6 @@ typedef struct  	char val[256];
  } GGTOKEN;
 -#if 0 /* #ifdef DEBUGMODE */
 -#define EnterCriticalSection(lpCS)	{netlog(gg,"EnterCriticalSection @ %s:%d", __FILE__, __LINE__); EnterCriticalSection(lpCS);}
 -#define LeaveCriticalSection(lpCS)	{netlog(gg,"LeaveCriticalSection @ %s:%d", __FILE__, __LINE__); LeaveCriticalSection(lpCS);}
 -#endif
 -
  // Wrappers of the old interface
  #define GGDEF_PROTO 	 "GG"        // Default Proto
 diff --git a/protocols/Gadu-Gadu/src/gg_proto.cpp b/protocols/Gadu-Gadu/src/gg_proto.cpp index 1659f0178d..c75f3e70ac 100644 --- a/protocols/Gadu-Gadu/src/gg_proto.cpp +++ b/protocols/Gadu-Gadu/src/gg_proto.cpp @@ -86,7 +86,7 @@ GGPROTO::GGPROTO(const char* pszProtoName, const TCHAR* tszUserName)  GGPROTO::~GGPROTO()
  {
  #ifdef DEBUGMODE
 -	netlog("gg_proto_uninit(): destroying protocol interface");
 +	netlog("~GGPROTO(): destroying protocol interface");
  #endif
  	// Destroy modules
 @@ -108,6 +108,9 @@ GGPROTO::~GGPROTO()  	DeleteCriticalSection(&modemsg_mutex);
  	DeleteCriticalSection(&avatar_mutex);
  	DeleteCriticalSection(&sessions_mutex);
 +#ifdef DEBUGMODE
 +	netlog("~GGPROTO(): DeleteCriticalSections. OK");
 +#endif
  	// Free status messages
  	if (modemsg.online)    mir_free(modemsg.online);
 @@ -144,6 +147,9 @@ int    GGPROTO::SendAwayMsg(HANDLE hContact, HANDLE hProcess, const char *msg) {  HANDLE GGPROTO::AddToList(int flags, PROTOSEARCHRESULT *psr)
  {
 +#ifdef DEBUGMODE
 +	netlog("AddToList(): id=%s");
 +#endif
  	GGSEARCHRESULT *sr = (GGSEARCHRESULT *)psr;
  	uin_t uin;
 @@ -210,9 +216,10 @@ HICON GGPROTO::GetIcon(int iconIndex)  void __cdecl GGPROTO::cmdgetinfothread(void *hContact)
  {
 -	SleepEx(100, FALSE);
 -	netlog("gg_cmdgetinfothread(): Failed info retreival.");
 +	netlog("cmdgetinfothread(): started. Failed info retreival.");
 +	gg_sleep(100, FALSE, "cmdgetinfothread", 103, 1);
  	ProtoBroadcastAck(m_szModuleName, hContact, ACKTYPE_GETINFO, ACKRESULT_FAILED, (HANDLE) 1, 0);
 +	netlog("cmdgetinfothread(): end.");
  }
  int GGPROTO::GetInfo(HANDLE hContact, int infoType)
 @@ -224,6 +231,9 @@ int GGPROTO::GetInfo(HANDLE hContact, int infoType)  	{
  		if (!(req = gg_pubdir50_new(GG_PUBDIR50_SEARCH)))
  		{
 +#ifdef DEBUGMODE
 +			netlog("GetInfo(): forkthread 6 GGPROTO::cmdgetinfothread");
 +#endif
  			forkthread(&GGPROTO::cmdgetinfothread, hContact);
  			return 1;
  		}
 @@ -232,17 +242,20 @@ int GGPROTO::GetInfo(HANDLE hContact, int infoType)  		gg_pubdir50_add(req, GG_PUBDIR50_UIN, ditoa((uin_t)db_get_dw(hContact, m_szModuleName, GG_KEY_UIN, 0)));
  		gg_pubdir50_seq_set(req, GG_SEQ_INFO);
 -		netlog("gg_getinfo(): Requesting user info.", req->seq);
 +		netlog("GetInfo(): Requesting user info.", req->seq);
  		if (isonline())
  		{
 -			EnterCriticalSection(&sess_mutex);
 +			gg_EnterCriticalSection(&sess_mutex, "GetInfo", 48, "sess_mutex", 1);
  			if (!gg_pubdir50(sess, req))
  			{
 -				LeaveCriticalSection(&sess_mutex);
 +				gg_LeaveCriticalSection(&sess_mutex, "GetInfo", 48, 1, "sess_mutex", 1);
 +#ifdef DEBUGMODE
 +				netlog("GetInfo(): forkthread 7 GGPROTO::cmdgetinfothread");
 +#endif
  				forkthread(&GGPROTO::cmdgetinfothread, hContact);
  				return 1;
  			}
 -			LeaveCriticalSection(&sess_mutex);
 +			gg_LeaveCriticalSection(&sess_mutex, "GetInfo", 48, 2, "sess_mutex", 1);
  		}
  	}
  	// Own contact info
 @@ -250,6 +263,9 @@ int GGPROTO::GetInfo(HANDLE hContact, int infoType)  	{
  		if (!(req = gg_pubdir50_new(GG_PUBDIR50_READ)))
  		{
 +#ifdef DEBUGMODE
 +			netlog("GetInfo(): forkthread 8 GGPROTO::cmdgetinfothread");
 +#endif
  			forkthread(&GGPROTO::cmdgetinfothread, hContact);
  			return 1;
  		}
 @@ -257,20 +273,23 @@ int GGPROTO::GetInfo(HANDLE hContact, int infoType)  		// Add seq
  		gg_pubdir50_seq_set(req, GG_SEQ_CHINFO);
 -		netlog("gg_getinfo(): Requesting owner info.", req->seq);
 +		netlog("GetInfo(): Requesting owner info.", req->seq);
  		if (isonline())
  		{
 -			EnterCriticalSection(&sess_mutex);
 +			gg_EnterCriticalSection(&sess_mutex, "GetInfo", 49, "sess_mutex", 1);
  			if (!gg_pubdir50(sess, req))
  			{
 -				LeaveCriticalSection(&sess_mutex);
 +				gg_LeaveCriticalSection(&sess_mutex, "GetInfo", 49, 1, "sess_mutex", 1);
 +#ifdef DEBUGMODE
 +				netlog("GetInfo(): forkthread 9 GGPROTO::cmdgetinfothread");
 +#endif
  				forkthread(&GGPROTO::cmdgetinfothread, hContact);
  				return 1;
  			}
 -			LeaveCriticalSection(&sess_mutex);
 +			gg_LeaveCriticalSection(&sess_mutex, "GetInfo", 49, 2, "sess_mutex", 1);
  		}
  	}
 -	netlog("gg_getinfo(): Seq %d.", req->seq);
 +	netlog("GetInfo(): Seq %d.", req->seq);
  	gg_pubdir50_free(req);
  	return 1;
 @@ -281,9 +300,12 @@ int GGPROTO::GetInfo(HANDLE hContact, int infoType)  void __cdecl GGPROTO::searchthread(void *)
  {
 -	SleepEx(100, FALSE);
 -	netlog("gg_searchthread(): Failed search.");
 +	netlog("searchthread(): started. Failed search.");
 +	gg_sleep(100, FALSE, "searchthread", 104, 1);
  	ProtoBroadcastAck(m_szModuleName, NULL, ACKTYPE_SEARCH, ACKRESULT_FAILED, (HANDLE)1, 0);
 +#ifdef DEBUGMODE
 +	netlog("searchthread(): end.");
 +#endif
  }
  HANDLE GGPROTO::SearchBasic(const PROTOCHAR *id)
 @@ -293,6 +315,9 @@ HANDLE GGPROTO::SearchBasic(const PROTOCHAR *id)  	gg_pubdir50_t req;
  	if (!(req = gg_pubdir50_new(GG_PUBDIR50_SEARCH))) {
 +#ifdef DEBUGMODE
 +		netlog("SearchBasic(): forkthread 10 GGPROTO::searchthread");
 +#endif
  		forkthread(&GGPROTO::searchthread, NULL);
  		return (HANDLE)1;
  	}
 @@ -305,15 +330,18 @@ HANDLE GGPROTO::SearchBasic(const PROTOCHAR *id)  	mir_free(ida);
 -	EnterCriticalSection(&sess_mutex);
 +	gg_EnterCriticalSection(&sess_mutex, "SearchBasic", 50, "sess_mutex", 1);
  	if (!gg_pubdir50(sess, req))
  	{
 -		LeaveCriticalSection(&sess_mutex);
 +		gg_LeaveCriticalSection(&sess_mutex, "SearchBasic", 50, 1, "sess_mutex", 1);
 +#ifdef DEBUGMODE
 +		netlog("SearchBasic(): forkthread 11 GGPROTO::searchthread");
 +#endif
  		forkthread(&GGPROTO::searchthread, NULL);
  		return (HANDLE)1;
  	}
 -	LeaveCriticalSection(&sess_mutex);
 -	netlog("gg_basicsearch(): Seq %d.", req->seq);
 +	gg_LeaveCriticalSection(&sess_mutex, "SearchBasic", 50, 2, "sess_mutex", 1);
 +	netlog("SearchBasic(): Seq %d.", req->seq);
  	gg_pubdir50_free(req);
  	return (HANDLE)1;
 @@ -337,6 +365,9 @@ HANDLE GGPROTO::SearchByName(const PROTOCHAR *nick, const PROTOCHAR *firstName,  	if (!(req = gg_pubdir50_new(GG_PUBDIR50_SEARCH)))
  	{
 +#ifdef DEBUGMODE
 +		netlog("SearchByName(): forkthread 12 GGPROTO::searchthread");
 +#endif
  		forkthread(&GGPROTO::searchthread, NULL);
  		return (HANDLE)1;
  	}
 @@ -378,16 +409,18 @@ HANDLE GGPROTO::SearchByName(const PROTOCHAR *nick, const PROTOCHAR *firstName,  		last_crc = crc;
  	gg_pubdir50_seq_set(req, GG_SEQ_SEARCH);
 -
 -	EnterCriticalSection(&sess_mutex);
 +	gg_EnterCriticalSection(&sess_mutex, "SearchByName", 51, "sess_mutex", 1);
  	if (!gg_pubdir50(sess, req))
  	{
 -		LeaveCriticalSection(&sess_mutex);
 +		gg_LeaveCriticalSection(&sess_mutex, "SearchByName", 51, 1, "sess_mutex", 1);
 +#ifdef DEBUGMODE
 +		netlog("SearchByName(): forkthread 13 GGPROTO::searchthread");
 +#endif
  		forkthread(&GGPROTO::searchthread, NULL);
  		return (HANDLE)1;
  	}
 -	LeaveCriticalSection(&sess_mutex);
 -	netlog("gg_searchbyname(): Seq %d.", req->seq);
 +	gg_LeaveCriticalSection(&sess_mutex, "SearchByName", 51, 2, "sess_mutex", 1);
 +	netlog("SearchByName(): Seq %d.", req->seq);
  	gg_pubdir50_free(req);
  	return (HANDLE)1;
 @@ -407,6 +440,9 @@ HWND GGPROTO::SearchAdvanced(HWND hwndDlg)  	if (!(req = gg_pubdir50_new(GG_PUBDIR50_SEARCH)))
  	{
 +#ifdef DEBUGMODE
 +		netlog("SearchAdvanced(): forkthread 14 GGPROTO::searchthread");
 +#endif
  		forkthread(&GGPROTO::searchthread, NULL);
  		return (HWND)1;
  	}
 @@ -508,16 +544,19 @@ HWND GGPROTO::SearchAdvanced(HWND hwndDlg)  	if (isonline())
  	{
 -		EnterCriticalSection(&sess_mutex);
 +		gg_EnterCriticalSection(&sess_mutex, "SearchAdvanced", 52, "sess_mutex", 1);
  		if (!gg_pubdir50(sess, req))
  		{
 -			LeaveCriticalSection(&sess_mutex);
 +			gg_LeaveCriticalSection(&sess_mutex, "SearchAdvanced", 52, 1, "sess_mutex", 1);
 +#ifdef DEBUGMODE
 +			netlog("SearchAdvanced(): forkthread 15 GGPROTO::searchthread");
 +#endif
  			forkthread(&GGPROTO::searchthread, NULL);
  			return (HWND)1;
  		}
 -		LeaveCriticalSection(&sess_mutex);
 +		gg_LeaveCriticalSection(&sess_mutex, "SearchAdvanced", 52, 2, "sess_mutex", 1);
  	}
 -	netlog("gg_searchbyadvanced(): Seq %d.", req->seq);
 +	netlog("SearchAdvanced(): Seq %d.", req->seq);
  	gg_pubdir50_free(req);
  	return (HWND)1;
 @@ -572,7 +611,7 @@ typedef struct  void __cdecl GGPROTO::sendackthread(void *ack)
  {
 -	SleepEx(100, FALSE);
 +	gg_sleep(100, FALSE, "sendackthread", 105, 1);
  	ProtoBroadcastAck(m_szModuleName, ((GG_SEQ_ACK *)ack)->hContact,
  		ACKTYPE_MESSAGE, ACKRESULT_SUCCESS, (HANDLE) ((GG_SEQ_ACK *)ack)->seq, 0);
  	mir_free(ack);
 @@ -585,9 +624,9 @@ int GGPROTO::SendMsg(HANDLE hContact, int flags, const char *msg)  	if (msg && isonline() && (uin = (uin_t)db_get_dw(hContact, m_szModuleName, GG_KEY_UIN, 0)))
  	{
  		int seq;
 -		EnterCriticalSection(&sess_mutex);
 +		gg_EnterCriticalSection(&sess_mutex, "SendMsg", 53, "sess_mutex", 1);
  		seq = gg_send_message(sess, GG_CLASS_CHAT, uin, (BYTE*)msg);
 -		LeaveCriticalSection(&sess_mutex);
 +		gg_LeaveCriticalSection(&sess_mutex, "SendMsg", 53, 1, "sess_mutex", 1);
  		if (!db_get_b(NULL, m_szModuleName, GG_KEY_MSGACK, GG_KEYDEF_MSGACK))
  		{
  			// Auto-ack message without waiting for server ack
 @@ -596,6 +635,9 @@ int GGPROTO::SendMsg(HANDLE hContact, int flags, const char *msg)  			{
  				ack->seq = seq;
  				ack->hContact = hContact;
 +#ifdef DEBUGMODE
 +				netlog("SendMsg(): forkthread 16 GGPROTO::sendackthread");
 +#endif
  				forkthread(&GGPROTO::sendackthread, ack);
  			}
  		}
 @@ -621,15 +663,15 @@ int GGPROTO::SetStatus(int iNewStatus)  {
  	int nNewStatus = gg_normalizestatus(iNewStatus);
 -	EnterCriticalSection(&modemsg_mutex);
 +	gg_EnterCriticalSection(&modemsg_mutex, "SetStatus", 54, "modemsg_mutex", 1);
  	m_iDesiredStatus = nNewStatus;
 -	LeaveCriticalSection(&modemsg_mutex);
 +	gg_LeaveCriticalSection(&modemsg_mutex, "SetStatus", 54, 1, "modemsg_mutex", 1);
  	// If waiting for connection retry attempt then signal to stop that
  	if (hConnStopEvent) SetEvent(hConnStopEvent);
  	if (m_iStatus == nNewStatus) return 0;
 -	netlog("gg_setstatus(): PS_SETSTATUS(%d) normalized to %d.", iNewStatus, nNewStatus);
 +	netlog("SetStatus(): PS_SETSTATUS(%d) normalized to %d.", iNewStatus, nNewStatus);
  	refreshstatus(nNewStatus);
  	return 0;
 @@ -642,19 +684,24 @@ void __cdecl GGPROTO::getawaymsgthread(void *hContact)  {
  	DBVARIANT dbv;
 -	SleepEx(100, FALSE);
 +	netlog("getawaymsgthread(): started");
 +	gg_sleep(100, FALSE, "getawaymsgthread", 106, 1);
  	if (!db_get_s(hContact, "CList", GG_KEY_STATUSDESCR, &dbv, DBVT_TCHAR))
  	{
  		ProtoBroadcastAck(m_szProtoName, hContact, ACKTYPE_AWAYMSG, ACKRESULT_SUCCESS, (HANDLE) 1, (LPARAM) dbv.ptszVal);
 -		netlog("gg_getawaymsg(): Reading away msg <" TCHAR_STR_PARAM ">.", dbv.ptszVal);
 +		netlog("getawaymsgthread(): Reading away msg <" TCHAR_STR_PARAM ">.", dbv.ptszVal);
  		DBFreeVariant(&dbv);
 -	}
 -	else
 +	} else {
  		ProtoBroadcastAck(m_szProtoName, hContact, ACKTYPE_AWAYMSG, ACKRESULT_SUCCESS, (HANDLE) 1, (LPARAM) NULL);
 +	}
 +	netlog("getawaymsgthread(): end");
  }
  HANDLE GGPROTO::GetAwayMsg(HANDLE hContact)
  {
 +#ifdef DEBUGMODE
 +	netlog("GetAwayMsg(): forkthread 17 GGPROTO::getawaymsgthread");
 +#endif
  	forkthread(&GGPROTO::getawaymsgthread, hContact);
  	return (HANDLE)1;
  }
 @@ -668,9 +715,9 @@ int GGPROTO::SetAwayMsg(int iStatus, const PROTOCHAR *msgt)  	char **szMsg;
  	char *msg = mir_t2a(msgt);
 -	netlog("gg_setawaymsg(): PS_SETAWAYMSG(%d, \"%s\").", iStatus, msg);
 +	netlog("SetAwayMsg(): PS_SETAWAYMSG(%d, \"%s\").", iStatus, msg);
 -	EnterCriticalSection(&modemsg_mutex);
 +	gg_EnterCriticalSection(&modemsg_mutex, "SetAwayMsg", 55, "modemsg_mutex", 1);
  	// Select proper msg
  	switch(status)
  	{
 @@ -690,7 +737,7 @@ int GGPROTO::SetAwayMsg(int iStatus, const PROTOCHAR *msgt)  			szMsg = &modemsg.invisible;
  			break;
  		default:
 -			LeaveCriticalSection(&modemsg_mutex);
 +			gg_LeaveCriticalSection(&modemsg_mutex, "SetAwayMsg", 55, 1, "modemsg_mutex", 1);
  			mir_free(msg);
  			return 1;
  	}
 @@ -701,8 +748,8 @@ int GGPROTO::SetAwayMsg(int iStatus, const PROTOCHAR *msgt)  	{
  		if (status == m_iDesiredStatus && m_iDesiredStatus == m_iStatus)
  		{
 -			netlog("gg_setawaymsg(): Message hasn't been changed, return.");
 -			LeaveCriticalSection(&modemsg_mutex);
 +			netlog("SetAwayMsg(): Message hasn't been changed, return.");
 +			gg_LeaveCriticalSection(&modemsg_mutex, "SetAwayMsg", 55, 2, "modemsg_mutex", 1);
  			mir_free(msg);
  			return 0;
  		}
 @@ -713,10 +760,10 @@ int GGPROTO::SetAwayMsg(int iStatus, const PROTOCHAR *msgt)  			mir_free(*szMsg);
  		*szMsg = msg && *msg ? mir_strdup(msg) : NULL;
  #ifdef DEBUGMODE
 -		netlog("gg_setawaymsg(): Message changed.");
 +		netlog("SetAwayMsg(): Message changed.");
  #endif
  	}
 -	LeaveCriticalSection(&modemsg_mutex);
 +	gg_LeaveCriticalSection(&modemsg_mutex, "SetAwayMsg", 55, 3, "modemsg_mutex", 1);
  	// Change the status if it was desired by PS_SETSTATUS
  	if (status == m_iDesiredStatus)
 @@ -736,9 +783,9 @@ int GGPROTO::UserIsTyping(HANDLE hContact, int type)  	if (!uin || !isonline()) return 0;
  	if (type == PROTOTYPE_SELFTYPING_ON || type == PROTOTYPE_SELFTYPING_OFF) {
 -		EnterCriticalSection(&sess_mutex);
 +		gg_EnterCriticalSection(&sess_mutex, "UserIsTyping", 56, "sess_mutex", 1);
  		gg_typing_notification(sess, uin, (type == PROTOTYPE_SELFTYPING_ON));
 -		LeaveCriticalSection(&sess_mutex);
 +		gg_LeaveCriticalSection(&sess_mutex, "UserIsTyping", 56, 1, "sess_mutex", 1);
  	}
  	return 0;
 @@ -772,7 +819,14 @@ int GGPROTO::OnEvent(PROTOEVENTTYPE eventType, WPARAM wParam, LPARAM lParam)  		uninitavatarrequestthread();
  		// Stop main connection session thread
 +#ifdef DEBUGMODE
 +	netlog("OnEvent(): EV_PROTO_ONEXIT: Waiting pth_sess thread.");
 +#endif
  		threadwait(&pth_sess);
 +#ifdef DEBUGMODE
 +	netlog("OnEvent(): EV_PROTO_ONEXIT: Waiting pth_sess thread - OK");
 +#endif
 +
  		img_shutdown();
  		sessions_closedlg();
  		break;
 diff --git a/protocols/Gadu-Gadu/src/gg_proto.h b/protocols/Gadu-Gadu/src/gg_proto.h index 8765392328..615fea1976 100644 --- a/protocols/Gadu-Gadu/src/gg_proto.h +++ b/protocols/Gadu-Gadu/src/gg_proto.h @@ -111,6 +111,10 @@ struct GGPROTO : public PROTO_INTERFACE, public MZeroedObject  	HANDLE forkthreadex(GGThreadFunc pFunc, void *param, UINT *threadId);
  	void threadwait(GGTHREAD *thread);
 +	void gg_EnterCriticalSection(CRITICAL_SECTION* mutex, char* callingFunction, int sectionNumber, char* mutexName, int logging);
 +	void gg_LeaveCriticalSection(CRITICAL_SECTION* mutex, char* callingFunction, int sectionNumber, int returnNumber, char* mutexName, int logging);
 +	void gg_sleep(DWORD miliseconds, BOOL alterable, char* callingFunction, int sleepNumber, int logging);
 +
  	/* Global GG functions */
  	void notifyuser(HANDLE hContact, int refresh);
  	void setalloffline();
 @@ -292,4 +296,36 @@ typedef struct  	GGPROTO *gg;
  } GGUSERUTILDLGDATA;
 +
 +inline void GGPROTO::gg_EnterCriticalSection(CRITICAL_SECTION* mutex, char* callingFunction, int sectionNumber, char* mutexName, int logging)
 +{
 +#ifdef DEBUGMODE
 +	int logAfter = 0;
 +	if(logging == 1 && mutex->LockCount != -1) {
 +		logAfter = 1;
 +		netlog("%s(): %i before EnterCriticalSection %s LockCount=%ld RecursionCount=%ld OwningThread=%ld", callingFunction, sectionNumber, mutexName, mutex->LockCount, mutex->RecursionCount, mutex->OwningThread);
 +	}
 +#endif
 +	EnterCriticalSection(mutex);
 +#ifdef DEBUGMODE
 +	if(logging == 1 && logAfter == 1) netlog("%s(): %i after EnterCriticalSection %s LockCount=%ld RecursionCount=%ld OwningThread=%ld", callingFunction, sectionNumber, mutexName, mutex->LockCount, mutex->RecursionCount, mutex->OwningThread);
 +#endif
 +}
 +
 +inline void GGPROTO::gg_LeaveCriticalSection(CRITICAL_SECTION* mutex, char* callingFunction, int sectionNumber, int returnNumber, char* mutexName, int logging) /*0-never, 1-debug, 2-all*/
 +{
 +#ifdef DEBUGMODE
 +	if(logging == 1) netlog("%s(): %i.%i LeaveCriticalSection %s", callingFunction, sectionNumber, returnNumber, mutexName);
 +#endif
 +	LeaveCriticalSection(mutex);
 +}
 +
 +inline void GGPROTO::gg_sleep(DWORD miliseconds, BOOL alterable, char* callingFunction, int sleepNumber, int logging){
 +	SleepEx(miliseconds, alterable);
 +#ifdef DEBUGMODE
 +	if(logging == 1) netlog("%s(): %i after SleepEx(%ld,%u)", callingFunction, sleepNumber, miliseconds, alterable);
 +#endif
 +}
 +
 +
  #endif
 diff --git a/protocols/Gadu-Gadu/src/groupchat.cpp b/protocols/Gadu-Gadu/src/groupchat.cpp index da85d86399..0117ce8805 100644 --- a/protocols/Gadu-Gadu/src/groupchat.cpp +++ b/protocols/Gadu-Gadu/src/groupchat.cpp @@ -48,10 +48,10 @@ int GGPROTO::gc_init()  		gc_enabled = TRUE;
  		// create & hook event
  		mir_snprintf(service, 64, GG_GC_GETCHAT, m_szModuleName);
 -		netlog("gg_gc_init(): Registered with groupchat plugin.");
 +		netlog("gc_init(): Registered with groupchat plugin.");
  	}
  	else
 -		netlog("gg_gc_init(): Cannot register with groupchat plugin !!!");
 +		netlog("gc_init(): Cannot register with groupchat plugin !!!");
  	return 1;
  }
 @@ -140,7 +140,7 @@ int GGPROTO::gc_event(WPARAM wParam, LPARAM lParam)  	if (gch->pDest->iType == SESSION_TERMINATE)
  	{
  		HANDLE hContact = NULL;
 -		netlog("gg_gc_event(): Terminating chat %x, id %s from chat window...", chat, gch->pDest->pszID);
 +		netlog("gc_event(): Terminating chat %x, id %s from chat window...", chat, gch->pDest->pszID);
  		// Destroy chat entry
  		free(chat->recipients);
  		list_remove(&chats, chat, 1);
 @@ -190,13 +190,13 @@ int GGPROTO::gc_event(WPARAM wParam, LPARAM lParam)  		gcevent.time = time(NULL);
  		gcevent.bIsMe = 1;
  		gcevent.dwFlags = GC_TCHAR | GCEF_ADDTOLOG;
 -		netlog("gg_gc_event(): Sending conference message to room %s, \"%s\".", gch->pDest->pszID, pszText);
 +		netlog("gc_event(): Sending conference message to room %s, \"%s\".", gch->pDest->pszID, pszText);
  		CallServiceSync(MS_GC_EVENT, 0, (LPARAM)&gcevent);
  		if (pszValT != NULL) mir_free(pszValT);;
 -		EnterCriticalSection(&sess_mutex);
 +		gg_EnterCriticalSection(&sess_mutex, "gc_event", 57, "sess_mutex", 1);
  		gg_send_message_confer(sess, GG_CLASS_CHAT, chat->recipients_count, chat->recipients, (BYTE*)pszText);
 -		LeaveCriticalSection(&sess_mutex);
 +		gg_LeaveCriticalSection(&sess_mutex, "gc_event", 57, 1, "sess_mutex", 1);
  		mir_free(pszText);
  		return 1;
 @@ -210,7 +210,7 @@ int GGPROTO::gc_event(WPARAM wParam, LPARAM lParam)  			CallService(MS_MSG_SENDMESSAGE, (WPARAM)hContact, 0);
  	}
  	char* pszText = mir_t2a(gch->ptszText);
 -	netlog("gg_gc_event(): Unhandled event %d, chat %x, uin %d, text \"%s\".", gch->pDest->iType, chat, uin, pszText);
 +	netlog("gc_event(): Unhandled event %d, chat %x, uin %d, text \"%s\".", gch->pDest->iType, chat, uin, pszText);
  	mir_free(pszText);
  	return 0;
 @@ -236,7 +236,7 @@ char* GGPROTO::gc_getchat(uin_t sender, uin_t *recipients, int recipients_count)  	GCDEST gcdest = {m_szModuleName, 0, GC_EVENT_ADDGROUP};
  	GCEVENT gcevent = {sizeof(GCEVENT), &gcdest};
 -	netlog("gg_gc_getchat(): Count %d.", recipients_count);
 +	netlog("gc_getchat(): Count %d.", recipients_count);
  	if (!recipients) return NULL;
  	// Look for existing chat
 @@ -262,9 +262,9 @@ char* GGPROTO::gc_getchat(uin_t sender, uin_t *recipients, int recipients_count)  			if (found == recipients_count)
  			{
  				if (chat->ignore)
 -					netlog("gg_gc_getchat(): Ignoring existing id %s, size %d.", chat->id, chat->recipients_count);
 +					netlog("gc_getchat(): Ignoring existing id %s, size %d.", chat->id, chat->recipients_count);
  				else
 -					netlog("gg_gc_getchat(): Returning existing id %s, size %d.", chat->id, chat->recipients_count);
 +					netlog("gc_getchat(): Returning existing id %s, size %d.", chat->id, chat->recipients_count);
  				return !(chat->ignore) ? chat->id : NULL;
  			}
  		}
 @@ -309,7 +309,7 @@ char* GGPROTO::gc_getchat(uin_t sender, uin_t *recipients, int recipients_count)  			for(i = 0; i < recipients_count; i++)
  				chat->recipients[i] = recipients[i];
  			if (sender) chat->recipients[i] = sender;
 -			netlog("gg_gc_getchat(): Ignoring new chat %s, count %d.", chat->id, chat->recipients_count);
 +			netlog("gc_getchat(): Ignoring new chat %s, count %d.", chat->id, chat->recipients_count);
  			list_add(&chats, chat, 0);
  			return NULL;
  		}
 @@ -336,7 +336,7 @@ char* GGPROTO::gc_getchat(uin_t sender, uin_t *recipients, int recipients_count)  	// Create new room
  	if (CallServiceSync(MS_GC_NEWSESSION, 0, (LPARAM) &gcwindow))
  	{
 -		netlog("gg_gc_getchat(): Cannot create new chat window %s.", chat->id);
 +		netlog("gc_getchat(): Cannot create new chat window %s.", chat->id);
  		free(name);
  		free(chat);
  		return NULL;
 @@ -364,9 +364,9 @@ char* GGPROTO::gc_getchat(uin_t sender, uin_t *recipients, int recipients_count)  		else gcevent.ptszNick = TranslateT("Me");
  		gcevent.bIsMe = 1;
  		CallServiceSync(MS_GC_EVENT, 0, (LPARAM)&gcevent);
 -		netlog("gg_gc_getchat(): Myself %s: %S (%S) to the list...", gcevent.pszUID, gcevent.ptszNick, gcevent.ptszStatus);
 +		netlog("gc_getchat(): Myself %s: %S (%S) to the list...", gcevent.pszUID, gcevent.ptszNick, gcevent.ptszStatus);
  	}
 -	else netlog("gg_gc_getchat(): Myself adding failed with uin %d !!!", uin);
 +	else netlog("gc_getchat(): Myself adding failed with uin %d !!!", uin);
  	// Copy recipient list
  	chat->recipients_count = recipients_count + (sender ? 1 : 0);
 @@ -385,14 +385,14 @@ char* GGPROTO::gc_getchat(uin_t sender, uin_t *recipients, int recipients_count)  			gcevent.ptszNick = TranslateT("'Unknown'");
  		gcevent.bIsMe = 0;
  		gcevent.dwFlags = GC_TCHAR;
 -		netlog("gg_gc_getchat(): Added %s: %S (%S) to the list...", gcevent.pszUID, gcevent.ptszNick, gcevent.pszStatus);
 +		netlog("gc_getchat(): Added %s: %S (%S) to the list...", gcevent.pszUID, gcevent.ptszNick, gcevent.pszStatus);
  		CallServiceSync(MS_GC_EVENT, 0, (LPARAM)&gcevent);
  	}
  	gcdest.iType = GC_EVENT_CONTROL;
  	CallServiceSync(MS_GC_EVENT, SESSION_INITDONE, (LPARAM)&gcevent);
  	CallServiceSync(MS_GC_EVENT, SESSION_ONLINE, (LPARAM)&gcevent);
 -	netlog("gg_gc_getchat(): Returning new chat window %s, count %d.", chat->id, chat->recipients_count);
 +	netlog("gc_getchat(): Returning new chat window %s, count %d.", chat->id, chat->recipients_count);
  	list_add(&chats, chat, 0);
  	return chat->id;
  }
 @@ -488,7 +488,7 @@ static INT_PTR CALLBACK gg_gc_openconfdlg(HWND hwndDlg, UINT message, WPARAM wPa  						char* chat;
  						uin_t* participants = (uin_t*)calloc(count, sizeof(uin_t));
  						HANDLE hItem, hContact = db_find_first();
 -						gg->netlog("gg_gc_getchat(): Opening new conference for %d contacts.", count);
 +						gg->netlog("gg_gc_openconfdlg(): WM_COMMAND IDOK Opening new conference for %d contacts.", count);
  						while (hContact && i < count)
  						{
  							hItem = (HANDLE)SendMessage(hwndList, CLM_FINDCONTACT, (WPARAM)hContact, 0);
 @@ -649,7 +649,7 @@ int GGPROTO::gc_changenick(HANDLE hContact, char *pszNick)  	uin_t uin = db_get_dw(hContact, m_szModuleName, GG_KEY_UIN, 0);
  	if (!uin || !pszNick) return 0;
 -	netlog("gg_gc_changenick(): Nickname for uin %d changed to %s.", uin, pszNick);
 +	netlog("gc_changenick(): Nickname for uin %d changed to %s.", uin, pszNick);
  	// Lookup for chats having this nick
  	for(l = chats; l; l = l->next) {
  		GGGC *chat = (GGGC *)l->data;
 @@ -669,7 +669,7 @@ int GGPROTO::gc_changenick(HANDLE hContact, char *pszNick)  					gcd.pszID = chat->id;
  					gce.pszUID = id;
  					gce.pszText = pszNick;
 -					netlog("gg_gc_changenick(): Found room %s with uin %d, sending nick change %s.", chat->id, uin, id);
 +					netlog("gc_changenick(): Found room %s with uin %d, sending nick change %s.", chat->id, uin, id);
  					CallServiceSync(MS_GC_EVENT, 0, (LPARAM)&gce);
  					break;
 diff --git a/protocols/Gadu-Gadu/src/image.cpp b/protocols/Gadu-Gadu/src/image.cpp index 2567838406..9a6b934054 100644 --- a/protocols/Gadu-Gadu/src/image.cpp +++ b/protocols/Gadu-Gadu/src/image.cpp @@ -97,7 +97,7 @@ int GGPROTO::img_shutdown()  {
  	list_t l;
  #ifdef DEBUGMODE
 -	netlog("gg_img_shutdown(): Closing all dialogs...");
 +	netlog("img_shutdown(): Closing all dialogs...");
  #endif
  	// Rather destroy window instead of just removing structures
  	for (l = imagedlgs; l;)
 @@ -111,10 +111,10 @@ int GGPROTO::img_shutdown()  			{
  				// Post message async, since it maybe be different thread
  				if (!PostMessage(dat->hWnd, WM_CLOSE, 0, 0))
 -					netlog("gg_img_shutdown(): Image dlg %x cannot be released !!", dat->hWnd);
 +					netlog("img_shutdown(): Image dlg %x cannot be released !!", dat->hWnd);
  			}
  			else
 -				netlog("gg_img_shutdown(): Image dlg %x not exists, but structure does !!", dat->hWnd);
 +				netlog("img_shutdown(): Image dlg %x not exists, but structure does !!", dat->hWnd);
  		}
  	}
 @@ -403,7 +403,7 @@ static INT_PTR CALLBACK gg_img_dlgproc(HWND hwndDlg, UINT msg, WPARAM wParam, LP  			// Send event if someone's waiting
  			if (dat->hEvent) SetEvent(dat->hEvent);
 -			else dat->gg->netlog("gg_img_dlgproc(): Creation event not found, but someone might be waiting.");
 +			else dat->gg->netlog("gg_img_dlgproc(): WM_INITDIALOG Creation event not found, but someone might be waiting.");
  			// Making buttons flat
  			SendDlgItemMessage(hwndDlg, IDC_IMG_PREV,	BUTTONSETASFLATBTN, TRUE, 0);
 @@ -504,7 +504,7 @@ static INT_PTR CALLBACK gg_img_dlgproc(HWND hwndDlg, UINT msg, WPARAM wParam, LP  			if (!img)
  			{
 -				dat->gg->netlog("gg_img_dlgproc(): Image was not found on the list. Cannot paint the window.");
 +				dat->gg->netlog("gg_img_dlgproc(): WM_PAINT Image was not found on the list. Cannot paint the window.");
  				return FALSE;
  			}
 @@ -536,9 +536,9 @@ static INT_PTR CALLBACK gg_img_dlgproc(HWND hwndDlg, UINT msg, WPARAM wParam, LP  			ReleaseIconEx("delete", FALSE);
  			ReleaseIconEx("save", FALSE);
  			WindowFreeIcon(hwndDlg);
 -			EnterCriticalSection(&gg->img_mutex);
 +			gg->gg_EnterCriticalSection(&gg->img_mutex, "gg_img_dlgproc", 58, "img_mutex", 1);
  			list_remove(&gg->imagedlgs, dat, 1);
 -			LeaveCriticalSection(&gg->img_mutex);
 +			gg->gg_LeaveCriticalSection(&gg->img_mutex, "gg_img_dlgproc", 58, 1, "img_mutex", 1);
  		}
  		return TRUE;
 @@ -580,7 +580,7 @@ static INT_PTR CALLBACK gg_img_dlgproc(HWND hwndDlg, UINT msg, WPARAM wParam, LP  						img = img->lpNext;
  					if (!img)
  					{
 -						dat->gg->netlog("gg_img_dlgproc(): Image was not found on the list. Cannot delete it from the list.");
 +						dat->gg->netlog("gg_img_dlgproc(): IDC_IMG_DELETE Image was not found on the list. Cannot delete it from the list.");
  						return FALSE;
  					}
  					del = img->lpNext;
 @@ -606,7 +606,7 @@ static INT_PTR CALLBACK gg_img_dlgproc(HWND hwndDlg, UINT msg, WPARAM wParam, LP  					img = img->lpNext;
  				if (!img)
  				{
 -					dat->gg->netlog("gg_img_dlgproc(): Image was not found on the list. Cannot launch saving.");
 +					dat->gg->netlog("gg_img_dlgproc(): IDC_IMG_SAVE Image was not found on the list. Cannot launch saving.");
  					return FALSE;
  				}
  				gg_img_saveimage(hwndDlg, img);
 @@ -642,9 +642,9 @@ static INT_PTR CALLBACK gg_img_dlgproc(HWND hwndDlg, UINT msg, WPARAM wParam, LP  					len = sizeof(struct gg_msg_richtext_format) + sizeof(struct gg_msg_richtext_image);
  					((struct gg_msg_richtext*)format)->length = len;
 -					EnterCriticalSection(&gg->sess_mutex);
 +					gg->gg_EnterCriticalSection(&gg->sess_mutex, "gg_img_dlgproc", 59, "sess_mutex", 1);
  					gg_send_message_richtext(gg->sess, GG_CLASS_CHAT, (uin_t)uin, (unsigned char*)msg, format, len + sizeof(struct gg_msg_richtext));
 -					LeaveCriticalSection(&gg->sess_mutex);
 +					gg->gg_LeaveCriticalSection(&gg->sess_mutex, "gg_img_dlgproc", 59, 1, "sess_mutex", 1);
  					// Protect dat from releasing
  					SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)0);
 @@ -724,9 +724,14 @@ void __cdecl GGPROTO::img_dlgcallthread(void *param)  {
  	HWND hMIWnd = 0; //(HWND) CallService(MS_CLUI_GETHWND, 0, 0);
 +	netlog("img_dlgcallthread(): started.");
  	GGIMAGEDLGDATA *dat = (GGIMAGEDLGDATA *)param;
  	DialogBoxParam(hInstance, dat->bReceiving ? MAKEINTRESOURCE(IDD_IMAGE_RECV) : MAKEINTRESOURCE(IDD_IMAGE_SEND),
  		hMIWnd, gg_img_dlgproc, (LPARAM) dat);
 +#ifdef DEBUGMODE
 +	netlog("img_dlgcallthread(): end.");
 +#endif
 +
  }
  ////////////////////////////////////////////////////////////////////////////
 @@ -740,6 +745,9 @@ GGIMAGEDLGDATA *gg_img_recvdlg(GGPROTO *gg, HANDLE hContact)  	dat->bReceiving = TRUE;
  	dat->gg = gg;
  	ResetEvent(dat->hEvent);
 +#ifdef DEBUGMODE
 +	gg->netlog("gg_img_recvdlg(): forkthread 18 GGPROTO::img_dlgcallthread");
 +#endif
  	gg->forkthread(&GGPROTO::img_dlgcallthread, dat);
  	return dat;
  }
 @@ -855,11 +863,11 @@ int GGPROTO::img_displayasmsg(HANDLE hContact, void *img)  		pre.timestamp = time(NULL);
  		pre.szMessage = image_msg;
  		CallService(MS_PROTO_CHAINRECV, 0, (LPARAM) &ccs);
 -		netlog("gg_img_displayasmsg: Image saved to %s.", szPath);
 +		netlog("img_displayasmsg(): Image saved to %s.", szPath);
  	}
  	else
  	{
 -		netlog("gg_img_displayasmsg: Cannot save image to %s.", szPath);
 +		netlog("img_displayasmsg(): Cannot save image to %s.", szPath);
  	}
  	return 0;
 @@ -892,7 +900,7 @@ int GGPROTO::img_display(HANDLE hContact, void *img)  	if (!img) return FALSE;
  	// Look for already open dialog
 -	EnterCriticalSection(&img_mutex);
 +	gg_EnterCriticalSection(&img_mutex, "img_display", 60, "img_mutex", 1);
  	while (l)
  	{
  		dat = (GGIMAGEDLGDATA *)l->data;
 @@ -914,7 +922,7 @@ int GGPROTO::img_display(HANDLE hContact, void *img)  		list_add(&imagedlgs, dat, 0);
  	}
 -	LeaveCriticalSection(&img_mutex);
 +	gg_LeaveCriticalSection(&img_mutex, "img_display", 60, 1, "img_mutex", 1);
  	SendMessage(dat->hWnd, WM_ADDIMAGE, 0, (LPARAM)img);
  	if (/*db_get_b(NULL, "Chat", "FlashWindowHighlight", 0) != 0 && */
 @@ -969,7 +977,7 @@ void* GGPROTO::img_loadpicture(gg_event* e, TCHAR *szFileName)  		FILE *fp = _tfopen(szFileName, _T("rb"));
  		if (!fp) {
  			free(dat);
 -			netlog("gg_img_loadpicture(): fopen(\"%s\", \"rb\") failed.", szFileName);
 +			netlog("img_loadpicture(): fopen(\"%s\", \"rb\") failed.", szFileName);
  			return NULL;
  		}
  		fseek(fp, 0, SEEK_END);
 @@ -978,7 +986,7 @@ void* GGPROTO::img_loadpicture(gg_event* e, TCHAR *szFileName)  		{
  			fclose(fp);
  			free(dat);
 -			netlog("gg_img_loadpicture(): Zero file size \"%s\" failed.", szFileName);
 +			netlog("img_loadpicture(): Zero file size \"%s\" failed.", szFileName);
  			return NULL;
  		}
  		// Maximum acceptable image size
 @@ -986,7 +994,7 @@ void* GGPROTO::img_loadpicture(gg_event* e, TCHAR *szFileName)  		{
  			fclose(fp);
  			free(dat);
 -			netlog("gg_img_loadpicture(): Image size of \"%s\" exceeds 255 KB.", szFileName);
 +			netlog("img_loadpicture(): Image size of \"%s\" exceeds 255 KB.", szFileName);
  			MessageBox(NULL, TranslateT("Image exceeds maximum allowed size of 255 KB."), m_tszUserName, MB_OK | MB_ICONEXCLAMATION);
  			return NULL;
  		}
 @@ -997,7 +1005,7 @@ void* GGPROTO::img_loadpicture(gg_event* e, TCHAR *szFileName)  			free(dat->lpData);
  			fclose(fp);
  			free(dat);
 -			netlog("gg_img_loadpicture(): Reading file \"%s\" failed.", szFileName);
 +			netlog("img_loadpicture(): Reading file \"%s\" failed.", szFileName);
  			return NULL;
  		}
  		fclose(fp);
 @@ -1047,7 +1055,7 @@ void* GGPROTO::img_loadpicture(gg_event* e, TCHAR *szFileName)  	// If everything is fine return the handle
  	if (dat->hBitmap) return dat;
 -	netlog("gg_img_loadpicture(): MS_IMG_LOAD(MEM) failed.");
 +	netlog("img_loadpicture(): MS_IMG_LOAD(MEM) failed.");
  	if (dat)
  	{
  		if (dat->lpData)
 @@ -1066,7 +1074,7 @@ INT_PTR GGPROTO::img_recvimage(WPARAM wParam, LPARAM lParam)  	CLISTEVENT *cle = (CLISTEVENT *)lParam;
  	GGIMAGEENTRY *img = (GGIMAGEENTRY *)cle->lParam;
 -	netlog("gg_img_recvimage(%x, %x): Popup new image.", wParam, lParam);
 +	netlog("img_recvimage(%x, %x): Popup new image.", wParam, lParam);
  	if (!img) return FALSE;
  	img_display(cle->hContact, img);
 @@ -1088,7 +1096,7 @@ int gg_img_remove(GGIMAGEDLGDATA *dat)  	if (!dat) return FALSE;
  	gg = dat->gg;
 -	EnterCriticalSection(&gg->img_mutex);
 +	gg->gg_EnterCriticalSection(&gg->img_mutex, "gg_img_remove", 61, "img_mutex", 1);
  	// Remove the structure
  	img = dat->lpImages;
 @@ -1102,7 +1110,7 @@ int gg_img_remove(GGIMAGEDLGDATA *dat)  	// Remove from list
  	list_remove(&gg->imagedlgs, dat, 1);
 -	LeaveCriticalSection(&gg->img_mutex);
 +	gg->gg_LeaveCriticalSection(&gg->img_mutex, "gg_img_remove", 61, 1, "img_mutex", 1);
  	return TRUE;
  }
 @@ -1115,7 +1123,7 @@ GGIMAGEDLGDATA* gg_img_find(GGPROTO *gg, uin_t uin, uint32_t crc32)  	list_t l = gg->imagedlgs;
  	GGIMAGEDLGDATA *dat;
 -	EnterCriticalSection(&gg->img_mutex);
 +	gg->gg_EnterCriticalSection(&gg->img_mutex, "gg_img_find", 62, "img_mutex", 1);
  	while (l)
  	{
  		uin_t c_uin;
 @@ -1127,13 +1135,13 @@ GGIMAGEDLGDATA* gg_img_find(GGPROTO *gg, uin_t uin, uint32_t crc32)  		if (!dat->bReceiving && dat->lpImages && dat->lpImages->crc32 == crc32 && c_uin == uin)
  		{
 -			LeaveCriticalSection(&gg->img_mutex);
 +			gg->gg_LeaveCriticalSection(&gg->img_mutex, "gg_img_find", 62, 1, "img_mutex", 1);
  			return dat;
  		}
  		l = l->next;
  	}
 -	LeaveCriticalSection(&gg->img_mutex);
 +	gg->gg_LeaveCriticalSection(&gg->img_mutex, "gg_img_find", 62, 2, "img_mutex", 1);
  	gg->netlog("gg_img_find(): Image not found on the list. It might be released before calling this function.");
  	return NULL;
 @@ -1149,11 +1157,11 @@ BOOL GGPROTO::img_sendonrequest(gg_event* e)  	if (!this || !dat || !isonline())
  		return FALSE;
 -    char* lpszFileNameA = mir_t2a(dat->lpImages->lpszFileName);
 -	EnterCriticalSection(&sess_mutex);
 +	char* lpszFileNameA = mir_t2a(dat->lpImages->lpszFileName);
 +	gg_EnterCriticalSection(&sess_mutex, "img_sendonrequest", 63, "sess_mutex", 1);
  	gg_image_reply(sess, e->event.image_request.sender, lpszFileNameA, dat->lpImages->lpData, dat->lpImages->nSize);
 -	LeaveCriticalSection(&sess_mutex);
 -    mir_free(lpszFileNameA);
 +	gg_LeaveCriticalSection(&sess_mutex, "img_sendonrequest", 63, 1, "sess_mutex", 1);
 +	mir_free(lpszFileNameA);
  	gg_img_remove(dat);
 @@ -1168,7 +1176,7 @@ INT_PTR GGPROTO::img_sendimg(WPARAM wParam, LPARAM lParam)  	HANDLE hContact = (HANDLE)wParam;
  	GGIMAGEDLGDATA *dat = NULL;
 -	EnterCriticalSection(&img_mutex);
 +	gg_EnterCriticalSection(&img_mutex, "img_sendimg", 64, "img_mutex", 1);
  	if (!dat)
  	{
  		dat = (GGIMAGEDLGDATA *)calloc(1, sizeof(GGIMAGEDLGDATA));
 @@ -1178,6 +1186,9 @@ INT_PTR GGPROTO::img_sendimg(WPARAM wParam, LPARAM lParam)  		ResetEvent(dat->hEvent);
  		// Create new dialog
 +#ifdef DEBUGMODE
 +		netlog("img_sendimg(): forkthread 19 GGPROTO::img_dlgcallthread");
 +#endif
  		forkthread(&GGPROTO::img_dlgcallthread, dat);
  		while (WaitForSingleObjectEx(dat->hEvent, INFINITE, TRUE) != WAIT_OBJECT_0);
 @@ -1189,7 +1200,7 @@ INT_PTR GGPROTO::img_sendimg(WPARAM wParam, LPARAM lParam)  	// Request choose dialog
  	SendMessage(dat->hWnd, WM_CHOOSEIMG, 0, 0);
 -	LeaveCriticalSection(&img_mutex);
 +	gg_LeaveCriticalSection(&img_mutex, "img_sendimg", 64, 1, "img_mutex", 1);
  	return 0;
  }
 diff --git a/protocols/Gadu-Gadu/src/import.cpp b/protocols/Gadu-Gadu/src/import.cpp index 7fcb8b0df8..3ccc95c7fe 100644 --- a/protocols/Gadu-Gadu/src/import.cpp +++ b/protocols/Gadu-Gadu/src/import.cpp @@ -284,7 +284,7 @@ void GGPROTO::parsecontacts(char *contacts)  		{
  			HANDLE hContact = getcontact(uin, 1, 1, _A2T(strNick));
  #ifdef DEBUGMODE
 -			netlog("gg_parsecontacts(): Found contact %d with nickname \"%s\".", uin, strNick);
 +			netlog("parsecontacts(): Found contact %d with nickname \"%s\".", uin, strNick);
  #endif
  			// Write group
  			if (hContact && strGroup)
 @@ -341,16 +341,16 @@ INT_PTR GGPROTO::import_server(WPARAM wParam, LPARAM lParam)  		return 0;
  	// Making contacts list
 -	EnterCriticalSection(&sess_mutex);
 +	gg_EnterCriticalSection(&sess_mutex, "import_server", 65, "sess_mutex", 1);
  	if (gg_userlist_request(sess, GG_USERLIST_GET, NULL) == -1)
  	{
  		TCHAR error[128];
 -		LeaveCriticalSection(&sess_mutex);
 +		gg_LeaveCriticalSection(&sess_mutex, "import_server", 65, 1, "sess_mutex", 1);
  		mir_sntprintf(error, SIZEOF(error), TranslateT("List cannot be imported because of error:\n\t%s"), _tcserror(errno));
  		MessageBox(NULL, error, m_tszUserName, MB_OK | MB_ICONSTOP);
 -		netlog("gg_import_server(): Cannot import list because of \"%s\".", strerror(errno));
 +		netlog("import_server(): Cannot import list because of \"%s\".", strerror(errno));
  	}
 -	LeaveCriticalSection(&sess_mutex);
 +	gg_LeaveCriticalSection(&sess_mutex, "import_server", 65, 2, "sess_mutex", 1);
  	free(password);
  	return 0;
 @@ -388,16 +388,16 @@ INT_PTR GGPROTO::remove_server(WPARAM wParam, LPARAM lParam)  		return 0;
  	// Making contacts list
 -	EnterCriticalSection(&sess_mutex);
 +	gg_EnterCriticalSection(&sess_mutex, "remove_server", 66, "sess_mutex", 1);
  	if (gg_userlist_request(sess, GG_USERLIST_PUT, NULL) == -1)
  	{
  		TCHAR error[128];
 -		LeaveCriticalSection(&sess_mutex);
 +		gg_LeaveCriticalSection(&sess_mutex, "remove_server", 66, 1, "sess_mutex", 1);
  		mir_sntprintf(error, SIZEOF(error), TranslateT("List cannot be removeed because of error:\n\t%s"), _tcserror(errno));
  		MessageBox(NULL, error, m_tszUserName, MB_OK | MB_ICONSTOP);
 -		netlog("gg_remove_server(): Cannot remove list because of \"%s\".", strerror(errno));
 +		netlog("remove_server(): Cannot remove list because of \"%s\".", strerror(errno));
  	}
 -	LeaveCriticalSection(&sess_mutex);
 +	gg_LeaveCriticalSection(&sess_mutex, "remove_server", 66, 2, "sess_mutex", 1);
  	// Set list removal
  	is_list_remove = TRUE;
 @@ -446,7 +446,7 @@ INT_PTR GGPROTO::import_text(WPARAM wParam, LPARAM lParam)  	ofn.lpstrDefExt = _T("txt");
  #ifdef DEBUGMODE
 -	netlog("gg_import_text()");
 +	netlog("import_text()");
  #endif
  	if (!GetOpenFileName(&ofn)) return 0;
 @@ -468,7 +468,7 @@ INT_PTR GGPROTO::import_text(WPARAM wParam, LPARAM lParam)  		TCHAR error[128];
  		mir_sntprintf(error, SIZEOF(error), TranslateT("List cannot be imported from file \"%s\" because of error:\n\t%s"), str, _tcserror(errno));
  		MessageBox(NULL, error, m_tszUserName, MB_OK | MB_ICONSTOP);
 -		netlog("gg_import_text(): Cannot import list from file \"%S\" because of \"%s\".", str, strerror(errno));
 +		netlog("import_text(): Cannot import list from file \"%S\" because of \"%s\".", str, strerror(errno));
  	}
  	return 0;
 @@ -512,7 +512,7 @@ INT_PTR GGPROTO::export_text(WPARAM wParam, LPARAM lParam)  	ofn.lpstrDefExt = _T("txt");
  #ifdef DEBUGMODE
 -	netlog("gg_export_text(%s).", str);
 +	netlog("export_text(%s).", str);
  #endif
  	if (!GetSaveFileName(&ofn)) return 0;
 @@ -529,7 +529,7 @@ INT_PTR GGPROTO::export_text(WPARAM wParam, LPARAM lParam)  		TCHAR error[128];
  		mir_sntprintf(error, SIZEOF(error), TranslateT("List cannot be exported to file \"%s\" because of error:\n\t%s"), str, _tcserror(errno));
  		MessageBox(NULL, error, m_tszUserName, MB_OK | MB_ICONSTOP);
 -		netlog("gg_import_text(): Cannot export list to file \"%s\" because of \"%s\".", str, strerror(errno));
 +		netlog("export_text(): Cannot export list to file \"%s\" because of \"%s\".", str, strerror(errno));
  	}
  	return 0;
 @@ -570,19 +570,19 @@ INT_PTR GGPROTO::export_server(WPARAM wParam, LPARAM lParam)  	contacts = gg_makecontacts(this, 1);
  #ifdef DEBUGMODE
 -		netlog("gg_userlist_request(%s).", contacts);
 +		netlog("export_server(): gg_userlist_request(%s).", contacts);
  #endif
 -	EnterCriticalSection(&sess_mutex);
 +	gg_EnterCriticalSection(&sess_mutex, "export_server", 67, "sess_mutex", 1);
  	if (gg_userlist_request(sess, GG_USERLIST_PUT, contacts) == -1)
  	{
  		TCHAR error[128];
 -		LeaveCriticalSection(&sess_mutex);
 +		gg_LeaveCriticalSection(&sess_mutex, "export_server", 67, 1, "sess_mutex", 1);
  		mir_sntprintf(error, SIZEOF(error), TranslateT("List cannot be exported because of error:\n\t%s"), _tcserror(errno));
  		MessageBox(NULL, error, m_tszUserName, MB_OK | MB_ICONSTOP);
 -		netlog("gg_export_server(): Cannot export list because of \"%s\".", strerror(errno));
 +		netlog("export_server(): Cannot export list because of \"%s\".", strerror(errno));
  	}
 -	LeaveCriticalSection(&sess_mutex);
 +	gg_LeaveCriticalSection(&sess_mutex, "export_server", 67, 2, "sess_mutex", 1);
  	// Set list removal
  	is_list_remove = FALSE;
 diff --git a/protocols/Gadu-Gadu/src/keepalive.cpp b/protocols/Gadu-Gadu/src/keepalive.cpp index 02b661c222..d7b0dbc685 100644 --- a/protocols/Gadu-Gadu/src/keepalive.cpp +++ b/protocols/Gadu-Gadu/src/keepalive.cpp @@ -41,11 +41,11 @@ static VOID CALLBACK gg_keepalive(HWND hwnd, UINT message, UINT_PTR idEvent, DWO  		if (gg->isonline())
  		{
  	#ifdef DEBUGMODE
 -			gg->netlog("Sending keep-alive");
 +			gg->netlog("gg_keepalive(): Sending keep-alive");
  	#endif
 -			EnterCriticalSection(&gg->sess_mutex);
 +			gg->gg_EnterCriticalSection(&gg->sess_mutex, "gg_keepalive", 68, "sess_mutex", 1);
  			gg_ping(gg->sess);
 -			LeaveCriticalSection(&gg->sess_mutex);
 +			gg->gg_LeaveCriticalSection(&gg->sess_mutex, "gg_keepalive", 68, 1, "sess_mutex", 1);
  		}
  	}
  }
 @@ -59,7 +59,7 @@ void GGPROTO::keepalive_init()  		if (i < MAX_TIMERS)
  		{
  	#ifdef DEBUGMODE
 -			netlog("gg_keepalive_init(): Initializing Timer %d", i);
 +			netlog("keepalive_init(): Initializing Timer %d", i);
  	#endif
  			timer = SetTimer(NULL, 0, 1000 * 30, gg_keepalive);
  			g_timers[i] = this;
 @@ -70,7 +70,7 @@ void GGPROTO::keepalive_init()  void GGPROTO::keepalive_destroy()
  {
  #ifdef DEBUGMODE
 -	netlog("gg_destroykeepalive(): Killing Timer");
 +	netlog("keepalive_destroy(): Killing Timer");
  #endif
  	if (timer)
  	{
 @@ -83,10 +83,10 @@ void GGPROTO::keepalive_destroy()  			}
  		timer = 0;
  #ifdef DEBUGMODE
 -		netlog("gg_destroykeepalive(): Killed Timer %d", i);
 +		netlog("keepalive_destroy(): Killed Timer %d", i);
  #endif
  	}
  #ifdef DEBUGMODE
 -	netlog("gg_destroykeepalive(): End");
 +	netlog("keepalive_destroy(): End");
  #endif
  }
 diff --git a/protocols/Gadu-Gadu/src/oauth.cpp b/protocols/Gadu-Gadu/src/oauth.cpp index 43983edb6d..007e364507 100644 --- a/protocols/Gadu-Gadu/src/oauth.cpp +++ b/protocols/Gadu-Gadu/src/oauth.cpp @@ -403,7 +403,7 @@ int GGPROTO::oauth_receivetoken()  	}
  	// 1. Obtaining an Unauthorized Request Token
 -	netlog("gg_oauth_receivetoken(): Obtaining an Unauthorized Request Token...");
 +	netlog("oauth_receivetoken(): Obtaining an Unauthorized Request Token...");
  	strcpy(szUrl, "http://api.gadu-gadu.pl/request_token");
  	str = oauth_auth_header("POST", szUrl, HMACSHA1, uin, password, NULL, NULL);
 @@ -447,13 +447,13 @@ int GGPROTO::oauth_receivetoken()  			mir_free(tag);
  			mir_free(xmlAction);
  		}
 -		else netlog("gg_oauth_receivetoken(): Invalid response code from HTTP request");
 +		else netlog("oauth_receivetoken(): Invalid response code from HTTP request");
  		CallService(MS_NETLIB_FREEHTTPREQUESTSTRUCT, 0, (LPARAM)resp);
  	}
 -	else netlog("gg_oauth_receivetoken(): No response from HTTP request");
 +	else netlog("oauth_receivetoken(): No response from HTTP request");
  	// 2. Obtaining User Authorization
 -	netlog("gg_oauth_receivetoken(): Obtaining User Authorization...");
 +	netlog("oauth_receivetoken(): Obtaining User Authorization...");
  	mir_free(str);
  	str = oauth_uri_escape("http://www.mojageneracja.pl");
 @@ -477,10 +477,10 @@ int GGPROTO::oauth_receivetoken()  	resp = (NETLIBHTTPREQUEST *)CallService(MS_NETLIB_HTTPTRANSACTION, (WPARAM)netlib, (LPARAM)&req);
  	if (resp) CallService(MS_NETLIB_FREEHTTPREQUESTSTRUCT, 0, (LPARAM)resp);
 -	else netlog("gg_oauth_receivetoken(): No response from HTTP request");
 +	else netlog("oauth_receivetoken(): No response from HTTP request");
  	// 3. Obtaining an Access Token
 -	netlog("gg_oauth_receivetoken(): Obtaining an Access Token...");
 +	netlog("oauth_receivetoken(): Obtaining an Access Token...");
  	strcpy(szUrl, "http://api.gadu-gadu.pl/access_token");
  	mir_free(str);
  	str = oauth_auth_header("POST", szUrl, HMACSHA1, uin, password, token, token_secret);
 @@ -526,11 +526,11 @@ int GGPROTO::oauth_receivetoken()  			mir_free(tag);
  			mir_free(xmlAction);
  		}
 -		else netlog("gg_oauth_receivetoken(): Invalid response code from HTTP request");
 +		else netlog("oauth_receivetoken(): Invalid response code from HTTP request");
  		Netlib_CloseHandle(resp->nlc);
  		CallService(MS_NETLIB_FREEHTTPREQUESTSTRUCT, 0, (LPARAM)resp);
  	}
 -	else netlog("gg_oauth_receivetoken(): No response from HTTP request");
 +	else netlog("oauth_receivetoken(): No response from HTTP request");
  	mir_free(password);
  	mir_free(str);
 @@ -539,13 +539,13 @@ int GGPROTO::oauth_receivetoken()  		db_set_s(NULL, m_szModuleName, GG_KEY_TOKEN, token);
  		CallService(MS_DB_CRYPT_ENCODESTRING, (WPARAM)(int)strlen(token_secret) + 1, (LPARAM) token_secret);
  		db_set_s(NULL, m_szModuleName, GG_KEY_TOKENSECRET, token_secret);
 -		netlog("gg_oauth_receivetoken(): Access Token obtained successfully.");
 +		netlog("oauth_receivetoken(): Access Token obtained successfully.");
  		res = 1;
  	}
  	else {
  		db_unset(NULL, m_szModuleName, GG_KEY_TOKEN);
  		db_unset(NULL, m_szModuleName, GG_KEY_TOKENSECRET);
 -		netlog("gg_oauth_receivetoken(): Failed to obtain Access Token.");
 +		netlog("oauth_receivetoken(): Failed to obtain Access Token.");
  	}
  	mir_free(token);
  	mir_free(token_secret);
 diff --git a/protocols/Gadu-Gadu/src/ownerinfo.cpp b/protocols/Gadu-Gadu/src/ownerinfo.cpp index 6c37cdb180..a0549f8316 100644 --- a/protocols/Gadu-Gadu/src/ownerinfo.cpp +++ b/protocols/Gadu-Gadu/src/ownerinfo.cpp @@ -36,36 +36,42 @@ void __cdecl GGPROTO::remindpasswordthread(void *param)  	GG_REMIND_PASS *rp = (GG_REMIND_PASS *)param;
  	GGTOKEN token;
 -#ifdef DEBUGMODE
 -	netlog("gg_remindpasswordthread(): Starting.");
 -#endif
 +	netlog("remindpasswordthread(): Started.");
  	if (!rp || !rp->email || !rp->uin || !strlen(rp->email))
  	{
  		if (rp) free(rp);
 +#ifdef DEBUGMODE
 +		netlog("remindpasswordthread(): End. err1");
 +#endif
  		return;
  	}
  	// Get token
 -	if (!gettoken(&token)) return;
 +	if (!gettoken(&token)){
 +#ifdef DEBUGMODE
 +		netlog("remindpasswordthread(): End. err2");
 +#endif
 +		return;
 +	}
  	if (!(h = gg_remind_passwd3(rp->uin, rp->email, token.id, token.val, 0)))
  	{
  		TCHAR error[128];
  		mir_sntprintf(error, SIZEOF(error), TranslateT("Password could not be reminded because of error:\n\t%s"), _tcserror(errno));
  		MessageBox(NULL, error, m_tszUserName, MB_OK | MB_ICONSTOP);
 -		netlog("gg_remindpasswordthread(): Password could not be reminded because of \"%s\".", strerror(errno));
 +		netlog("remindpasswordthread(): Password could not be reminded because of \"%s\".", strerror(errno));
  	}
  	else
  	{
  		gg_pubdir_free(h);
 -		netlog("gg_remindpasswordthread(): Password remind successful.");
 +		netlog("remindpasswordthread(): Password remind successful.");
  		MessageBox(NULL, TranslateT("Password was sent to your e-mail."), m_tszUserName, MB_OK | MB_ICONINFORMATION);
  	}
 +	if (rp) free(rp);
  #ifdef DEBUGMODE
 -	netlog("gg_remindpasswordthread(): End.");
 +	netlog("remindpasswordthread(): End.");
  #endif
 -	if (rp) free(rp);
  }
  void GGPROTO::remindpassword(uin_t uin, const char *email)
 @@ -74,5 +80,8 @@ void GGPROTO::remindpassword(uin_t uin, const char *email)  	rp->uin = uin;
  	rp->email = email;
 +#ifdef DEBUGMODE
 +	netlog("remindpassword(): forkthreadex 20 GGPROTO::remindpasswordthread");
 +#endif
  	forkthread(&GGPROTO::remindpasswordthread, rp);
  }
 diff --git a/protocols/Gadu-Gadu/src/services.cpp b/protocols/Gadu-Gadu/src/services.cpp index a172d10609..11c8a25ac1 100644 --- a/protocols/Gadu-Gadu/src/services.cpp +++ b/protocols/Gadu-Gadu/src/services.cpp @@ -89,31 +89,35 @@ int GGPROTO::refreshstatus(int status)  		if (exitCode == STILL_ACTIVE)
  			return TRUE;
  #ifdef DEBUGMODE
 -		netlog("gg_refreshstatus(): Going to connect...");
 +		netlog("refreshstatus(): Waiting pth_sess thread. Going to connect...");
  #endif
  		threadwait(&pth_sess);
 +#ifdef DEBUGMODE
 +		netlog("refreshstatus(): Waiting pth_sess thread - OK");
 +		netlog("refreshstatus(): forkthreadex 21 GGPROTO::mainthread");
 +#endif
  		pth_sess.hThread = forkthreadex(&GGPROTO::mainthread, NULL, &pth_sess.dwThreadId);
  	}
  	else
  	{
  		char *szMsg = NULL;
  		// Select proper msg
 -		EnterCriticalSection(&modemsg_mutex);
 +		gg_EnterCriticalSection(&modemsg_mutex, "refreshstatus", 69, "modemsg_mutex", 1);
  		szMsg = mir_strdup(getstatusmsg(status));
 -		LeaveCriticalSection(&modemsg_mutex);
 +		gg_LeaveCriticalSection(&modemsg_mutex, "refreshstatus", 69, 1, "modemsg_mutex", 1);
  		if (szMsg)
  		{
 -			netlog("gg_refreshstatus(): Setting status and away message.");
 -			EnterCriticalSection(&sess_mutex);
 +			netlog("refreshstatus(): Setting status and away message.");
 +			gg_EnterCriticalSection(&sess_mutex, "refreshstatus", 70, "sess_mutex", 1);
  			gg_change_status_descr(sess, status_m2gg(status, szMsg != NULL), szMsg);
 -			LeaveCriticalSection(&sess_mutex);
 +			gg_LeaveCriticalSection(&sess_mutex, "refreshstatus", 70, 1, "sess_mutex", 1);
  		}
  		else
  		{
 -			netlog("gg_refreshstatus(): Setting just status.");
 -			EnterCriticalSection(&sess_mutex);
 +			netlog("refreshstatus(): Setting just status.");
 +			gg_EnterCriticalSection(&sess_mutex, "refreshstatus", 71, "sess_mutex", 1);
  			gg_change_status(sess, status_m2gg(status, 0));
 -			LeaveCriticalSection(&sess_mutex);
 +			gg_LeaveCriticalSection(&sess_mutex, "refreshstatus", 71, 1, "sess_mutex", 1);
  		}
  		// Change status of the contact with our own UIN (if got yourself added to the contact list)
  		changecontactstatus( db_get_dw(NULL, m_szModuleName, GG_KEY_UIN, 0), status_m2gg(status, szMsg != NULL), szMsg, 0, 0, 0, 0);
 @@ -174,7 +178,7 @@ INT_PTR GGPROTO::getavatarinfo(WPARAM wParam, LPARAM lParam)  	DBVARIANT dbv;
  	uin_t uin = (uin_t)db_get_dw(pai->hContact, m_szModuleName, GG_KEY_UIN, 0);
 -	netlog("gg_getavatarinfo(): Requesting avatar information for %d.", uin);
 +	netlog("getavatarinfo(): Requesting avatar information for %d.", uin);
  	pai->filename[0] = 0;
  	pai->format = PA_FORMAT_UNKNOWN;
 @@ -212,7 +216,7 @@ INT_PTR GGPROTO::getavatarinfo(WPARAM wParam, LPARAM lParam)  			result = GAIR_SUCCESS;
  		}
  		else if ((wParam & GAIF_FORCE) != 0) {
 -			netlog("gg_getavatarinfo(): Contact %d changed avatar.", uin);
 +			netlog("getavatarinfo(): Contact %d changed avatar.", uin);
  			_tremove(pai->filename);
  			db_set_s(pai->hContact, m_szModuleName, GG_KEY_AVATARHASH, AvatarHash);
  			getAvatar(pai->hContact, AvatarURL);
 @@ -221,7 +225,7 @@ INT_PTR GGPROTO::getavatarinfo(WPARAM wParam, LPARAM lParam)  	}
  	else if ((wParam & GAIF_FORCE) != 0) {
  		if (AvatarHash == NULL && AvatarSavedHash != NULL) {
 -			netlog("gg_getavatarinfo(): Contact %d deleted avatar.", uin);
 +			netlog("getavatarinfo(): Contact %d deleted avatar.", uin);
  			getAvatarFilename(pai->hContact, pai->filename, sizeof(pai->filename));
  			_tremove(pai->filename);
  			db_unset(pai->hContact, m_szModuleName, GG_KEY_AVATARHASH);
 @@ -229,7 +233,7 @@ INT_PTR GGPROTO::getavatarinfo(WPARAM wParam, LPARAM lParam)  			db_unset(pai->hContact, m_szModuleName, GG_KEY_AVATARTYPE);
  		}
  		else if (AvatarHash != NULL && AvatarSavedHash == NULL) {
 -			netlog("gg_getavatarinfo(): Contact %d set avatar.", uin);
 +			netlog("getavatarinfo(): Contact %d set avatar.", uin);
  			db_set_s(pai->hContact, m_szModuleName, GG_KEY_AVATARHASH, AvatarHash);
  			getAvatar(pai->hContact, AvatarURL);
  			result = GAIR_WAITFOR;
 @@ -251,7 +255,7 @@ INT_PTR GGPROTO::getmyavatar(WPARAM wParam, LPARAM lParam)  	TCHAR *szFilename = (TCHAR*)wParam;
  	int len = (int)lParam;
 -	netlog("gg_getmyavatar(): Requesting user avatar.");
 +	netlog("getmyavatar(): Requesting user avatar.");
  	if (szFilename == NULL || len <= 0)
  		return -1;
 @@ -283,7 +287,7 @@ INT_PTR GGPROTO::setmyavatar(WPARAM wParam, LPARAM lParam)  	TCHAR szMyFilename[MAX_PATH];
  	getAvatarFilename(NULL, szMyFilename, SIZEOF(szMyFilename));
  	if ( _tcscmp(szFilename, szMyFilename) && !CopyFile(szFilename, szMyFilename, FALSE)) {
 -		netlog("gg_setmyavatar(): Failed to set user avatar. File %s could not be created/overwritten.", szMyFilename);
 +		netlog("setmyavatar(): Failed to set user avatar. File %s could not be created/overwritten.", szMyFilename);
  		return -1;
  	}
 @@ -299,11 +303,11 @@ INT_PTR GGPROTO::getmyawaymsg(WPARAM wParam, LPARAM lParam)  	INT_PTR res = 0;
  	char *szMsg;
 -	EnterCriticalSection(&modemsg_mutex);
 +	gg_EnterCriticalSection(&modemsg_mutex, "refreshstatus", 72, "modemsg_mutex", 1);
  	szMsg = getstatusmsg(wParam ? gg_normalizestatus(wParam) : m_iStatus);
  	if (isonline() && szMsg)
  		res = (lParam & SGMA_UNICODE) ? (INT_PTR)mir_a2u(szMsg) : (INT_PTR)mir_strdup(szMsg);
 -	LeaveCriticalSection(&modemsg_mutex);
 +	gg_LeaveCriticalSection(&modemsg_mutex, "refreshstatus", 72, 1, "modemsg_mutex", 1);
  	return res;
  }
 diff --git a/protocols/Gadu-Gadu/src/sessions.cpp b/protocols/Gadu-Gadu/src/sessions.cpp index 6f047cd783..2888b5136f 100644 --- a/protocols/Gadu-Gadu/src/sessions.cpp +++ b/protocols/Gadu-Gadu/src/sessions.cpp @@ -91,7 +91,7 @@ static void gg_listsessions(GGPROTO* gg, HWND hwndDlg)  	if (!hList)	return;
 -	EnterCriticalSection(&gg->sessions_mutex);
 +	gg->gg_EnterCriticalSection(&gg->sessions_mutex, "gg_listsessions", 73, "sessions_mutex", 1);
  	for (l = gg->sessions; l; l = l->next)
  	{
  		struct gg_multilogon_session* sess = (struct gg_multilogon_session*)l->data;
 @@ -103,7 +103,7 @@ static void gg_listsessions(GGPROTO* gg, HWND hwndDlg)  		strftime(loginTime, sizeof(loginTime), "%d-%m-%Y %H:%M:%S", localtime(&sess->logon_time));
  		gg_insertlistitem(hList, &sess->id, sess->name, ip, loginTime);
  	}
 -	LeaveCriticalSection(&gg->sessions_mutex);
 +	gg->gg_LeaveCriticalSection(&gg->sessions_mutex, "gg_listsessions", 73, 1, "sessions_mutex", 1);
  	EnableWindow(GetDlgItem(hwndDlg, IDC_SIGNOUTALL), ListView_GetItemCount(hList) > 0);
  }
 @@ -214,9 +214,9 @@ static INT_PTR CALLBACK gg_sessions_viewdlg(HWND hwndDlg, UINT message, WPARAM w  				{
  					lvi.iItem = i;
  					ListView_GetItem(hList, &lvi);
 -					EnterCriticalSection(&gg->sess_mutex);
 +					gg->gg_EnterCriticalSection(&gg->sess_mutex, "gg_sessions_viewdlg", 74, "sess_mutex", 1);
  					gg_multilogon_disconnect(gg->sess, *((gg_multilogon_id_t*)lvi.lParam));
 -					LeaveCriticalSection(&gg->sess_mutex);
 +					gg->gg_LeaveCriticalSection(&gg->sess_mutex, "gg_sessions_viewdlg", 74, 1, "sess_mutex", 1);
  				}
  				break;
  			}
 @@ -289,9 +289,9 @@ static INT_PTR CALLBACK gg_sessions_viewdlg(HWND hwndDlg, UINT message, WPARAM w  					lvi.mask = LVIF_PARAM;
  					lvi.iItem = nm->iItem;
  					ListView_GetItem(nm->hdr.hwndFrom, &lvi);
 -					EnterCriticalSection(&gg->sess_mutex);
 +					gg->gg_EnterCriticalSection(&gg->sess_mutex, "gg_sessions_viewdlg", 75, "sess_mutex", 1);
  					gg_multilogon_disconnect(gg->sess, *((gg_multilogon_id_t*)lvi.lParam));
 -					LeaveCriticalSection(&gg->sess_mutex);
 +					gg->gg_LeaveCriticalSection(&gg->sess_mutex, "gg_sessions_viewdlg", 75, 1, "sess_mutex", 1);
  				}
  				break;
  			}
 diff --git a/protocols/Gadu-Gadu/src/userutils.cpp b/protocols/Gadu-Gadu/src/userutils.cpp index 599a8691b6..ff5e21088b 100644 --- a/protocols/Gadu-Gadu/src/userutils.cpp +++ b/protocols/Gadu-Gadu/src/userutils.cpp @@ -178,7 +178,7 @@ void *gg_dochemail(GGPROTO *gg, uin_t uin, char *password, char *email, char *ne  	GGTOKEN token;
  #ifdef DEBUGMODE
 -	gg->netlog("gg_doemail(): Starting.");
 +	gg->netlog("gg_dochemail(): Starting.");
  #endif
  	if (!uin || !email || !newEmail) return NULL;
 @@ -191,18 +191,18 @@ void *gg_dochemail(GGPROTO *gg, uin_t uin, char *password, char *email, char *ne  		mir_sntprintf(error, SIZEOF(error), TranslateT("Your e-mail cannot be changed because of error:\n\t%s"),
  			(h && !s) ? http_error_string(h ? h->error : 0) : (s ? TranslateT("Bad old e-mail or password") : _tcserror(errno)));
  		MessageBox(NULL, error, gg->m_tszUserName, MB_OK | MB_ICONSTOP);
 -		gg->netlog("gg_dochpass(): Cannot change e-mail because of \"%s\".", strerror(errno));
 +		gg->netlog("gg_dochemail(): Cannot change e-mail because of \"%s\".", strerror(errno));
  	}
  	else
  	{
  		gg_pubdir_free(h);
  		db_set_s(NULL, gg->m_szModuleName, GG_KEY_EMAIL, newEmail);
 -		gg->netlog("gg_doemail(): E-mail change succesful.");
 +		gg->netlog("gg_dochemail(): E-mail change succesful.");
  		MessageBox(NULL, TranslateT("Your e-mail has been changed."), gg->m_tszUserName, MB_OK | MB_ICONINFORMATION);
  	}
  #ifdef DEBUGMODE
 -	gg->netlog("gg_doemail(): End.");
 +	gg->netlog("gg_dochemail(): End.");
  #endif
  	return NULL;
  | 
