Skip to content

Commit b0a3c5a

Browse files
authored
Merge 056be54 into a1fd8be
2 parents a1fd8be + 056be54 commit b0a3c5a

File tree

3 files changed

+29
-13
lines changed

3 files changed

+29
-13
lines changed

.travis.yml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
language: rust
2-
rust: nightly
2+
rust: nightly-2019-04-19
33

44
before_script:
55
- export PATH="$PATH:$HOME/.cargo/bin"
66

77
install:
88
- rustup component add rustfmt
9-
- rustup component add clippy --toolchain=nightly || cargo install --git https://github.com/rust-lang/rust-clippy/ --force clippy
10-
9+
- rustup component add clippy
1110
script:
1211
- cargo fmt -- --version
1312
- cargo fmt -- --check

src/header/accept.rs

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,11 @@ impl FromStr for WebSocketAccept {
3232
));
3333
}
3434
let mut array = [0u8; 20];
35-
let mut iter = vec.into_iter();
36-
for i in &mut array {
37-
*i = iter.next().unwrap();
38-
}
35+
array[..20].clone_from_slice(&vec[..20]);
3936
Ok(WebSocketAccept(array))
4037
}
4138
Err(_) => Err(WebSocketError::ProtocolError(
42-
"Invalid Sec-WebSocket-Accept ",
39+
"Invalid Sec-WebSocket-Accept",
4340
)),
4441
}
4542
}
@@ -101,6 +98,18 @@ mod tests {
10198
);
10299
}
103100

101+
#[test]
102+
fn test_header_from_str() {
103+
let accept = WebSocketAccept::from_str("YSBzaW1wbGUgc2FtcGwgbm9uY2U=");
104+
assert!(accept.is_ok()); // 20 bytes
105+
106+
let accept = WebSocketAccept::from_str("YSBzaG9ydCBub25jZQ==");
107+
assert!(accept.is_err()); // < 20 bytes
108+
109+
let accept = WebSocketAccept::from_str("YSByZWFsbHkgbWFsaWNpb3VzIG5vbmNl");
110+
assert!(accept.is_err()); // > 20 bytes
111+
}
112+
104113
#[bench]
105114
fn bench_header_accept_new(b: &mut test::Bencher) {
106115
let key = WebSocketKey::new();

src/header/key.rs

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,7 @@ impl FromStr for WebSocketKey {
2929
));
3030
}
3131
let mut array = [0u8; 16];
32-
let mut iter = vec.into_iter();
33-
for i in &mut array {
34-
*i = iter.next().unwrap();
35-
}
36-
32+
array[..16].clone_from_slice(&vec[..16]);
3733
Ok(WebSocketKey(array))
3834
}
3935
Err(_) => Err(WebSocketError::ProtocolError(
@@ -92,6 +88,18 @@ mod tests {
9288
);
9389
}
9490

91+
#[test]
92+
fn test_header_from_str() {
93+
let key = WebSocketKey::from_str("YSByZWFsbCBnb29kIGtleQ==");
94+
assert!(key.is_ok()); // 16 bytes
95+
96+
let key = WebSocketKey::from_str("YSBzaG9ydCBrZXk=");
97+
assert!(key.is_err()); // < 16 bytes
98+
99+
let key = WebSocketKey::from_str("YSB2ZXJ5IHZlcnkgbG9uZyBrZXk=");
100+
assert!(key.is_err()); // > 16 bytes
101+
}
102+
95103
#[bench]
96104
fn bench_header_key_new(b: &mut test::Bencher) {
97105
b.iter(|| {

0 commit comments

Comments
 (0)