mirror of
https://github.com/actix/actix-web.git
synced 2024-12-21 15:46:48 +00:00
Merge pull request #192 from fuchsnj/check_if_close_code_exists
check if close code exists before reading it
This commit is contained in:
commit
805dbea8e7
2 changed files with 18 additions and 4 deletions
|
@ -310,10 +310,14 @@ where
|
|||
}
|
||||
OpCode::Close => {
|
||||
self.closed = true;
|
||||
let code = NetworkEndian::read_uint(payload.as_ref(), 2) as u16;
|
||||
Ok(Async::Ready(Some(Message::Close(CloseCode::from(
|
||||
code,
|
||||
)))))
|
||||
let close_code = if payload.len() >= 2{
|
||||
let raw_code = NetworkEndian::read_uint(payload.as_ref(), 2) as u16;
|
||||
CloseCode::from(raw_code)
|
||||
}else{
|
||||
CloseCode::Status
|
||||
};
|
||||
|
||||
Ok(Async::Ready(Some(Message::Close(close_code))))
|
||||
}
|
||||
OpCode::Ping => Ok(Async::Ready(Some(Message::Ping(
|
||||
String::from_utf8_lossy(payload.as_ref()).into(),
|
||||
|
|
|
@ -60,6 +60,16 @@ fn test_simple() {
|
|||
assert_eq!(item, Some(ws::Message::Close(ws::CloseCode::Normal)));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_empty_close_code() {
|
||||
let mut srv = test::TestServer::new(|app| app.handler(|req| ws::start(req, Ws)));
|
||||
let (reader, mut writer) = srv.ws().unwrap();
|
||||
|
||||
writer.close(ws::CloseCode::Empty, "");
|
||||
let (item, _) = srv.execute(reader.into_future()).unwrap();
|
||||
assert_eq!(item, Some(ws::Message::Close(ws::CloseCode::Status)));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_large_text() {
|
||||
let data = rand::thread_rng()
|
||||
|
|
Loading…
Reference in a new issue