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)| {
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) } |
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) }
));
Route(Vec<Route>),
Server(Vec<Server>),
Subject(Vec<u8>),
+ Supported(Vec<OptionTag>),
To(Uri),
Extension { name: String, value: String },
}