Support User-Agent header
authorRichard Whitehouse <github@richardwhiuk.com>
Sat, 4 Nov 2017 18:24:10 +0000 (18:24 +0000)
committerRichard Whitehouse <github@richardwhiuk.com>
Sat, 4 Nov 2017 18:24:10 +0000 (18:24 +0000)
src/codec.rs
src/parser.rs
src/types.rs

index a4b2cf30bc34ecf0b5e86869b9de9cdb3d328500..e832b9cbdf25c3b6b319c8b0caa6f653f63e9fa4 100644 (file)
@@ -448,7 +448,7 @@ mod tests {
                            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\nUnsupported:\
-                           100rel\r\nVia: localhost\r\n\r\n")
+                           100rel\r\nUser-Agent:rust-sip\r\nVia: localhost\r\n\r\n")
         });
 
         let finished = request.and_then(|(socket, _request)| {
index c5e6ac94d2690ffc158917fb71346bfc062a1d59..86f3cd51c6838ef269c392e85c3660fef0d7c33b 100644 (file)
@@ -1152,6 +1152,12 @@ named!(unsupported_header<Vec<OptionTag>>, preceded!(
                tag!(b","),
                token)));
 
+named!(user_agent_header<Vec<Server>>, preceded!(
+       tag!(b"User-Agent:"),
+       separated_nonempty_list!(
+               tag!(b" "),
+               server)));
+
 named!(pub header<Header>, alt!(
 // RFC 3261 Headers
        accept_header => { |a| Header::Accept(a) } |
@@ -1193,5 +1199,6 @@ named!(pub header<Header>, alt!(
        supported_header => { |s| Header::Supported(s) } |
        timestamp_header => { |t| Header::Timestamp(t) } |
        to_header => { |t| Header::To(t) } |
-       unsupported_header => { |u| Header::Unsupported(u) }
+       unsupported_header => { |u| Header::Unsupported(u) } |
+       user_agent_header => { |u| Header::UserAgent(u) }
 ));
index 766242f878873a754f050502178910e84314ac7c..78c00ff398084f35389f2318aa59186efaa813bc 100644 (file)
@@ -439,5 +439,6 @@ pub enum Header {
     Timestamp(Vec<f32>),
     To(To),
     Unsupported(Vec<OptionTag>),
+    UserAgent(Vec<Server>),
     Extension { name: String, value: String },
 }