Support Content-Length header
authorRichard Whitehouse <github@richardwhiuk.com>
Sun, 29 Oct 2017 15:55:00 +0000 (15:55 +0000)
committerRichard Whitehouse <github@richardwhiuk.com>
Sun, 29 Oct 2017 16:06:46 +0000 (16:06 +0000)
src/codec.rs
src/parser.rs
src/types.rs

index 09e2a8e1a0aad1565c699b4562f26c6dd6954dda..83055e2b877023eb2430091698fb9f82044e6aa3 100644 (file)
@@ -433,8 +433,8 @@ mod tests {
                            username=\"Alice\"\r\nCall-ID:f81d4fae-7dec-11d0-a765-00a0c91e6bf6@foo.\
                            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\nVia: \
-                           localhost\r\n\r\n")
+                           session\r\nContent-Encoding:gzip\r\nContent-Language:\
+                           en-gb\r\nContent-Length:0\r\nVia: localhost\r\n\r\n")
         });
 
         let finished = request.and_then(|(socket, _request)| {
index 95c045a7a9b8d85fc437134789ed6a0667b204c7..556069968710a6c9a45fae3fc525d944029bbc7b 100644 (file)
@@ -822,6 +822,10 @@ named!(content_language_header<Vec<LanguageTag>>, preceded!(
                tag!(b","),
                language_tag)));
 
+named!(content_length_header<u32>, preceded!(
+       alt!(tag!(b"Content-Length:") | tag!(b"l:")),
+       number));
+
 named!(pub header<Header>, alt!(
 // RFC 3261 Headers
        accept_header => { |a| Header::Accept(a) } |
@@ -836,5 +840,6 @@ named!(pub header<Header>, alt!(
        contact_header => { |c| Header::Contact(c) } |
        content_disposition_header => { |(t, p)| Header::ContentDisposition(t, p) } |
        content_encoding_header => { |e| Header::ContentEncoding(e) } |
-       content_language_header => { |l| Header::ContentLanguage(l) }
+       content_language_header => { |l| Header::ContentLanguage(l) } |
+       content_length_header => { |l| Header::ContentLength(l) }
 ));
index 2cb21a112b0127cf02226812f096ea62a6f815bf..b868b629378941b541728088c39e16b18ac6f2bf 100644 (file)
@@ -311,6 +311,7 @@ pub enum Header {
     ContentDisposition(DispositionType, Vec<DispositionParam>),
     ContentEncoding(Vec<ContentCoding>),
     ContentLanguage(Vec<LanguageTag>),
+    ContentLength(u32),
     From(Uri),
     To(Uri),
     Extension { name: String, value: String },