1 Nov 2008 09:22
Sending BYE right after REFER
Igor Goncharovsky <igor.goncharovsky <at> gmail.com>
2008-11-01 08:22:35 GMT
2008-11-01 08:22:35 GMT
Hi, All! I am faced with error in one SIP realization and try to fix it. I am need to know what right behavior in that situation. Client call B2BUA, server answer and must redirect to another location. Server send REFER and for some reason send BYE after REFER and finish dialog. 1. Can UAS send BYE right after REFER sent? 2. If that happens what reply must be sent for 401 Unauth, received in response to REFER? This is current message flow: 192.168.1.120 192.168.1.1 | | 1 : |U------------(Continue reading)INVITE----------->| 2 : |<------100 Trying/INVITE------U| 3 : |<--------200 OK/INVITE--------U| 4 : |U-------------ACK------------->| 5 : |U------------INVITE----------->| 6 : |<------100 Trying/INVITE------U| 7 : |<--------200 OK/INVITE--------U| 8 : |U-------------ACK------------->| 9 : |U--------audio/PCMA(8)-------->| 10: |<------------REFER------------U| 11: |<-------------BYE-------------U| 12: |U-----401 Unauthorized/REFER-->| 13: |U-----401 Unauthorized/BYE---->| 14: |<-------------BYE-------------U| 15: |U----------200 OK/BYE--------->|
For the example used below, the gateway GW2 supports call hold using both
RFC 3261 (c=0.0.0.0) and RFC 3264 (a=inactive) methods.
Say SIP gateway GW1 sends an offer in reinvite to another gateway GW2 with
SDP containing c=0.0.0.0 and a=recvonly. As per O/A model, GW2 can generate
answer with SDP containing valid IP & a=sendonly or inactive. Since GW2 can
neither send any RTP/RTCP as the destination media address is not known nor
receive any RTP/RTCP from 0.0.0.0, it would be more appropriate that the
answer contains a=inactive. The '0.0.0.0' is a reserved value and is seldom
used as a packet address, and is not normally valid. The valid c= address in
the answer from GW 2 serves no purpose here or does it?
Similarly, GW1 sends an offer in reinvite to GW2 with SDP containing c=
0.0.0.0 and a=sendonly. As per O/A model GW2 can generate answer with SDP
containing valid IP & a=recvonly or inactive. Since GW2 can neither receive
any RTP/RTCP from 0.0.0.0 nor send any RTP/RTCP as the destination media
address is not known, it would be appropriate that the answer contains
a=inactive. Again, the valid c= address in the answer from GW 2 serves no
purpose here or does it?
If this c=address in the answer from GW2 has no purpose then it can as well
send c=0.0.0.0. Eventually making the answer contain c=0.0.0.0 and
a=inactive which is nothing but the answer, from a GW that supports both RFC
2543 and RFC 3264, for an offer to put the call on hold.
RSS Feed