From: Richard Whitehouse Date: Sun, 29 Oct 2017 22:04:05 +0000 (+0000) Subject: Support Subject header X-Git-Url: https://git.richardwhiuk.com/?a=commitdiff_plain;h=88f4375a136e2995bb307d9fa285e8b4f6629156;p=rust-sip.git Support Subject header --- diff --git a/src/codec.rs b/src/codec.rs index 51c802a..a832bb3 100644 --- a/src/codec.rs +++ b/src/codec.rs @@ -445,7 +445,8 @@ mod tests { username=\"Bob\"\r\nProxy-Require:foo\r\nRecord-Route:\r\nReply-To:\r\nRequire:\ baz\r\nRetry-After:18000;duration=3600\r\nRoute:\r\nServer:rust-sip tokio\r\nVia: localhost\r\n\r\n") + atlanta.com;lr>\r\nServer:rust-sip tokio\r\nSubject:Foobaz\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 271d44c..e5f3db3 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -1104,6 +1104,10 @@ named!(server_header>, preceded!( tag!(b" "), server))); +named!(subject_header>, preceded!( + alt!(tag!(b"Subject:") | tag!(b"s")), + word)); + named!(pub header
, alt!( // RFC 3261 Headers accept_header => { |a| Header::Accept(a) } | @@ -1140,5 +1144,6 @@ named!(pub header
, alt!( require_header => { |r| Header::Require(r) } | retry_after_header => { |r| Header::RetryAfter(r) } | route_header => { |r| Header::Route(r) } | - server_header => { |s| Header::Server(s) } + server_header => { |s| Header::Server(s) } | + subject_header => { |s| Header::Subject(s) } )); diff --git a/src/types.rs b/src/types.rs index 4b39daf..fe88f44 100644 --- a/src/types.rs +++ b/src/types.rs @@ -426,6 +426,7 @@ pub enum Header { RetryAfter(RetryAfter), Route(Vec), Server(Vec), + Subject(Vec), To(Uri), Extension { name: String, value: String }, }