From bd278c9d514c2d087fe39228b4c1bb1c6083eb40 Mon Sep 17 00:00:00 2001 From: Richard Whitehouse Date: Sat, 4 Nov 2017 18:24:10 +0000 Subject: [PATCH] Support User-Agent header --- src/codec.rs | 2 +- src/parser.rs | 9 ++++++++- src/types.rs | 1 + 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/codec.rs b/src/codec.rs index a4b2cf3..e832b9c 100644 --- a/src/codec.rs +++ b/src/codec.rs @@ -448,7 +448,7 @@ mod tests { atlanta.com;lr>\r\nServer:rust-sip \ tokio\r\nSubject:Foobaz\r\nSupported:rec\r\nTimestamp:1 \ 2\r\nTo:;tag=287447\r\nUnsupported:\ - 100rel\r\nVia: localhost\r\n\r\n") + 100rel\r\nUser-Agent:rust-sip\r\nVia: localhost\r\n\r\n") }); let finished = request.and_then(|(socket, _request)| { diff --git a/src/parser.rs b/src/parser.rs index c5e6ac9..86f3cd5 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -1152,6 +1152,12 @@ named!(unsupported_header>, preceded!( tag!(b","), token))); +named!(user_agent_header>, preceded!( + tag!(b"User-Agent:"), + separated_nonempty_list!( + tag!(b" "), + server))); + named!(pub header
, alt!( // RFC 3261 Headers accept_header => { |a| Header::Accept(a) } | @@ -1193,5 +1199,6 @@ named!(pub header
, alt!( supported_header => { |s| Header::Supported(s) } | timestamp_header => { |t| Header::Timestamp(t) } | to_header => { |t| Header::To(t) } | - unsupported_header => { |u| Header::Unsupported(u) } + unsupported_header => { |u| Header::Unsupported(u) } | + user_agent_header => { |u| Header::UserAgent(u) } )); diff --git a/src/types.rs b/src/types.rs index 766242f..78c00ff 100644 --- a/src/types.rs +++ b/src/types.rs @@ -439,5 +439,6 @@ pub enum Header { Timestamp(Vec), To(To), Unsupported(Vec), + UserAgent(Vec), Extension { name: String, value: String }, } -- 2.34.1