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)| {
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) } |
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) }
));
Timestamp(Vec<f32>),
To(To),
Unsupported(Vec<OptionTag>),
+ UserAgent(Vec<Server>),
Extension { name: String, value: String },
}