[reSIProcate] Question about Record-Route headers on re-Invite

Kovar, William (Bill) bkovar at avaya.com
Wed Mar 7 17:47:08 CST 2007


Scott,
 
The code below does not work.
 
I put back in the fix my developer had created and the problem is
solved.
 
I put my old fix back in and it now works correctly.
 
Here's the code for Dialog.cxx
 
if(mInviteSession == 0 || mRouteSet.size() == 0)
{
    if (code >=200 && code < 300)
    {
        if (response.exists(h_RecordRoutes))
        {
            mRouteSet = response.header(h_RecordRoutes).reverse();
        }
    }
}
 
In particular, this code never gets run because the route set is created
during construction of the Dialog. That should be enough.
 
 
 
Bill Kovar
bkovar at avaya.com
Avaya, Inc.
(732) 852-2609
 


  _____  

	From: Scott Godin [mailto:slgodin at icescape.com] 
	Sent: Thursday, January 18, 2007 5:30 PM
	To: Kovar, William (Bill)
	Subject: RE: [reSIProcate] Question about Record-Route headers
on re-Invite
	
	

	Hi Bill,

	 

	I'm just waiting back to hear from the developer that modified
this code last before I commit a solution.  But here is what I have so
far - if you want to try it out:

	 

	Modify the code in Dialog.cxx near line 561 to read.

	 

	      const SipMessage& response = msg;

	      int code = response.header(h_StatusLine).statusCode();

	      // If this is a 200 response to the initial request, then
store the routeset (if present)

	      if (creator &&
(creator->getLastRequest()->header(h_CSeq).sequence() ==
response.header(h_CSeq).sequence()) && code >=200 && code < 300)

	      {

	         if (response.exists(h_RecordRoutes))

	         {

	            mRouteSet =
response.header(h_RecordRoutes).reverse();

	         }

	      }

	 

	Thanks,

	 

	Scott

	 

	From: resiprocate-devel-bounces at list.resiprocate.org
[mailto:resiprocate-devel-bounces at list.resiprocate.org] On Behalf Of
Kovar, William (Bill)
	Sent: Wednesday, January 10, 2007 4:22 PM
	To: resiprocate-devel at list.resiprocate.org
	Subject: [reSIProcate] Question about Record-Route headers on
re-Invite

	 

	I'm seeing a situation where an initial session has been
established with 2 Record-Route's set, i.e. IP1 & IP2.

	 

	When a re-invite sent, both Routes (IP1 & IP2) are used,
however, the 200 OK only sends one (IP1).

	 

	The subsequent ACK generated only insert Route: IP1 and the
final destination is never reached. This causes retransmission of the
200 OK over and over.

	 

	It seems like DUM/resip is over-writing the original Route set
established with the initial session, which is an RFC 3261 violation -
section 12.2

	 

	As I am on a version of resip prior to resip 1.0, is this a
known problem and fixed??

	 

	Bill Kovar

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.resiprocate.org/pipermail/resiprocate-devel/attachments/20070307/1baf4093/attachment.htm>


More information about the resiprocate-devel mailing list