Modified:
/trunk/sipXtackLib/include/net/SipMessageList.h
/trunk/sipXtackLib/src/net/SipMessageList.cpp
=======================================
--- /trunk/sipXtackLib/include/net/SipMessageList.h Fri Jan 25 13:27:59 2008
+++ /trunk/sipXtackLib/include/net/SipMessageList.h Mon Feb 7 14:24:10 2011
@@ -69,7 +69,7 @@
void add(SipMessage* message);
void removeOldMessages(long oldTime, UtlBoolean deleteMessages = TRUE);
- void remove(int iteratorHandle);
+ void remove(int iteratorHandle, UtlBoolean deleteMessage = TRUE);
void toString(UtlString& listDumpString);
=======================================
--- /trunk/sipXtackLib/src/net/SipMessageList.cpp Fri Jan 25 13:27:59 2008
+++ /trunk/sipXtackLib/src/net/SipMessageList.cpp Mon Feb 7 14:24:10 2011
@@ -291,13 +291,18 @@
osPrintf("\nSipMessageList::remove parameter Message %s
\n-------\n",MessageStr.data());
#endif
- if(listMessage == message)
+ //if(listMessage == message)
+ if(listMessage == message || listMessage->isSameMessage(message,
TRUE))
{
#ifdef TEST_PRINT
osPrintf("SipMessageList::remove removing message\n");
#endif
messageList.remove(iteratorHandle);
-
+ if(listMessage != message)
+ {
+ // If the parameter message does not match the listMessage
then delete the list message as well or we have a memory leak
+ delete listMessage;
+ }
break;
}
}
@@ -311,9 +316,13 @@
messageList.push(message);
}
-void SipMessageList::remove(int iteratorHandle)
-{
- messageList.remove(iteratorHandle);
+void SipMessageList::remove(int iteratorHandle, UtlBoolean deleteMessage)
+{
+ SipMessage *msg = (SipMessage*)messageList.remove(iteratorHandle);
+ if(deleteMessage && msg)
+ {
+ delete msg;
+ }
}
void SipMessageList::removeOldMessages(long oldTime, UtlBoolean
deleteMessages)