Support Supported header
authorRichard Whitehouse <github@richardwhiuk.com>
Sun, 29 Oct 2017 22:08:33 +0000 (22:08 +0000)
committerRichard Whitehouse <github@richardwhiuk.com>
Sun, 29 Oct 2017 22:08:33 +0000 (22:08 +0000)
src/codec.rs
src/parser.rs
src/types.rs

index a832bb3feb8a64565296b053aa5d0035d1367cc1..ff40f5f163602656e0abfa808c406d9e75b5d073 100644 (file)
@@ -445,8 +445,8 @@ mod tests {
                            username=\"Bob\"\r\nProxy-Require:foo\r\nRecord-Route:<sip:server10.\
                            biloxi.com;lr>\r\nReply-To:<sip:bob@biloxi.com>\r\nRequire:\
                            baz\r\nRetry-After:18000;duration=3600\r\nRoute:<sip:bigbox3.site3.\
-                           atlanta.com;lr>\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)| {
index e5f3db361d9a8ef65f0576e5a5f350d1ea75a25c..2667bde53b4b7f48c444fbfc689ac92284976838 100644 (file)
@@ -1108,6 +1108,12 @@ named!(subject_header<Vec<u8>>, preceded!(
        alt!(tag!(b"Subject:") | tag!(b"s")),
        word));
 
+named!(supported_header<Vec<OptionTag>>, preceded!(
+       alt!(tag!(b"Supported:") | tag!(b"k")),
+       separated_nonempty_list!(
+               tag!(b","),
+               token)));
+
 named!(pub header<Header>, alt!(
 // RFC 3261 Headers
        accept_header => { |a| Header::Accept(a) } |
@@ -1145,5 +1151,6 @@ named!(pub header<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) }
 ));
index fe88f44ac3b02e1a3710109faabb54052a13991f..89ac8e817b2143d5b520370e5bbb4d5cb7e23cb4 100644 (file)
@@ -427,6 +427,7 @@ pub enum Header {
     Route(Vec<Route>),
     Server(Vec<Server>),
     Subject(Vec<u8>),
+    Supported(Vec<OptionTag>),
     To(Uri),
     Extension { name: String, value: String },
 }