30\r\nOrganization:Foobar\r\nPriority:normal\r\nProxy-Authenticate:\
Digest realm=\"atlanta.com\"\r\nProxy-Authorization:Digest \
username=\"Bob\"\r\nProxy-Require:foo\r\nRecord-Route:<sip:server10.\
- biloxi.com;lr>\r\nReply-To:<sip:bob@biloxi.com>\r\nVia: localhost\r\n\r\n")
+ biloxi.com;lr>\r\nReply-To:<sip:bob@biloxi.com>\r\nRequire:baz\r\nVia: \
+ localhost\r\n\r\n")
});
let finished = request.and_then(|(socket, _request)| {
tag!(b","),
reply_to)));
+named!(require_header<Vec<OptionTag>>, preceded!(
+ tag!(b"Require:"),
+ separated_nonempty_list!(
+ tag!(b","),
+ token)));
+
named!(pub header<Header>, alt!(
// RFC 3261 Headers
accept_header => { |a| Header::Accept(a) } |
proxy_authorization_header => { |p| Header::ProxyAuthorization(p) } |
proxy_require_header => { |p| Header::ProxyRequire(p) } |
record_route_header => { |r| Header::RecordRoute(r) } |
- reply_to_header => { |r| Header::ReplyTo(r) }
+ reply_to_header => { |r| Header::ReplyTo(r) } |
+ require_header => { |r| Header::Require(r) }
));
ProxyRequire(Vec<OptionTag>),
RecordRoute(Vec<Route>),
ReplyTo(Vec<ReplyTo>),
+ Require(Vec<OptionTag>),
To(Uri),
Extension { name: String, value: String },
}