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