clean before destroy m_sock
diff --git a/chatdialog.cpp b/chatdialog.cpp
index 90ba598..70f67f5 100644
--- a/chatdialog.cpp
+++ b/chatdialog.cpp
@@ -69,7 +69,7 @@
m_sock = new Sync::SyncAppSocket(syncPrefix,
bind(&ChatDialog::processTreeUpdateWrapper, this, _1, _2),
bind(&ChatDialog::processRemoveWrapper, this, _1));
- QTimer::singleShot(1000, this, SLOT(sendJoin()));
+ QTimer::singleShot(600, this, SLOT(sendJoin()));
m_timer->start(FRESHNESS * 2000);
}
catch (Sync::CcnxOperationException ex)
@@ -85,21 +85,27 @@
{
if (m_sock != NULL)
{
- SyncDemo::ChatMessage msg;
- formControlMessage(msg, SyncDemo::ChatMessage::LEAVE);
- sendMsg(msg);
- usleep(500000);
- m_sock->remove(m_user.getPrefix().toStdString());
- usleep(5000);
-#ifdef __DEBUG
- std::cout << "Sync REMOVE signal sent" << std::endl;
-#endif
+ sendLeave();
delete m_sock;
m_sock = NULL;
}
}
void
+ChatDialog::sendLeave()
+{
+ SyncDemo::ChatMessage msg;
+ formControlMessage(msg, SyncDemo::ChatMessage::LEAVE);
+ sendMsg(msg);
+ usleep(500000);
+ m_sock->remove(m_user.getPrefix().toStdString());
+ usleep(5000);
+#ifdef __DEBUG
+ std::cout << "Sync REMOVE signal sent" << std::endl;
+#endif
+}
+
+void
ChatDialog::replot()
{
boost::recursive_mutex::scoped_lock lock(m_sceneMutex);
@@ -654,6 +660,7 @@
// TODO: perhaps need to do a lot. e.g. use a new SyncAppSokcet
if (m_sock != NULL)
{
+ sendLeave();
delete m_sock;
m_sock = NULL;
}
diff --git a/chatdialog.h b/chatdialog.h
index a8e385d..75e5d97 100644
--- a/chatdialog.h
+++ b/chatdialog.h
@@ -67,6 +67,7 @@
void settingUpdated(QString, QString, QString);
void sendHello();
void sendJoin();
+ void sendLeave();
void replot();
void updateRosterList(QStringList);