[reSIProcate] Please give opinion on my solution on "make call crash"
- From: "maodonghu" <hhmmdd@xxxxxxx>
- Date: Thu, 24 Aug 2006 09:45:12 +0800
resip all
I had modified the dum source to add serval protection(Guard) on following, and
my test will never crashed for 1,200,000 calls(just got 603).
0, add private member variable "Mutex lock" for class DialogUasageManager and
class HandleManager respectively
1, DialogUasageManager.cxx, near line 425
DialogSet*
DialogUsageManager::makeUacDialogSet(BaseCreator* creator, AppDialogSet* appDs)
{
Guard guard(lock);
if (mDumShutdownHandler)
2, DialogUasageManager.cxx, near line 1540
void
DialogUsageManager::processRequest(const SipMessage& request)
{
....
case REGISTER:
{
{
DialogSetId id(request);
//cryptographically dangerous
Guard guard(lock);
assert(mDialogSetMap.find(id) == mDialogSetMap.end());
}
3, DialogUasageManager.cxx, near line 1553
try
{
Guard guard(lock);
DialogSet* dset = new DialogSet(request, *this);
4, DialogUasageManager.cxx, near line 1707
DialogSet*
DialogUsageManager::findDialogSet(const DialogSetId& id)
{
Guard guard(lock);
5, DialogUasageManager.cxx, near line 1747
void
DialogUsageManager::removeDialogSet(const DialogSetId& dsId)
{
Guard guard(lock);
6, DialogUasageManager.cxx, near line 1851
void
DialogUsageManager::applyToAllServerSubscriptions(ServerSubscriptionFunctor*
functor)
{
Guard guard(lock);
7, DialogUasageManager.cxx, near line 1870
void
DialogUsageManager::applyToAllClientSubscriptions(ClientSubscriptionFunctor*
functor)
{
Guard guard(lock);
assert(functor);
8, HandleManager.cxx, near line 34
Handled::Id
HandleManager::create(Handled* handled)
{
Guard guard(lock);
mHandleMap[++mLastId] = handled;
return mLastId;
}
9, HandleManager.cxx, near line 76
void
HandleManager::remove(Handled::Id id)
{
Guard guard(lock);
HandleMap::iterator i = mHandleMap.find(id);
10, HandleManager.cxx, near line 108
bool
HandleManager::isValidHandle(Handled::Id id)
{
//!dcm! -- fix; use find
Guard guard(lock);
return mHandleMap.count(id) != 0;
}
11, HandleManager.cxx, near line 115
Handled*
HandleManager::getHandled(Handled::Id id)
{
Guard guard(lock);
HandleMap::const_iterator i = mHandleMap.find(id);
>resip all,
>
>I made a small program to test outbound call for resiprocate 1.0(revision
>6527), following is the scenario
>
>1, make call to a non-exists DNIS
>2, dum got onFailure event with 603
>3, dum got onTerminated event
>4, repeat 1-3
>
>I wanna make 10000 calls to test, but often got error after several call
>
>Register SIP Account: "testua"<sip:52412300@xxxxxxxxxxxxxx>
>Logged in: 2201@xxxxxxxxxxxxxx
>
>[Line 0] Got failure response from UAS - 603
>[Line 0] call terminated.
>[Line 1] Got failure response from UAS - 603
>[Line 1] call terminated.
>[Line 2] Got failure response from UAS - 603
>[Line 2] call terminated.
>[Line 3] Got failure response from UAS - 603
>[Line 3] call terminated.
>[Line 4] Got failure response from UAS - 603
>[Line 4] call terminated.
>[Line 5] Got failure response from UAS - 603
>[Line 5] call terminated.
>[Line 6] Got failure response from UAS - 603
>[Line 6] call terminated.
>[Line 7] Got failure response from UAS - 603
>[Line 7] call terminated.
>[Line 8] Got failure response from UAS - 603
>[Line 8] call terminated.
>[Line 9] Got failure response from UAS - 603
>[Line 9] call terminated.
>[Line 10] Got failure response from UAS - 603
>[Line 10] call terminated.
>Assertion failed: 0, file .\HandleManager.cxx, line 114
>
>I saw the HandleManager.cxx, line 114, means "Stale handle", can anyone help
>me to avoid this error, because I must get failure reason for every SipCall(it
>is my own AppDialogSet), so I have to do h->getAppDialogSet().get() in the
>onFailure callback
>
>Attachment is my simple test program, you can compile it in VS.2005, MAY BE
>YOU CAN FIND MY USAGE ERROR ON RESIP!!!
>
>Thanks
>
>
>
> maodonghu
> hhmmdd@xxxxxxx
> 2006-08-22
>_______________________________________________
>resiprocate-devel mailing list
>resiprocate-devel@xxxxxxxxxxxxxxxxxxx
>https://list.sipfoundry.org/mailman/listinfo/resiprocate-devel
maodonghu
hhmmdd@xxxxxxx
2006-08-24