[reSIProcate-commit] resiprocate 8700 sgodin: -fixed a difficult to find, and long standing memory leak bug in ClientSubscriptions
| Project | resiprocate |
| New Revision | 8700 |
| Committer | sgodin (Scott Godin) |
| Date | 2009-11-14 14:32:39 -0600 (Sat, 14 Nov 2009) |
Log
-fixed a difficult to find, and long standing memory leak bug in ClientSubscriptions
- besides leaking memory this bug also had the potential for core dumps if AppDialogSets
are used with ClientSubscriptions
- the code in BaseSubscription tries to match the CSeq in an inbound response to
the CSeq in the last request sent out for the subscription, however the code in the
ClientSubscription constructor was calling makeRequest on the original request, and
causing the mLastRequest storage to have a message with a new sequence number. Thus
BaseSubscription::matches was never properly able to match the initial subscribe response
to the proper ClientSubscription. In this case a new ClientSubscription object was created,
and we could end up with two ClientSubscription objects for the same dialogset. This would
cause Dialog::possiblyDie to never actually destroy the dialog or dialogset objects. Makes
perfect sense right? :)
-made the ClientSubscription::dispatch timeout code a little safer
Modified: