< Previous by Date Date Index Next by Date >
  Thread Index  

[reSIProcate] 3xx message handling related issue


Hi,

I am using reciprocate version 0.9.0 on wince. In case of 3xx for REGISTER reciprocate changes only Request URI neither the Contact, ‘To’ and ‘From’ fields. When my UA get the 3xx response to INVITE request with contact more than one, reciprocate sends the Invite to only one new contact. Here I am facing two problems. One is that only Request URI of the new Invite message has been change the ‘To’ field remain the same and Second reciprocate send Invite to only one contact and that contact is the second contact in the list of contacts received in 3xx.

I have provided the code snip below with the problem I have faced.

 

bool

RedirectManager::handle(DialogSet& dSet, SipMessage& origRequest, const SipMessage& response)

{

      TargetSet& tSet = *it->second;     

      tSet.addTargets(response); //Here I get two contacts in case of the INVITE

 

      while(tSet.makeNextRequest(origRequest)) //Next request is created

      {

         if (handler)

         {

            if (handler->onTryingNextTarget(dSet.mAppDialogSet->getHandle(), origRequest)) //Here I return true so function returns without deleting the it->second and erasing the mRedirectedRequestMap. In that case the New INVITE has been sent to one of the new targets.

            {

               return true;

            }

         }

         else //!dcm! -- accept all if no handler--should a handler be required?

         {

            return true;

         }

      }

If I return false then in onTryingNextTarget then retuns false here

      delete it->second;        

      mRedirectedRequestMap.erase(it);

      return false;  

   }

   //5xx, 6xx different?

   return false;  

}

 

 

In case false is return in the hadle function or RedirectManager the handledByAuthOrRedirect of dialog by pases the

if (mDum.mRedirectManager->handle(*this, getCreator()->getLastRequest(), msg))

{

}

Condition. In that no packet could be sent to any new target.

 

I am quite confused with the way reciprocate is behaving. I just want to know weather any one else has faces this kind of behavior.

 

 

 

Thanks in advance

Rajat Lala