From bf040d47190b2b9012f76d4e1c05f8b2fca31eda Mon Sep 17 00:00:00 2001 From: Richard Whitehouse Date: Sun, 29 Oct 2017 15:55:00 +0000 Subject: [PATCH] Support Content-Length header --- src/codec.rs | 4 ++-- src/parser.rs | 7 ++++++- src/types.rs | 1 + 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/codec.rs b/src/codec.rs index 09e2a8e..83055e2 100644 --- a/src/codec.rs +++ b/src/codec.rs @@ -433,8 +433,8 @@ mod tests { username=\"Alice\"\r\nCall-ID:f81d4fae-7dec-11d0-a765-00a0c91e6bf6@foo.\ bar.com\r\nCall-Info:;\ 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)| { diff --git a/src/parser.rs b/src/parser.rs index 95c045a..5560699 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -822,6 +822,10 @@ named!(content_language_header>, preceded!( tag!(b","), language_tag))); +named!(content_length_header, preceded!( + alt!(tag!(b"Content-Length:") | tag!(b"l:")), + number)); + named!(pub header
, alt!( // RFC 3261 Headers accept_header => { |a| Header::Accept(a) } | @@ -836,5 +840,6 @@ named!(pub 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) } )); diff --git a/src/types.rs b/src/types.rs index 2cb21a1..b868b62 100644 --- a/src/types.rs +++ b/src/types.rs @@ -311,6 +311,7 @@ pub enum Header { ContentDisposition(DispositionType, Vec), ContentEncoding(Vec), ContentLanguage(Vec), + ContentLength(u32), From(Uri), To(Uri), Extension { name: String, value: String }, -- 2.34.1