If I remember correctly, the RFC says that:
1) The 2xx ACKs are a new transaction.
2) Each new transaction must have a different branch in the Via header.
So, for the transitive property...
Bye.
Bogdan-Andrei Iancu wrote:
Hi Federico,
I tried to go through the RFC to find something backing up their
statement. But lucky for us, I didn't find.
Here is the part describing how a 2xx ACK must be build:
13.2.2.4 2xx Responses
The UAC core MUST generate an ACK request for each 2xx received from
the transaction layer. The header fields of the ACK are constructed
in the same way as for any request sent within a dialog (see Section
12) with the exception of the CSeq and the header fields related to
authentication. The sequence number of the CSeq header field MUST be
the same as the INVITE being acknowledged, but the CSeq method MUST
be ACK. The ACK MUST contain the same credentials as the INVITE. If
the 2xx contains an offer (based on the rules above), the ACK MUST
carry an answer in its body. If the offer in the 2xx response is not
acceptable, the UAC core MUST generate a valid answer in the ACK and
then send a BYE immediately.
looking to:
12.2 Requests within a Dialog
12.2.1 UAC Behavior
12.2.1.1 Generating the Request
there are no special requirements for VIA branch.
Also in
8.1.1.7 Via
The branch parameter value MUST be unique across space and time for
all requests sent by the UA. The exceptions to this rule are CANCEL
and ACK for non-2xx responses. As discussed below, a CANCEL request
will have the same value of the branch parameter as the request it
cancels. As discussed in Section 17.1.1.3, an ACK for a non-2xx
response will also have the same branch ID as the INVITE whose
response it acknowledges.
there is no limitation about the 2xx ACK branch - it says that it must
be the same for non-2xx ACK and CANCEL but this does not imply that for
2xx ACK it *must* be different.
Maybe they can point out more precisely the RFC section that supports
their statement.
regards,
bogdan
Federico Giannici wrote:
I'm using OpenSER 1.0.0 under OpenBSD
3.9-stable amd64.
An user of our SIP server have a VoIP PBX called "voispeed".
Their calls always hung up after 20 seconds because they say that our
SIP server doesn't correctly handle the branch parameter.
They say that RFC3261 specifies that ACK messages for a 2xx reply MUST
use a different "branch" parameter (contrary to ACK messages to non
2xx replies). But it seems that OpenSER doesn't recognize these ACKs
with different branch parameter and keeps sending the 200 reply.
Can somebody confirm this bug in OpenSER?
Ant solution?
Thanks.
--
___________________________________________________
__
|- giannici(a)neomedia.it
|ederico Giannici
http://www.neomedia.it
Presidente del CDA - Neomedia S.r.l.
___________________________________________________