James Coglan
91df761990
Hybi#shutdown doesn't really need to take a block, it can just take a flag to say whether to emit an error.
2015-07-07 20:33:22 +01:00
James Coglan
dcfd35fde8
Remove some excessive whitespace.
2015-07-07 20:32:47 +01:00
James Coglan
582a3b0541
Merge pull request #29 from ioquatix/buffered-input
...
Use StreamReader for both hybi and draft75.
2015-07-06 20:49:24 +01:00
James Coglan
fe6163c336
Perform state changes in #shutdown before calling frame(), which might fail when calling @socket.write.
2015-07-06 20:50:18 +01:00
James Coglan
9b561b6e12
The 'rescue' clause for errors from outgoing extensions should be in #frame, not #send_frame.
2015-07-06 20:48:44 +01:00
Samuel Williams
425e15da83
Use StreamReader for both hybi and draft75.
2015-07-06 10:29:18 +09:00
James Coglan
fa11841bfa
Don't catch errors from event listeners. Instead, make sure that in all parsing methods in Hybi, @stage is set before any user called is invoked so the parser is in the right state before code that might raise is called.
2015-07-05 18:52:53 +01:00
James Coglan
f11d5905d2
Merge pull request #28 from ioquatix/strem-reader-refactoring
...
Improve performance of StreamReader by reducing the number of buffer reallocations done.
2015-07-05 16:26:32 +01:00
James Coglan
83d317add2
Rescue from Exception when calling event listeners, and use the name 'error' for caught exceptions.
2015-07-05 15:31:36 +01:00
Samuel Williams
46f5ac8c6b
Improve performance of StreamReader by reducing the number of buffer reallocations done.
2015-07-05 23:24:35 +09:00
James Coglan
585eded63d
Remove unnecessary code to remove whitespace from Base64 output.
2015-07-04 21:13:06 +01:00
James Coglan
8eccf044b0
Change stage in the Base.shutdown() method to that all parsers stop processing input.
2015-07-04 21:06:50 +01:00
James Coglan
f218999304
If an event listener emits an error, close the connection with code 1011.
2015-07-04 20:54:42 +01:00
James Coglan
d69cdaba97
Allow event listeners to be passed as normal rather than block arguments.
...
This discourages the inappropriate use of 'return' inside event
listeners. Also, we return the listener, so that the caller has a
reference to it in case they do pass a block.
2015-07-04 19:28:49 +01:00
James Coglan
7af53b5be0
Add a pong() command for sending unsolicited pong frames.
2015-07-04 18:49:46 +01:00
James Coglan
6720cb2b4a
The client should use secure random numbers for Sec-WebSocket-Key, and we should use the Base64.strict_encode function everywhere.
2015-06-02 22:01:22 +01:00
James Coglan
d6b147f2e0
Fail the connection when the server receives an invalid Sec-WebSocket-Extensions header.
2015-03-26 09:43:59 +00:00
James Coglan
b78ed7706d
Don't send a close frame in response to receiving one, if we already sent a close frame.
2015-03-14 10:03:26 +00:00
James Coglan
de23229e7f
Don't parse incoming data if the client is already closed. This stops the headers being interpreted as WebSocket data if the client is closed before receiving the server's handshake.
2015-02-21 12:36:32 +00:00
James Coglan
95c0261505
Don't emit further error/close events if the driver is already closing.
2015-02-16 09:08:18 +00:00
James Coglan
7b4352bb2f
Throw an error if drivers are created with unrecognised options.
2014-12-17 22:09:58 +00:00
James Coglan
b99ab25583
Fix some string/array discrepancies in the hixie-{75,76} drivers.
2014-12-13 13:34:11 +00:00
James Coglan
9bc3b9b3f6
Mistakenly used bytesize on an array.
2014-12-06 10:38:03 +00:00
James Coglan
01c1a762e0
Don't expose the frame structure of messages, only expose their opcode and RSV headers. Extensions will mess with frame boundaries so depending on frame structure won't work.
2014-12-05 23:07:47 +00:00
James Coglan
ef862fd341
Serialise the FIN and RSV bits of frames correctly.
2014-12-05 19:27:39 +00:00
James Coglan
eb20069011
Migrate the internal representation of buffers from arrays to ASCII-8BIT strings, since this is what we're planning on handing off to extensions.
2014-12-05 09:17:09 +00:00
James Coglan
ef4fc7c57a
Migrate the Hybi driver's internals to use Frame and Message objects compatible with websocket-extensions.
2014-12-02 22:51:42 +00:00
James Coglan
1a9f2af571
Use the Headers class to build the default headers for handshakes rather than using loads of ugly string operations.
2014-11-08 17:44:34 +00:00
James Coglan
ec6803e19c
Remove the start_tls protocol and replace it by the proxy emitting a 'connect' event.
2014-11-08 16:45:06 +00:00
James Coglan
0a200bbdef
Refactor proxy support into a separate class that represents the proxy connection as a real object.
2014-11-06 23:37:13 +00:00
James Coglan
8392f77a58
Add support for connecting via HTTP proxies.
2014-10-27 21:49:40 +00:00
James Coglan
58c19e7659
If driver.close is called before driver.start, the driver should close.
2014-10-03 00:36:50 +01:00
Asmod4n
c04bfc4c19
fail_request didn't accept a required argument
2014-09-21 00:57:24 +02:00
James Coglan
129a238613
Fix ping/pong issue where Server#ping fails to pass the callback on to the Hybi driver.
2014-07-19 16:48:32 +01:00
James Coglan
a403ca4c8d
Simplify the subprotocol selection code.
2014-07-04 20:50:08 +01:00
James Coglan
4b4d69e946
Delegate the protocol and version methods correctly in the TCP driver.
2014-07-04 09:42:26 +01:00
James Coglan
d00cbadedb
Stop the Hybi parser hanging onto data it doesn't need after emitFrame().
2014-06-16 20:45:48 +01:00
James Coglan
7c755523f1
Include RFC 7230 grammar notes.
2014-06-07 22:23:39 +01:00
James Coglan
1b3f32bbc7
Trailing blank lines are bad.
2014-05-17 00:34:48 +01:00
James Coglan
03ca89f4a0
Remove a duplicated request-method check from WebSocket.websocket?.
2014-05-09 00:31:31 +01:00
James Coglan
f55f2b221c
Header names must not contain backslashes. Include grammer from RFC2616 to clarify this.
2014-05-09 00:30:28 +01:00
James Coglan
23c8e8eb91
The file that loads the C code is not executable and does not need a shebang.
2014-04-17 02:29:56 +01:00
James Coglan
2f8f281615
Correct the draft-76 status line reason phrase.
2014-04-17 02:22:19 +01:00
James Coglan
ddd90b5438
Tweak the regexes for parsing HTTP.
2014-04-17 02:19:14 +01:00
Steven Williamson
08189c2a30
Minor fixes to allow native gems to load.
...
- websocket_mask.rb is in lib which in turn then loads websocket_mask.so
which should reside in the extensions directory external to the gem
directory at least as of rubygems 2.2.2.
- Changed extensions directory to match gemname as suggested in rubygems
guide
Simplifies loading the native extension but only tested on ruby 2.1.1
and only in my environment.
2014-04-14 17:18:54 +01:00
James Coglan
13780f7a61
Reduce MAX_LENGTH to 64 MB.
2013-12-27 18:19:09 +00:00
James Coglan
18170c0c61
Stop parsing Hybi once we go into a failure state.
2013-12-27 18:13:31 +00:00
James Coglan
74c4cc1190
Extend max-length checking to draft-{75,76}.
2013-12-20 10:27:48 +00:00
James Coglan
fafd949641
Extend max-length checking to short (<= 125 bytes) frames and to sequences of continuation frames.
2013-12-20 10:23:53 +00:00
James Coglan
e3587fcbb1
Add a max_length option to the Hybi/Client class.
2013-12-02 21:55:43 +00:00