Cleanup an ExtMessage only if it successfully started up.

git-svn-id: http://yate.null.ro/svn/yate/trunk@2288 acf43c95-373e-0410-b603-e72c3f656dc1
This commit is contained in:
paulc 2008-10-24 14:26:51 +00:00
parent 90711d6097
commit 72f453e88a
1 changed files with 9 additions and 9 deletions

View File

@ -145,12 +145,12 @@ class ExtMessage : public Message
{
YCLASS(ExtMessage,Message)
public:
inline ExtMessage(ExtModReceiver* recv)
inline ExtMessage()
: Message(""),
m_receiver(recv), m_accepted(false)
m_receiver(0), m_accepted(false)
{ }
virtual ~ExtMessage();
void startup();
void startup(ExtModReceiver* recv);
virtual void dispatched(bool accepted);
inline bool belongsTo(ExtModReceiver* recv) const
{ return m_receiver == recv; }
@ -556,12 +556,12 @@ ExtMessage::~ExtMessage()
}
}
void ExtMessage::startup()
void ExtMessage::startup(ExtModReceiver* recv)
{
if (m_receiver && m_id)
if (recv && m_id) {
m_receiver = recv;
m_receiver->use();
else
m_receiver = 0;
}
Engine::enqueue(this);
}
@ -1339,7 +1339,7 @@ bool ExtModReceiver::processLine(const char* line)
return true;
}
else {
ExtMessage* m = new ExtMessage(this);
ExtMessage* m = new ExtMessage;
if (m->decode(line) == -2) {
DDebug("ExtModReceiver",DebugAll,"Created message %p '%s' [%p]",m,m->c_str(),this);
lock();
@ -1380,7 +1380,7 @@ bool ExtModReceiver::processLine(const char* line)
}
}
}
m->startup();
m->startup(this);
unlock();
return false;
}