fix(lib): remove logs that contain request and response data
Closes #1281
This commit is contained in:
		| @@ -184,13 +184,13 @@ impl FromStr for Basic { | |||||||
|                         password: password |                         password: password | ||||||
|                     }) |                     }) | ||||||
|                 }, |                 }, | ||||||
|                 Err(e) => { |                 Err(_) => { | ||||||
|                     debug!("Basic::from_utf8 error={:?}", e); |                     debug!("Basic::from_str utf8 error"); | ||||||
|                     Err(::Error::Header) |                     Err(::Error::Header) | ||||||
|                 } |                 } | ||||||
|             }, |             }, | ||||||
|             Err(e) => { |             Err(_) => { | ||||||
|                 debug!("Basic::from_base64 error={:?}", e); |                 debug!("Basic::from_str base64 error"); | ||||||
|                 Err(::Error::Header) |                 Err(::Error::Header) | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|   | |||||||
| @@ -240,17 +240,6 @@ impl<'a> fmt::Display for ValueString<'a> { | |||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| struct HeaderValueString<'a, H: Header + 'a>(&'a H); |  | ||||||
|  |  | ||||||
| impl<'a, H: Header> fmt::Debug for HeaderValueString<'a, H> { |  | ||||||
|     #[inline] |  | ||||||
|     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { |  | ||||||
|         try!(f.write_str("\"")); |  | ||||||
|         try!(self.0.fmt_header(&mut Formatter(Multi::Join(true, f)))); |  | ||||||
|         f.write_str("\"") |  | ||||||
|     } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| struct NewlineReplacer<'a, F: fmt::Write + 'a>(&'a mut F); | struct NewlineReplacer<'a, F: fmt::Write + 'a>(&'a mut F); | ||||||
|  |  | ||||||
| impl<'a, F: fmt::Write + 'a> fmt::Write for NewlineReplacer<'a, F> { | impl<'a, F: fmt::Write + 'a> fmt::Write for NewlineReplacer<'a, F> { | ||||||
| @@ -394,7 +383,6 @@ impl Headers { | |||||||
|     /// |     /// | ||||||
|     /// The field is determined by the type of the value being set. |     /// The field is determined by the type of the value being set. | ||||||
|     pub fn set<H: Header>(&mut self, value: H) { |     pub fn set<H: Header>(&mut self, value: H) { | ||||||
|         trace!("Headers.set( {:?}, {:?} )", header_name::<H>(), HeaderValueString(&value)); |  | ||||||
|         self.data.insert(HeaderName(Ascii::new(Cow::Borrowed(header_name::<H>()))), |         self.data.insert(HeaderName(Ascii::new(Cow::Borrowed(header_name::<H>()))), | ||||||
|                          Item::new_typed(value)); |                          Item::new_typed(value)); | ||||||
|     } |     } | ||||||
| @@ -432,7 +420,6 @@ impl Headers { | |||||||
|     /// Note that this function may return `None` even though a header was removed. If you want to |     /// Note that this function may return `None` even though a header was removed. If you want to | ||||||
|     /// know whether a header exists, rather rely on `has`. |     /// know whether a header exists, rather rely on `has`. | ||||||
|     pub fn remove<H: Header>(&mut self) -> Option<H> { |     pub fn remove<H: Header>(&mut self) -> Option<H> { | ||||||
|         trace!("Headers.remove( {:?} )", header_name::<H>()); |  | ||||||
|         self.data.remove(&HeaderName(Ascii::new(Cow::Borrowed(header_name::<H>())))) |         self.data.remove(&HeaderName(Ascii::new(Cow::Borrowed(header_name::<H>())))) | ||||||
|             .and_then(Item::into_typed::<H>) |             .and_then(Item::into_typed::<H>) | ||||||
|     } |     } | ||||||
| @@ -488,7 +475,6 @@ impl Headers { | |||||||
|     pub fn set_raw<K: Into<Cow<'static, str>>, V: Into<Raw>>(&mut self, name: K, value: V) { |     pub fn set_raw<K: Into<Cow<'static, str>>, V: Into<Raw>>(&mut self, name: K, value: V) { | ||||||
|         let name = name.into(); |         let name = name.into(); | ||||||
|         let value = value.into(); |         let value = value.into(); | ||||||
|         trace!("Headers.set_raw( {:?}, {:?} )", name, value); |  | ||||||
|         self.data.insert(HeaderName(Ascii::new(name)), Item::new_raw(value)); |         self.data.insert(HeaderName(Ascii::new(name)), Item::new_raw(value)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -510,7 +496,6 @@ impl Headers { | |||||||
|     pub fn append_raw<K: Into<Cow<'static, str>>, V: Into<Raw>>(&mut self, name: K, value: V) { |     pub fn append_raw<K: Into<Cow<'static, str>>, V: Into<Raw>>(&mut self, name: K, value: V) { | ||||||
|         let name = name.into(); |         let name = name.into(); | ||||||
|         let value = value.into(); |         let value = value.into(); | ||||||
|         trace!("Headers.append_raw( {:?}, {:?} )", name, value); |  | ||||||
|         let name = HeaderName(Ascii::new(name)); |         let name = HeaderName(Ascii::new(name)); | ||||||
|         if let Some(item) = self.data.get_mut(&name) { |         if let Some(item) = self.data.get_mut(&name) { | ||||||
|             item.raw_mut().push(value); |             item.raw_mut().push(value); | ||||||
| @@ -521,7 +506,6 @@ impl Headers { | |||||||
|  |  | ||||||
|     /// Remove a header by name. |     /// Remove a header by name. | ||||||
|     pub fn remove_raw(&mut self, name: &str) { |     pub fn remove_raw(&mut self, name: &str) { | ||||||
|         trace!("Headers.remove_raw( {:?} )", name); |  | ||||||
|         self.data.remove(name); |         self.data.remove(name); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ use futures::task::Task; | |||||||
| use tokio_io::{AsyncRead, AsyncWrite}; | use tokio_io::{AsyncRead, AsyncWrite}; | ||||||
| use tokio_proto::streaming::pipeline::{Frame, Transport}; | use tokio_proto::streaming::pipeline::{Frame, Transport}; | ||||||
|  |  | ||||||
| use http::{self, Http1Transaction, DebugTruncate}; | use http::{self, Http1Transaction}; | ||||||
| use http::io::{Cursor, Buffered}; | use http::io::{Cursor, Buffered}; | ||||||
| use http::h1::{Encoder, Decoder}; | use http::h1::{Encoder, Decoder}; | ||||||
| use method::Method; | use method::Method; | ||||||
| @@ -90,13 +90,13 @@ where I: AsyncRead + AsyncWrite, | |||||||
|                 self.io.consume_leading_lines(); |                 self.io.consume_leading_lines(); | ||||||
|                 let was_mid_parse = !self.io.read_buf().is_empty(); |                 let was_mid_parse = !self.io.read_buf().is_empty(); | ||||||
|                 return if was_mid_parse { |                 return if was_mid_parse { | ||||||
|                     debug!("parse error ({}) with bytes: {:?}", e, self.io.read_buf()); |                     debug!("parse error ({}) with {} bytes", e, self.io.read_buf().len()); | ||||||
|                     Ok(Async::Ready(Some(Frame::Error { error: e }))) |                     Ok(Async::Ready(Some(Frame::Error { error: e }))) | ||||||
|                 } else if must_respond_with_error { |                 } else if must_respond_with_error { | ||||||
|                     trace!("parse error with 0 input, err = {:?}", e); |                     trace!("parse error with 0 input, err = {:?}", e); | ||||||
|                     Ok(Async::Ready(Some(Frame::Error { error: e }))) |                     Ok(Async::Ready(Some(Frame::Error { error: e }))) | ||||||
|                 } else { |                 } else { | ||||||
|                     debug!("socket complete"); |                     debug!("read eof"); | ||||||
|                     Ok(Async::Ready(None)) |                     Ok(Async::Ready(None)) | ||||||
|                 }; |                 }; | ||||||
|             } |             } | ||||||
| @@ -669,20 +669,19 @@ struct DebugFrame<'a, T: fmt::Debug + 'a, B: AsRef<[u8]> + 'a>(&'a Frame<http::M | |||||||
| impl<'a, T: fmt::Debug + 'a, B: AsRef<[u8]> + 'a> fmt::Debug for DebugFrame<'a, T, B> { | impl<'a, T: fmt::Debug + 'a, B: AsRef<[u8]> + 'a> fmt::Debug for DebugFrame<'a, T, B> { | ||||||
|     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { |     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { | ||||||
|         match *self.0 { |         match *self.0 { | ||||||
|             Frame::Message { ref message, ref body } => { |             Frame::Message { ref body, .. } => { | ||||||
|                 f.debug_struct("Message") |                 f.debug_struct("Message") | ||||||
|                     .field("message", message) |  | ||||||
|                     .field("body", body) |                     .field("body", body) | ||||||
|                     .finish() |                     .finish() | ||||||
|             }, |             }, | ||||||
|             Frame::Body { chunk: Some(ref chunk) } => { |             Frame::Body { chunk: Some(ref chunk) } => { | ||||||
|                 f.debug_struct("Body") |                 f.debug_struct("Body") | ||||||
|                     .field("chunk", &DebugTruncate(chunk.as_ref())) |                     .field("bytes", &chunk.as_ref().len()) | ||||||
|                     .finish() |                     .finish() | ||||||
|             }, |             }, | ||||||
|             Frame::Body { chunk: None } => { |             Frame::Body { chunk: None } => { | ||||||
|                 f.debug_struct("Body") |                 f.debug_struct("Body") | ||||||
|                     .field("chunk", &None::<()>) |                     .field("bytes", &None::<()>) | ||||||
|                     .finish() |                     .finish() | ||||||
|             }, |             }, | ||||||
|             Frame::Error { ref error } => { |             Frame::Error { ref error } => { | ||||||
|   | |||||||
| @@ -59,7 +59,7 @@ impl Encoder { | |||||||
|                 } |                 } | ||||||
|                 let n = { |                 let n = { | ||||||
|                     let max = cmp::min(*remaining as usize, msg.len()); |                     let max = cmp::min(*remaining as usize, msg.len()); | ||||||
|                     trace!("sized write, len = {}, remaining = {}", max, remaining); |                     trace!("sized write = {}", max); | ||||||
|                     let slice = &msg[..max]; |                     let slice = &msg[..max]; | ||||||
|  |  | ||||||
|                     try!(w.write_atomic(&[slice])) |                     try!(w.write_atomic(&[slice])) | ||||||
| @@ -70,8 +70,7 @@ impl Encoder { | |||||||
|                 } |                 } | ||||||
|  |  | ||||||
|                 *remaining -= n as u64; |                 *remaining -= n as u64; | ||||||
|                 debug!("encoded {} bytes", n); |                 trace!("encoded {} bytes, remaining = {}", n, remaining); | ||||||
|                 trace!("encode sized complete, remaining = {}", remaining); |  | ||||||
|                 Ok(n) |                 Ok(n) | ||||||
|             }, |             }, | ||||||
|         } |         } | ||||||
|   | |||||||
| @@ -23,7 +23,6 @@ impl Http1Transaction for ServerTransaction { | |||||||
|         if buf.len() == 0 { |         if buf.len() == 0 { | ||||||
|             return Ok(None); |             return Ok(None); | ||||||
|         } |         } | ||||||
|         trace!("parse({:?})", buf); |  | ||||||
|         let mut headers_indices = [HeaderIndices { |         let mut headers_indices = [HeaderIndices { | ||||||
|             name: (0, 0), |             name: (0, 0), | ||||||
|             value: (0, 0) |             value: (0, 0) | ||||||
| @@ -34,7 +33,7 @@ impl Http1Transaction for ServerTransaction { | |||||||
|             let mut req = httparse::Request::new(&mut headers); |             let mut req = httparse::Request::new(&mut headers); | ||||||
|             match try!(req.parse(&buf)) { |             match try!(req.parse(&buf)) { | ||||||
|                 httparse::Status::Complete(len) => { |                 httparse::Status::Complete(len) => { | ||||||
|                     trace!("httparse Complete({})", len); |                     trace!("Request.parse Complete({})", len); | ||||||
|                     let method = try!(req.method.unwrap().parse()); |                     let method = try!(req.method.unwrap().parse()); | ||||||
|                     let path = req.path.unwrap(); |                     let path = req.path.unwrap(); | ||||||
|                     let bytes_ptr = buf.as_ref().as_ptr() as usize; |                     let bytes_ptr = buf.as_ref().as_ptr() as usize; | ||||||
| @@ -110,11 +109,9 @@ impl Http1Transaction for ServerTransaction { | |||||||
|  |  | ||||||
|  |  | ||||||
|     fn encode(mut head: MessageHead<Self::Outgoing>, has_body: bool, method: &mut Option<Method>, dst: &mut Vec<u8>) -> Encoder { |     fn encode(mut head: MessageHead<Self::Outgoing>, has_body: bool, method: &mut Option<Method>, dst: &mut Vec<u8>) -> Encoder { | ||||||
|         trace!("ServerTransaction::encode head={:?}, has_body={}, method={:?}", |         trace!("ServerTransaction::encode has_body={}, method={:?}", has_body, method); | ||||||
|                head, has_body, method); |  | ||||||
|  |  | ||||||
|         let body = ServerTransaction::set_length(&mut head, has_body, method.as_ref()); |         let body = ServerTransaction::set_length(&mut head, has_body, method.as_ref()); | ||||||
|         debug!("encode headers = {:?}", head.headers); |  | ||||||
|  |  | ||||||
|         let init_cap = 30 + head.headers.len() * AVERAGE_HEADER_SIZE; |         let init_cap = 30 + head.headers.len() * AVERAGE_HEADER_SIZE; | ||||||
|         dst.reserve(init_cap); |         dst.reserve(init_cap); | ||||||
| @@ -180,7 +177,6 @@ impl Http1Transaction for ClientTransaction { | |||||||
|         if buf.len() == 0 { |         if buf.len() == 0 { | ||||||
|             return Ok(None); |             return Ok(None); | ||||||
|         } |         } | ||||||
|         trace!("parse({:?})", buf); |  | ||||||
|         let mut headers_indices = [HeaderIndices { |         let mut headers_indices = [HeaderIndices { | ||||||
|             name: (0, 0), |             name: (0, 0), | ||||||
|             value: (0, 0) |             value: (0, 0) | ||||||
| @@ -192,7 +188,7 @@ impl Http1Transaction for ClientTransaction { | |||||||
|             let bytes = buf.as_ref(); |             let bytes = buf.as_ref(); | ||||||
|             match try!(res.parse(bytes)) { |             match try!(res.parse(bytes)) { | ||||||
|                 httparse::Status::Complete(len) => { |                 httparse::Status::Complete(len) => { | ||||||
|                     trace!("Response.try_parse Complete({})", len); |                     trace!("Response.parse Complete({})", len); | ||||||
|                     let code = res.code.unwrap(); |                     let code = res.code.unwrap(); | ||||||
|                     let status = try!(StatusCode::try_from(code).map_err(|_| ::Error::Status)); |                     let status = try!(StatusCode::try_from(code).map_err(|_| ::Error::Status)); | ||||||
|                     let reason = match status.canonical_reason() { |                     let reason = match status.canonical_reason() { | ||||||
| @@ -273,14 +269,11 @@ impl Http1Transaction for ClientTransaction { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     fn encode(mut head: MessageHead<Self::Outgoing>, has_body: bool, method: &mut Option<Method>, dst: &mut Vec<u8>) -> Encoder { |     fn encode(mut head: MessageHead<Self::Outgoing>, has_body: bool, method: &mut Option<Method>, dst: &mut Vec<u8>) -> Encoder { | ||||||
|         trace!("ClientTransaction::encode head={:?}, has_body={}, method={:?}", |         trace!("ClientTransaction::encode has_body={}, method={:?}", has_body, method); | ||||||
|                head, has_body, method); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         *method = Some(head.subject.0.clone()); |         *method = Some(head.subject.0.clone()); | ||||||
|  |  | ||||||
|         let body = ClientTransaction::set_length(&mut head, has_body); |         let body = ClientTransaction::set_length(&mut head, has_body); | ||||||
|         debug!("encode headers = {:?}", head.headers); |  | ||||||
|  |  | ||||||
|         let init_cap = 30 + head.headers.len() * AVERAGE_HEADER_SIZE; |         let init_cap = 30 + head.headers.len() * AVERAGE_HEADER_SIZE; | ||||||
|         dst.reserve(init_cap); |         dst.reserve(init_cap); | ||||||
|   | |||||||
| @@ -6,7 +6,7 @@ use std::ptr; | |||||||
| use futures::{Async, Poll}; | use futures::{Async, Poll}; | ||||||
| use tokio_io::{AsyncRead, AsyncWrite}; | use tokio_io::{AsyncRead, AsyncWrite}; | ||||||
|  |  | ||||||
| use http::{Http1Transaction, MessageHead, DebugTruncate}; | use http::{Http1Transaction, MessageHead}; | ||||||
| use bytes::{BytesMut, Bytes}; | use bytes::{BytesMut, Bytes}; | ||||||
|  |  | ||||||
| const INIT_BUFFER_SIZE: usize = 8192; | const INIT_BUFFER_SIZE: usize = 8192; | ||||||
| @@ -224,8 +224,9 @@ impl<T: AsRef<[u8]>> Cursor<T> { | |||||||
|  |  | ||||||
| impl<T: AsRef<[u8]>> fmt::Debug for Cursor<T> { | impl<T: AsRef<[u8]>> fmt::Debug for Cursor<T> { | ||||||
|     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { |     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { | ||||||
|         f.debug_tuple("Cursor") |         f.debug_struct("Cursor") | ||||||
|             .field(&DebugTruncate(self.buf())) |             .field("pos", &self.pos) | ||||||
|  |             .field("len", &self.bytes.as_ref().len()) | ||||||
|             .finish() |             .finish() | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -150,23 +150,6 @@ pub trait Http1Transaction { | |||||||
|  |  | ||||||
| pub type ParseResult<T> = ::Result<Option<(MessageHead<T>, usize)>>; | pub type ParseResult<T> = ::Result<Option<(MessageHead<T>, usize)>>; | ||||||
|  |  | ||||||
| struct DebugTruncate<'a>(&'a [u8]); |  | ||||||
|  |  | ||||||
| impl<'a> fmt::Debug for DebugTruncate<'a> { |  | ||||||
|     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { |  | ||||||
|         let bytes = self.0; |  | ||||||
|         if bytes.len() > 32 { |  | ||||||
|             try!(f.write_str("[")); |  | ||||||
|             for byte in &bytes[..32] { |  | ||||||
|                 try!(write!(f, "{:?}, ", byte)); |  | ||||||
|             } |  | ||||||
|             write!(f, "... {}]", bytes.len()) |  | ||||||
|         } else { |  | ||||||
|             fmt::Debug::fmt(bytes, f) |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| #[test] | #[test] | ||||||
| fn test_should_keep_alive() { | fn test_should_keep_alive() { | ||||||
|     let mut headers = Headers::new(); |     let mut headers = Headers::new(); | ||||||
|   | |||||||
| @@ -132,24 +132,9 @@ impl<B> fmt::Debug for Request<B> { | |||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| struct MaybeAddr<'a>(&'a Option<SocketAddr>); |  | ||||||
|  |  | ||||||
| impl<'a> fmt::Display for MaybeAddr<'a> { |  | ||||||
|     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { |  | ||||||
|         match *self.0 { |  | ||||||
|             Some(ref addr) => { |  | ||||||
|                 write!(f, "addr={}, ", addr) |  | ||||||
|             }, |  | ||||||
|             None => Ok(()), |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| /// Constructs a request using a received ResponseHead and optional body | /// Constructs a request using a received ResponseHead and optional body | ||||||
| pub fn from_wire<B>(addr: Option<SocketAddr>, incoming: RequestHead, body: B) -> Request<B> { | pub fn from_wire<B>(addr: Option<SocketAddr>, incoming: RequestHead, body: B) -> Request<B> { | ||||||
|     let MessageHead { version, subject: RequestLine(method, uri), headers } = incoming; |     let MessageHead { version, subject: RequestLine(method, uri), headers } = incoming; | ||||||
|     info!("Request::new: {}\"{} {} {}\"", MaybeAddr(&addr), method, uri, version); |  | ||||||
|     debug!("Request::new: headers={:?}", headers); |  | ||||||
|  |  | ||||||
|     Request::<B> { |     Request::<B> { | ||||||
|         method: method, |         method: method, | ||||||
|   | |||||||
| @@ -147,8 +147,6 @@ impl fmt::Debug for Response { | |||||||
| #[cfg(not(feature = "raw_status"))] | #[cfg(not(feature = "raw_status"))] | ||||||
| pub fn from_wire<B>(incoming: ResponseHead, body: Option<B>) -> Response<B> { | pub fn from_wire<B>(incoming: ResponseHead, body: Option<B>) -> Response<B> { | ||||||
|     let status = incoming.status(); |     let status = incoming.status(); | ||||||
|     info!("Response::new \"{} {}\"", incoming.version, status); |  | ||||||
|     debug!("Response::new headers={:?}", incoming.headers); |  | ||||||
|  |  | ||||||
|     Response::<B> { |     Response::<B> { | ||||||
|         status: status, |         status: status, | ||||||
| @@ -163,8 +161,6 @@ pub fn from_wire<B>(incoming: ResponseHead, body: Option<B>) -> Response<B> { | |||||||
| #[cfg(feature = "raw_status")] | #[cfg(feature = "raw_status")] | ||||||
| pub fn from_wire<B>(incoming: ResponseHead, body: Option<B>) -> Response<B> { | pub fn from_wire<B>(incoming: ResponseHead, body: Option<B>) -> Response<B> { | ||||||
|     let status = incoming.status(); |     let status = incoming.status(); | ||||||
|     info!("Response::new \"{} {}\"", incoming.version, status); |  | ||||||
|     debug!("Response::new headers={:?}", incoming.headers); |  | ||||||
|  |  | ||||||
|     Response::<B> { |     Response::<B> { | ||||||
|         status: status, |         status: status, | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user