Evan Schwartz
da85989934
feat: impl Into<Vec<u8>> for Message
7 years ago
Alexey Galakhov
a7e87488c4
config: make config settable at runtime
...
Signed-off-by: Alexey Galakhov <agalakhov@snapview.de>
7 years ago
Alexey Galakhov
9b0a2e0f11
trivial: split public and private impl
...
Signed-off-by: Alexey Galakhov <agalakhov@snapview.de>
7 years ago
Alexey Galakhov
a2e122ab9e
refactor: mask: pass mask by value
...
Signed-off-by: Alexey Galakhov <agalakhov@snapview.de>
7 years ago
Alexey Galakhov
e6ebf5ac76
trivial: style fixes
...
Signed-off-by: Alexey Galakhov <agalakhov@snapview.de>
7 years ago
Alexey Galakhov
d2e3602170
frame: fix partial write
...
Signed-off-by: Alexey Galakhov <agalakhov@snapview.de>
7 years ago
Alexey Galakhov
3772aaf163
chore: introduce frame size limit
...
Signed-off-by: Alexey Galakhov <agalakhov@snapview.de>
7 years ago
Alexey Galakhov
50d1371e52
frame: cleanup frame API
...
Signed-off-by: Alexey Galakhov <agalakhov@snapview.de>
7 years ago
Alexey Galakhov
75aa0d54f3
refactor: parse header separately from payload
...
Signed-off-by: Alexey Galakhov <agalakhov@snapview.de>
7 years ago
Alexey Galakhov
20242d19f7
config: protocol: add message size limiting
...
Signed-off-by: Alexey Galakhov <agalakhov@snapview.de>
7 years ago
Alexey Galakhov
a4f885f69f
protocol: improve write responsibility
...
Signed-off-by: Alexey Galakhov <agalakhov@snapview.de>
7 years ago
Alexey Galakhov
e4a52cde05
mask: update for actual Rust version
...
Closes #35
Signed-off-by: Alexey Galakhov <agalakhov@snapview.de>
7 years ago
Alexey Galakhov
cb671e1abc
trivial: improve documentation
...
Signed-off-by: Alexey Galakhov <agalakhov@snapview.de>
7 years ago
Ran Benita
4cfe9a2be1
frame: eliminate an unsafe when reading message data into the buffer
...
The reason for the unsafe was presumably to avoid copying or
zero-initializing. This achieves the same but using only safe functions.
Note: there is no zero-initializing here because Cursor is "trusted" to
not read from the buffer and so skips the initialization:
https://github.com/rust-lang/rust/blob/master/src/libstd/io/cursor.rs#L241
(the Take wrapper delegates to its inner).
7 years ago
Alexey Galakhov
fdb1a0ed50
frame: reject bad opcodes early
...
Signed-off-by: Alexey Galakhov <agalakhov@snapview.de>
7 years ago
Alexey Galakhov
9bd65feaeb
frame: reject frames that are too big for the RAM
...
Fixes #34 .
Signed-off-by: Alexey Galakhov <agalakhov@snapview.de>
7 years ago
Alexey Galakhov
977c6e7c7a
refactor: remove transmute in favor of safe code
...
Signed-off-by: Alexey Galakhov <agalakhov@snapview.de>
7 years ago
Alexey Galakhov
c0cde68999
frame: fix integer overflow
...
This is a security fix.
Fixes #33 .
Signed-off-by: Alexey Galakhov <agalakhov@snapview.de>
7 years ago
Daniel Abramov
00303fa60c
Make the websocket configurable
7 years ago
Teddy DeRego
5742c822ee
WebSocket::write_message will no longer buffer unlimited messages - it will only buffer a configurable number of outbound messages. Needed for snapview/tokio-tungstenite#35 .
7 years ago
Sean Schwartz
66d2c15f2d
Derive Debugs
...
Deny missing debug and resolve resulting errors to satisfy:
https://rust-lang-nursery.github.io/api-guidelines/debuggability.html#all-public-types-implement-debug-c-debug
Requires updated input_buffer pushed to crates.io:
- Resolved build errors by using github version of code until new version available on crates.io
Upgrade env_logger dev-dependency to v0.5.3
- Removed unwrap call from env_logger::init() as it is no longer needed.
7 years ago
Alexey Galakhov
6f8c4e7034
Use input_buffer as separate crate.
...
Signed-off-by: Alexey Galakhov <agalakhov@snapview.de>
7 years ago
Alex Crichton
9f6f42766e
Add `Ping` and `Pong` variants to `Message`
...
This'll allow removal/deprecation of the `send_ping` custom method but also
allow applications to react to `Pong` messages as appropriate.
Closes #16
8 years ago
Alexey Galakhov
bd9ac9673e
chore: cleanup docs and warnings, strict docs
...
Signed-off-by: Alexey Galakhov <agalakhov@snapview.de>
8 years ago
Alexey Galakhov
e3c0ec30c8
Fix close handling while read.
...
Signed-off-by: Alexey Galakhov <agalakhov@snapview.de>
8 years ago
Denis Andrejew
624f1dec1a
improve doc in protocol/mod.rs
8 years ago
Alexey Galakhov
6d10b40215
Flush stream after sending message
...
Signed-off-by: Alexey Galakhov <agalakhov@snapview.de>
8 years ago
Alexey Galakhov
3abe419e98
Fix fast masking of unaligned data
...
Signed-off-by: Alexey Galakhov <agalakhov@snapview.de>
8 years ago
Alexey Galakhov
01a9211a84
Move mask functions into a separate file
...
Signed-off-by: Alexey Galakhov <agalakhov@snapview.de>
8 years ago
Alexey Galakhov
66e30b2767
Return close frame with ConnectionClosed
...
This is a breaking change, thus bump the API version.
Closes : #10
Signed-off-by: Alexey Galakhov <agalakhov@snapview.de>
8 years ago
Alexey Galakhov
8df6bdbeb0
Add Display to CloseFrame and CloseCode
...
Signed-off-by: Alexey Galakhov <agalakhov@snapview.de>
8 years ago
Alexey Galakhov
bd37c71609
Replace tuple with CloseFrame struct
...
Signed-off-by: Alexey Galakhov <agalakhov@snapview.de>
8 years ago
Ran Benita
be834ac261
Replace unsafe endianness code with byteorder functions
8 years ago
Ran Benita
ae30b8cd76
Apply a couple trivial clippy suggestions
8 years ago
Ran Benita
8955b55e62
Simplify concatenation code using slice::concat
8 years ago
Ran Benita
3c600aa138
Speed up apply_mask() - part 2
...
This is using some unsafe code and assumptions about alignment to speed
up apply_mask() more.
In profiles, this optimization reduces it from ~55% of the total runtime
to ~7%.
8 years ago
Ran Benita
dd96d3b9d4
Speed up apply_mask()
...
This function is the most speed-critical in the library. In profiles,
this optimization reduces it from ~75% of the profile to ~55%.
I have tried several approaches, but didn't manage to improve on this
one (LLVM already unrolls the loop here). Though I'm sure it is possible.
8 years ago
Ran Benita
ea4b5e4df0
Remove unnecessary transmute in generate_mask()
...
rand::Rand has
impl<T> Rand for [T; 16] where T: Rand
so we don't need to simulate it ourselves.
8 years ago
Alexey Galakhov
e2b7b73e72
Improve documentation.
...
Signed-off-by: Alexey Galakhov <agalakhov@snapview.de>
8 years ago
Alexey Galakhov
b057cf0096
Update for the version 0.7 of the utf8 crate.
...
Signed-off-by: Alexey Galakhov <agalakhov@snapview.de>
8 years ago
Alexey Galakhov
53aa24b06b
Fix warnings
...
Signed-off-by: Alexey Galakhov <agalakhov@snapview.de>
8 years ago
Alexey Galakhov
037dea1f8e
Add possibility to send pings
...
Signed-off-by: Alexey Galakhov <agalakhov@snapview.de>
8 years ago
Alexey Galakhov
06a39b4962
protocol: add get_ref() and get_mut()
...
Signed-off-by: Alexey Galakhov <agalakhov@snapview.de>
8 years ago
Alexey Galakhov
9e00140e19
trivial: debug logging cleanup
8 years ago
Alexey Galakhov
334ceab2b0
protocol: less strict trait requirements
8 years ago
Alexey Galakhov
604e2021ce
protocol: add write_pending() functions
...
The semantics of write_message() and write_frame()
is changed accordingly.
8 years ago
Alexey Galakhov
d27f768599
protocol: fix infinite loop in non-blocking mode
8 years ago
Daniel Abramov
0938a17552
Move `no_block()` related stuff into seperate mod
8 years ago
Alexey Galakhov
3bb4331f4f
protocol: fix bug with async handling
8 years ago
Alexey Galakhov
de1fb673b2
error: correct UTF-8 error handling
8 years ago