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

index 520986e93ff60fcafcff3148b9df63f0a420a412..a4b2cf30bc34ecf0b5e86869b9de9cdb3d328500 100644 (file)
@@ -447,8 +447,8 @@ mod tests {
                            baz\r\nRetry-After:18000;duration=3600\r\nRoute:<sip:bigbox3.site3.\
                            atlanta.com;lr>\r\nServer:rust-sip \
                            tokio\r\nSubject:Foobaz\r\nSupported:rec\r\nTimestamp:1 \
-                           2\r\nTo:<sip:operator@cs.columbia.edu>;tag=287447\r\nVia: \
-                           localhost\r\n\r\n")
+                           2\r\nTo:<sip:operator@cs.columbia.edu>;tag=287447\r\nUnsupported:\
+                           100rel\r\nVia: localhost\r\n\r\n")
         });
 
         let finished = request.and_then(|(socket, _request)| {
index fb62ef9a0c6e5de0d560b051623eb9221d4591f8..c5e6ac94d2690ffc158917fb71346bfc062a1d59 100644 (file)
@@ -1146,6 +1146,12 @@ named!(to_header<To>, preceded!(
                        tag!(b";"),
                        to_param)))));
 
+named!(unsupported_header<Vec<OptionTag>>, preceded!(
+       tag!(b"Unsupported:"),
+       separated_nonempty_list!(
+               tag!(b","),
+               token)));
+
 named!(pub header<Header>, alt!(
 // RFC 3261 Headers
        accept_header => { |a| Header::Accept(a) } |
@@ -1186,5 +1192,6 @@ named!(pub header<Header>, alt!(
        subject_header => { |s| Header::Subject(s) } |
        supported_header => { |s| Header::Supported(s) } |
        timestamp_header => { |t| Header::Timestamp(t) } |
-       to_header => { |t| Header::To(t) }
+       to_header => { |t| Header::To(t) } |
+       unsupported_header => { |u| Header::Unsupported(u) }
 ));
index a126d350febc1fff348c33d1a5db3b8813a212f8..766242f878873a754f050502178910e84314ac7c 100644 (file)
@@ -438,5 +438,6 @@ pub enum Header {
     Supported(Vec<OptionTag>),
     Timestamp(Vec<f32>),
     To(To),
+    Unsupported(Vec<OptionTag>),
     Extension { name: String, value: String },
 }