Your message dated Wed, 29 Jul 2015 16:44:34 +0200
with message-id <84624541.gvRj68uBYK@hal9000>
and subject line Re: kopete: multiple crashes in the wlm protocol code
has caused the Debian Bug report #657191,
regarding kopete: multiple crashes in the wlm protocol code
to be marked as done.
This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.
(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact ow...@bugs.debian.org
immediately.)
--
657191: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=657191
Debian Bug Tracking System
Contact ow...@bugs.debian.org with problems
--- Begin Message ---
Package: kopete
Version: 4:4.6.5-3
Severity: important
Tags: patch upstream
Hi,
There are a few recently-introduced bugs in the wlm protocol support code in
kopete. I'm not reporting this bug to upstream's bugzilla because it will get
ignored like my other reports and somebody will eventually notice the bug (but
never the bug report) and write another patch and fix it.
So, attached are three patches, each explaining what they fix. Only the first
one is not a crash bug, but it prevents the creation of connections that will
never be used by kopete.
P.S. back when I wrote the patches all the bugs were still present in the
latest version in the VCS.
Cheers,
--
Raphael Geissert - Debian Developer
www.debian.org - get.debian.net
From 1670f6607c5c688aa3a89cdb5aba903cf95529f2 Mon Sep 17 00:00:00 2001
From: Raphael Geissert <atom...@gmail.com>
Date: Wed, 2 Nov 2011 19:38:21 -0600
Subject: [PATCH 1/3] Avoid multiple switchboard requests while waiting for one to finish
If the user attempts to send more than one message a new sb is requested
every time unless we received one in the mean time and the other client
has already joined. Those extra switchboard connections could be left
unused and hanging around until terminated by an event.
---
wlmchatsession.cpp | 9 ++++++++-
wlmchatsession.h | 1 +
2 files changed, 9 insertions(+), 1 deletions(-)
diff --git a/wlmchatsession.cpp b/wlmchatsession.cpp
index 0dfdd71..0c75f34 100644
--- a/wlmchatsession.cpp
+++ b/wlmchatsession.cpp
@@ -75,6 +75,7 @@ Kopete::ChatSession (user, others, protocol),
m_chatService (conn),
m_downloadDisplayPicture (false),
m_sendNudge (false),
+m_chatServiceRequested (false),
m_tries (0),
m_oimid (1),
m_sessionID(1)
@@ -893,7 +894,7 @@ WlmChatSession::requestChatService ()
WlmProtocol::protocol ()->wlmOffline)
return false;
- if (!isReady () && account ()->isConnected () && !isConnecting ())
+ if (!isReady () && account ()->isConnected () && !isConnecting () && !m_chatServiceRequested)
{
const std::string rcpt_ = members().first()->contactId().toLatin1().constData();
const std::string msg_ = "";
@@ -901,6 +902,10 @@ WlmChatSession::requestChatService ()
// request a new switchboard connection
static_cast <WlmAccount *>(account ())->server ()->cb.mainConnection->requestSwitchboardConnection (ctx);
QTimer::singleShot (30 * 1000, this, SLOT (switchboardConnectionTimeout ()));
+ // if the user attempts to send more than one message a new sb
+ // is requested every time unless we received one in the mean
+ // time and the other client has already joined
+ m_chatServiceRequested = true;
return true;
}
// probably we are about to connect
@@ -912,6 +917,8 @@ WlmChatSession::switchboardConnectionTimeout ()
{
if (!isReady ())
{
+ // allow a new chat service request
+ m_chatServiceRequested = false;
// try 3 times
if (m_tries < 3)
{
diff --git a/wlmchatsession.h b/wlmchatsession.h
index 91c4b83..3480c65 100644
--- a/wlmchatsession.h
+++ b/wlmchatsession.h
@@ -110,6 +110,7 @@ class WlmChatSession: public Kopete::ChatSession
MSN::SwitchboardServerConnection * m_chatService;
bool m_downloadDisplayPicture;
bool m_sendNudge;
+ bool m_chatServiceRequested;
int m_tries;
int m_oimid;
int m_sessionID;
--
1.7.4.1
From 47aa25082f487a137889deeb2d3dada89282f41d Mon Sep 17 00:00:00 2001
From: Raphael Geissert <atom...@gmail.com>
Date: Fri, 4 Nov 2011 14:54:38 -0600
Subject: [PATCH 2/3] Fix a crash when receiving a custom emoticon
The mutable iterator needs to be destroyed before the connection is
removed from the pendingMessages map.
---
wlmchatmanager.cpp | 16 +++++++++-------
1 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/wlmchatmanager.cpp b/wlmchatmanager.cpp
index 5444a50..4b202c2 100644
--- a/wlmchatmanager.cpp
+++ b/wlmchatmanager.cpp
@@ -618,15 +618,17 @@ WlmChatManager::slotGotEmoticonFile(MSN::SwitchboardServerConnection * conn,
if(pendingMessages.value(conn).isEmpty())
return;
- QMutableLinkedListIterator<PendingMessage> it(pendingMessages[conn]);
- while (it.hasNext())
{
- PendingMessage pendingMsg = it.next();
- if (fillEmoticons(chat, pendingMsg.message))
+ QMutableLinkedListIterator<PendingMessage> it(pendingMessages[conn]);
+ while (it.hasNext())
{
- chat->appendMessage(*pendingMsg.message);
- it.remove();
- delete pendingMsg.message;
+ PendingMessage pendingMsg = it.next();
+ if (fillEmoticons(chat, pendingMsg.message))
+ {
+ chat->appendMessage(*pendingMsg.message);
+ it.remove();
+ delete pendingMsg.message;
+ }
}
}
--
1.7.4.1
From 628a622bf5498ae8c325abb61e6c3f75483af2fb Mon Sep 17 00:00:00 2001
From: Raphael Geissert <atom...@gmail.com>
Date: Mon, 7 Nov 2011 10:17:24 -0600
Subject: [PATCH 3/3] Fix another crash due to a mutable iterator
Similar to 47aa25
---
wlmchatmanager.cpp | 24 +++++++++++++-----------
1 files changed, 13 insertions(+), 11 deletions(-)
diff --git a/wlmchatmanager.cpp b/wlmchatmanager.cpp
index 4b202c2..de2292f 100644
--- a/wlmchatmanager.cpp
+++ b/wlmchatmanager.cpp
@@ -656,19 +656,21 @@ void WlmChatManager::timerEvent(QTimerEvent *event)
{
connIt.next();
- QMutableLinkedListIterator<PendingMessage> it(connIt.value());
- while (it.hasNext())
{
- PendingMessage pendingMsg = it.next();
- if (pendingMsg.receiveTime < thresholdTime)
+ QMutableLinkedListIterator<PendingMessage> it(connIt.value());
+ while (it.hasNext())
{
- kDebug(14210) << "Did not get emoticons in time!";
- WlmChatSession *chat = chatSessions[connIt.key()];
- if (chat)
- chat->appendMessage(*pendingMsg.message);
-
- it.remove();
- delete pendingMsg.message;
+ PendingMessage pendingMsg = it.next();
+ if (pendingMsg.receiveTime < thresholdTime)
+ {
+ kDebug(14210) << "Did not get emoticons in time!";
+ WlmChatSession *chat = chatSessions[connIt.key()];
+ if (chat)
+ chat->appendMessage(*pendingMsg.message);
+
+ it.remove();
+ delete pendingMsg.message;
+ }
}
}
if (connIt.value().isEmpty())
--
1.7.4.1
--- End Message ---
--- Begin Message ---
It should have been closed ages ago.
--
Salvo Tomaselli
"Io non mi sento obbligato a credere che lo stesso Dio che ci ha dotato di
senso, ragione ed intelletto intendesse che noi ne facessimo a meno."
-- Galileo Galilei
http://ltworf.github.io/ltworf/
--- End Message ---