From: Richard Whitehouse Date: Sun, 29 Oct 2017 16:13:10 +0000 (+0000) Subject: Support CSeq header X-Git-Url: https://git.richardwhiuk.com/?a=commitdiff_plain;h=162f202977e2d9337c60caa54316616307a6ed17;p=rust-sip.git Support CSeq header --- diff --git a/src/codec.rs b/src/codec.rs index 798b8ef..040e995 100644 --- a/src/codec.rs +++ b/src/codec.rs @@ -434,8 +434,8 @@ mod tests { bar.com\r\nCall-Info:;\ purpose=icon\r\nContact:*\r\nContent-Disposition:\ session\r\nContent-Encoding:gzip\r\nContent-Language:\ - en-gb\r\nContent-Length:0\r\nContent-Type:text/plain\r\nVia: \ - localhost\r\n\r\n") + en-gb\r\nContent-Length:0\r\nContent-Type:text/plain\r\nCSeq:1 \ + MESSAGE\r\nVia: localhost\r\n\r\n") }); let finished = request.and_then(|(socket, _request)| { diff --git a/src/parser.rs b/src/parser.rs index 6861c0b..e1fed22 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -832,6 +832,13 @@ named!(content_type_header, preceded!( alt!(tag!(b"Content-Type:") | tag!(b"c:")), media_type)); +named!(cseq_header<(u32, Method)>, preceded!( + tag!(b"CSeq:"), + separated_pair!( + number, + tag!(" "), + method))); + named!(pub header
, alt!( // RFC 3261 Headers accept_header => { |a| Header::Accept(a) } | @@ -848,5 +855,6 @@ named!(pub header
, alt!( content_encoding_header => { |e| Header::ContentEncoding(e) } | content_language_header => { |l| Header::ContentLanguage(l) } | content_length_header => { |l| Header::ContentLength(l) } | - content_type_header => { |t| Header::ContentType(t) } + content_type_header => { |t| Header::ContentType(t) } | + cseq_header => { |(c, m)| Header::CSeq(c, m) } )); diff --git a/src/types.rs b/src/types.rs index 012cffb..93a3382 100644 --- a/src/types.rs +++ b/src/types.rs @@ -315,6 +315,7 @@ pub enum Header { ContentLanguage(Vec), ContentLength(u32), ContentType(MediaType), + CSeq(u32, Method), From(Uri), To(Uri), Extension { name: String, value: String },