Bill,
There is a set of rules, which you quote, for what may be in an answer
depending on what is in the offer. But that does not constrain what may
be in a subsequent offer relative to the same stream. E.g.:
0) A offers sendrecv, B answers sendrecv
1) A offers sendonly, B answers recvonly
2) B offers inactive, B answers inactive
3) A offers sendrecv, B answers sendonly
4) B offers sendrecv, A answers sendrecv
In (0) a normal call is established. In (1) A puts the call on hold. In
(2) B gets tired of waiting and also puts the call on hold. In (3) A
tries to take the call off hold and finds out he has been held. In (4) B
takes the call off hold so A and B can talk again.
The trick is that each side keeps the state that it *wants* to be in. It
puts that into offers. In answers it puts the min(what it wants, what it
is permitted based on the offer).
Paul
Bill Moats wrote:
> Hello all, I have been surfing your SIP forum for quite a while and have
> found it extremely useful.
> I hope that you can shed some light on my current call hold problem.
> I have been implementing a SIP protocol stack using SDP and have run into
> problems when dealing with a phone going on hold.
>
> RFC3264 Section 6.1 says:
> "If a stream is offered as sendonly, the corresponding stream MUST be marked
> as recvonly or inactive in the answer."
>
> RFC3264 Section 8.4 also says:
> "If the stream to be placed on hold was previously a sendrecv media stream
> it is placed on hold by marking it as sendonly. If the stream to be placed
> on hold was previously a recvonly media stream, it is placed on hold by
> marking it inactive.
> This means that a stream is placed "on hold" separately in each
> direction. Each stream is placed "on hold" independently. The
> recipient of an offer for a stream on-hold SHOULD NOT automatically
> return an answer with the corresponding stream on hold. An SDP with
> all streams "on hold" is referred to as held SDP."
>
> In my mind, it seems to me that RFC3264 is very clear on how to deal with
> ANY offer that is marked a=sendonly.
> You can 1)set the port to 0 to reject the offer 2) respond with a=recvonly
> 3) respond with a=inactive.
> You certainly can NOT respond to a sendonly stream with sendrecv!!!
>
> However, if my software responds to a=sendonly with a=recvonly the phone I
> have will only continue to offer a=sendonly from that point on.
> But then I read RFC4317 Section 3.2 which lists an example in which an offer
> a=sendonly is responded to with no direction attribute (which implies
> sendrecv!). The section of interest is below:
>
> [Second-Offer]
> v=0
> o=bob 2808844564 2808844565 IN IP4 host.biloxi.example.com
> s=
> c=IN IP4 host.biloxi.example.com
> t=0 0
> m=audio 49172 RTP/AVP 97
> a=rtpmap:97 iLBC/8000
> a=sendonly
> m=audio 49174 RTP/AVP 98
> a=rtpmap:98 telephone-event/8000
> a=recvonly
>
> [Second-Answer]
> v=0
> o=alice 2890844526 2890844527 IN IP4 host.atlanta.example.com
> s=
> c=IN IP4 host.atlanta.example.com
> t=0 0
> m=audio 49170 RTP/AVP 0 97
> a=rtpmap:0 PCMU/8000
> a=rtpmap:97 iLBC/8000
> m=audio 49172 RTP/AVP 98
> a=rtpmap:98 telephone-event/8000
> a=sendonly
>
> Is this not a violation of the statement from RFC3264 Section 8.4!!!! Or is
> there some other mechanism to define why this happens?
> Is this possibly an error in RFC4317? Is the phone I am using non-compliant?
>
> Any assistance or advice you could give on the subject would be greatly
> appreciated!
>
> Thanks in advance
>
> Bill
>
>
>
>
>
> _______________________________________________
> Sip-implementors mailing list
> [email protected]
> https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors
>
_______________________________________________
Sip-implementors mailing list
[email protected]
https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors