summaryrefslogtreecommitdiff
path: root/protocols/Tox/src
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/Tox/src')
-rw-r--r--protocols/Tox/src/tox_core.cpp12
-rw-r--r--protocols/Tox/src/tox_profile.cpp16
-rw-r--r--protocols/Tox/src/tox_proto.cpp18
-rw-r--r--protocols/Tox/src/tox_utils.cpp2
4 files changed, 28 insertions, 20 deletions
diff --git a/protocols/Tox/src/tox_core.cpp b/protocols/Tox/src/tox_core.cpp
index 242a2eafa9..c8d30cf2ce 100644
--- a/protocols/Tox/src/tox_core.cpp
+++ b/protocols/Tox/src/tox_core.cpp
@@ -31,7 +31,7 @@ bool CToxProto::InitToxCore()
if (nlus.proxyType == PROXYTYPE_SOCKS4 || nlus.proxyType == PROXYTYPE_SOCKS5)
{
- debugLogA("CToxProto::InitToxCore: setting socks user proxy config");
+ debugLogA(__FUNCTION__": setting socks user proxy config");
options->proxy_type = TOX_PROXY_TYPE_SOCKS5;
mir_strcpy((char*)&options->proxy_host[0], nlus.szProxyServer);
options->proxy_port = nlus.wProxyPort;
@@ -41,6 +41,16 @@ bool CToxProto::InitToxCore()
if (LoadToxProfile(options))
{
+ TOX_ERR_NEW initError;
+ tox = tox_new(options, &initError);
+ if (initError != TOX_ERR_NEW_OK)
+ {
+ debugLogA(__FUNCTION__": failed to initialize tox core (%d)", initError);
+ ShowNotification(ToxErrorToString(initError), TranslateT("Unable to initialize tox core"), MB_ICONERROR);
+ tox_options_free(options);
+ return false;
+ }
+
tox_callback_friend_request(tox, OnFriendRequest, this);
tox_callback_friend_message(tox, OnFriendMessage, this);
tox_callback_friend_read_receipt(tox, OnReadReceipt, this);
diff --git a/protocols/Tox/src/tox_profile.cpp b/protocols/Tox/src/tox_profile.cpp
index 5980118043..d6fff1c75d 100644
--- a/protocols/Tox/src/tox_profile.cpp
+++ b/protocols/Tox/src/tox_profile.cpp
@@ -88,20 +88,10 @@ bool CToxProto::LoadToxProfile(Tox_Options *options)
options->savedata_data = data;
options->savedata_length = size;
options->savedata_type = TOX_SAVEDATA_TYPE_TOX_SAVE;
+ return true;
}
-
- TOX_ERR_NEW initError;
- tox = tox_new(options, &initError);
- if (initError != TOX_ERR_NEW_OK)
- {
- debugLogA(__FUNCTION__": failed to load tox profile (%d)", initError);
- ShowNotification(ToxErrorToString(initError), TranslateT("Unable to load Tox profile"), MB_ICONERROR);
- mir_free(data);
- return false;
- }
- mir_free(data);
- debugLogA(__FUNCTION__": tox profile load successfully");
- return true;
+
+ return false;
}
void CToxProto::SaveToxProfile()
diff --git a/protocols/Tox/src/tox_proto.cpp b/protocols/Tox/src/tox_proto.cpp
index b31d83f894..1718f9f0bc 100644
--- a/protocols/Tox/src/tox_proto.cpp
+++ b/protocols/Tox/src/tox_proto.cpp
@@ -1,10 +1,10 @@
#include "stdafx.h"
-CToxProto::CToxProto(const char* protoName, const TCHAR* userName) :
-PROTO<CToxProto>(protoName, userName),
-tox(NULL), toxAv(NULL), password(NULL),
-isTerminated(false), isConnected(false),
-hPollingThread(NULL), hOutDevice(NULL)
+CToxProto::CToxProto(const char* protoName, const TCHAR* userName)
+ : PROTO<CToxProto>(protoName, userName),
+ tox(NULL), toxAv(NULL), password(NULL),
+ isTerminated(false), isConnected(false),
+ hPollingThread(NULL), hOutDevice(NULL)
{
InitNetlib();
@@ -174,6 +174,8 @@ int CToxProto::SetStatus(int iNewStatus)
{
// logout
isTerminated = true;
+ WaitForSingleObject(hPollingThread, INFINITE);
+ hPollingThread = NULL;
if (!Miranda_Terminated())
{
@@ -192,6 +194,12 @@ int CToxProto::SetStatus(int iNewStatus)
if (old_status == ID_STATUS_OFFLINE && !IsOnline())
{
+ if (hPollingThread != NULL)
+ {
+ m_iDesiredStatus = old_status;
+ return 0;
+ }
+
// login
m_iStatus = ID_STATUS_CONNECTING;
diff --git a/protocols/Tox/src/tox_utils.cpp b/protocols/Tox/src/tox_utils.cpp
index 223d3b1b70..e0a3e9f514 100644
--- a/protocols/Tox/src/tox_utils.cpp
+++ b/protocols/Tox/src/tox_utils.cpp
@@ -38,7 +38,7 @@ TCHAR* CToxProto::ToxErrorToString(TOX_ERR_NEW error)
switch (error)
{
case TOX_ERR_NEW_NULL:
- return TranslateT("One of the arguments is not valid or ");
+ return TranslateT("One of the arguments is missing");
case TOX_ERR_NEW_MALLOC:
return TranslateT("Unable to allocate enough memory");
case TOX_ERR_NEW_PORT_ALLOC: