From e53f7712788563387e6a907f4191410640999389 Mon Sep 17 00:00:00 2001 From: Richard Whitehouse Date: Sun, 29 Oct 2017 22:08:33 +0000 Subject: [PATCH] Support Supported header --- src/codec.rs | 4 ++-- src/parser.rs | 9 ++++++++- src/types.rs | 1 + 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/codec.rs b/src/codec.rs index a832bb3..ff40f5f 100644 --- a/src/codec.rs +++ b/src/codec.rs @@ -445,8 +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\nSubject:Foobaz\r\nVia: \ - localhost\r\n\r\n") + atlanta.com;lr>\r\nServer:rust-sip \ + tokio\r\nSubject:Foobaz\r\nSupported:rec\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 e5f3db3..2667bde 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -1108,6 +1108,12 @@ named!(subject_header>, preceded!( alt!(tag!(b"Subject:") | tag!(b"s")), word)); +named!(supported_header>, preceded!( + alt!(tag!(b"Supported:") | tag!(b"k")), + separated_nonempty_list!( + tag!(b","), + token))); + named!(pub header
, alt!( // RFC 3261 Headers accept_header => { |a| Header::Accept(a) } | @@ -1145,5 +1151,6 @@ named!(pub header
, alt!( retry_after_header => { |r| Header::RetryAfter(r) } | route_header => { |r| Header::Route(r) } | server_header => { |s| Header::Server(s) } | - subject_header => { |s| Header::Subject(s) } + subject_header => { |s| Header::Subject(s) } | + supported_header => { |s| Header::Supported(s) } )); diff --git a/src/types.rs b/src/types.rs index fe88f44..89ac8e8 100644 --- a/src/types.rs +++ b/src/types.rs @@ -427,6 +427,7 @@ pub enum Header { Route(Vec), Server(Vec), Subject(Vec), + Supported(Vec), To(Uri), Extension { name: String, value: String }, } -- 2.34.1