session\r\nContent-Encoding:gzip\r\nContent-Language:\
en-gb\r\nContent-Length:0\r\nContent-Type:text/plain\r\nCSeq:1 \
MESSAGE\r\nDate:Sat, 13 Nov 2010 23:29:00 \
- GMT\r\nError-Info:<sip:not-in-service-recording@atlanta.com>\r\nVia: \
- localhost\r\n\r\n")
+ GMT\r\nError-Info:<sip:not-in-service-recording@atlanta.\
+ com>\r\nExpires:30\r\nVia: localhost\r\n\r\n")
});
let finished = request.and_then(|(socket, _request)| {
tag!(","),
error_uri)));
+named!(expires_header<u32>, preceded!(
+ tag!(b"Expires:"),
+ number));
+
named!(pub header<Header>, alt!(
// RFC 3261 Headers
accept_header => { |a| Header::Accept(a) } |
content_type_header => { |t| Header::ContentType(t) } |
cseq_header => { |(c, m)| Header::CSeq(c, m) } |
date_header => { |d| Header::Date(d) } |
- error_info_header => { |e| Header::ErrorInfo(e) }
+ error_info_header => { |e| Header::ErrorInfo(e) } |
+ expires_header => { |e| Header::Expires(e) }
));
CSeq(u32, Method),
Date(DateTime),
ErrorInfo(Vec<ErrorUri>),
+ Expires(u32),
From(Uri),
To(Uri),
Extension { name: String, value: String },