Support CSeq header
authorRichard Whitehouse <github@richardwhiuk.com>
Sun, 29 Oct 2017 16:13:10 +0000 (16:13 +0000)
committerRichard Whitehouse <github@richardwhiuk.com>
Sun, 29 Oct 2017 16:13:10 +0000 (16:13 +0000)
src/codec.rs
src/parser.rs
src/types.rs

index 798b8ef8798d8e20fb3236a857e086448ad7ba11..040e995e04b83fb885dcfe5107610b1b3b236b4b 100644 (file)
@@ -434,8 +434,8 @@ mod tests {
                            bar.com\r\nCall-Info:<http://wwww.example.com/alice/photo.jpg>;\
                            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)| {
index 6861c0b03ee1bdab65d1f6078e4d346b77ee3f5a..e1fed22ca1e93af20269e74db7da8ce4b93089db 100644 (file)
@@ -832,6 +832,13 @@ named!(content_type_header<MediaType>, 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<Header>, alt!(
 // RFC 3261 Headers
        accept_header => { |a| Header::Accept(a) } |
@@ -848,5 +855,6 @@ named!(pub header<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) }
 ));
index 012cffb324a5a33969641d888e54c488098eb549..93a3382653be8576ae5ccb0347598476cc822a9b 100644 (file)
@@ -315,6 +315,7 @@ pub enum Header {
     ContentLanguage(Vec<LanguageTag>),
     ContentLength(u32),
     ContentType(MediaType),
+    CSeq(u32, Method),
     From(Uri),
     To(Uri),
     Extension { name: String, value: String },