[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