[reSIProcate] Please give opinion on my solution on "make call crash"
maodonghu
hhmmdd at tom.com
Wed Aug 23 20:45:12 CDT 2006
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 at 192.168.101.32>
>Logged in: 2201 at 192.168.101.32
>
>[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 at tom.com
> 2006-08-22
>_______________________________________________
>resiprocate-devel mailing list
>resiprocate-devel at list.sipfoundry.org
>https://list.sipfoundry.org/mailman/listinfo/resiprocate-devel
maodonghu
hhmmdd at tom.com
2006-08-24
More information about the resiprocate-devel
mailing list