From: Richard Whitehouse Date: Sat, 4 Nov 2017 19:38:19 +0000 (+0000) Subject: Extension header support X-Git-Url: https://git.richardwhiuk.com/?a=commitdiff_plain;h=df220a02bbf00d0bd05f038f0125c352b003f3c9;p=rust-sip.git Extension header support --- diff --git a/src/codec.rs b/src/codec.rs index 8b7cb86..c597461 100644 --- a/src/codec.rs +++ b/src/codec.rs @@ -450,7 +450,8 @@ mod tests { 2\r\nTo:;tag=287447\r\nUnsupported:\ 100rel\r\nUser-Agent:rust-sip\r\nVia:SIP/2.0/UDP \ pc33.atlanta.com;branch=z9hG4bK776asdhds\r\nWarning:370 devnull \ - \"Failure\"\r\nWWW-Authenticate:Digest realm=\"biloxi.com\"\r\n\r\n") + \"Failure\"\r\nWWW-Authenticate:Digest \ + realm=\"biloxi.com\"\r\nX-Extension:test\r\n\r\n") }); let finished = request.and_then(|(socket, _request)| { diff --git a/src/parser.rs b/src/parser.rs index 308291e..d888f22 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -1223,6 +1223,11 @@ named!(www_authenticate_header, preceded!( tag!(b"WWW-Authenticate:"), challenge)); +named!(extension_header<(Vec, Vec)>, separated_pair!( + token, + tag!(":"), + word)); + named!(pub header
, alt!( // RFC 3261 Headers accept_header => { |a| Header::Accept(a) } | @@ -1268,5 +1273,7 @@ named!(pub header
, alt!( user_agent_header => { |u| Header::UserAgent(u) } | via_header => { |v| Header::Via(v) } | warning_header => { |w| Header::Warning(w) } | - www_authenticate_header => { |w| Header::WwwAuthenticate(w) } + www_authenticate_header => { |w| Header::WwwAuthenticate(w) } | +// Custom extension headers + extension_header => { |(n, v)| Header::Extension { name: n, value: v } } )); diff --git a/src/types.rs b/src/types.rs index f06fefe..88495dc 100644 --- a/src/types.rs +++ b/src/types.rs @@ -476,5 +476,5 @@ pub enum Header { Via(Vec), Warning(Vec), WwwAuthenticate(Challenge), - Extension { name: String, value: String }, + Extension { name: Vec, value: Vec }, }