pion / sdp

A Go implementation of the SDP
https://pion.ly/
MIT License
148 stars 56 forks source link

SDP session part orders #163

Closed lisay-yan closed 1 year ago

lisay-yan commented 1 year ago

Your environment.

github.com/pion/sdp/v3@v3.0.6/unmarshal.go

If Input below SDP session, it will report SDP syntax error. v=0 o=LucentFS5000 1560282872 1560282872 IN IP4 test.com s=- t=0 0 c=IN IP4 10.243.83.56

unmarshal will parse c line in s9. And it will lead to syntax err. func s9(l *lexer)

After change c line order with t line, it works well. it seems s12 handle the c line. v=0 o=LucentFS5000 1560282872 1560282872 IN IP4 test.com s=- c=IN IP4 10.243.83.56 t=0 0

What did you do?

Any reason for SDP session part c line go to different state? What details meaning for s9, s12, s4 etc?

Since pion/sdp parse, take below SDP as syntax err, can I know it break which RFC?

v=0 o=LucentFS5000 1560282872 1560282872 IN IP4 test.com s=- t=0 0 c=IN IP4 10.243.83.56 -----> c line after t line, or before t line, goes to different state.

What did you expect?

Please let me know c line after t line break any RFC? I can't find anything to support it at RFC4655, while, just very draft checking.

If no RFC forbidden it, how about handle c line without order sensitive?

What happened?

SDP fail to set due to pion/sdp report syntax error. image

lisay-yan commented 1 year ago

SDP session part should keep order.