James Coglan
7325241d11
Move the header setting for Sec-WebSocket-Protocol.
2014-11-08 17:46:03 +00:00
James Coglan
eb2d329a16
Clean up some formatting typos.
2014-11-08 17:20:51 +00:00
James Coglan
623a93c0b7
Duplicate headers should be allowed if ALLOWED_DUPLICATES *includes* the name.
2014-11-08 16:39:40 +00:00
James Coglan
208be33754
Refactor the way headers are generated in all the drivers.
2014-11-08 16:12:14 +00:00
James Coglan
0bb47c17b4
Remove TLS concerns from the proxy implementation.
...
This results in a more simple design, in the sense of fewer concerns
being mixed together. It makes the API more verbose, but it's not
difficult to use correctly.
It also means that we make the I/O implementation deal with TLS, so it
can use tls.connect({socket: io}) or the upcoming TLSSocket class,
rather than this module needing a huge amount of boilerplate and
internal indirection to use tls.createSecurePair() and make Proxy wrap
pair.encrypted.
Using tls.connect({socket: io}) would be awkward on this end, because it
expects a stream that emits *incoming* data from the TCP connection. All
the streams in this module emit *outgoing* data that should be written
to TCP, so their polarity is flipped compared to what tls.connect()
wants, and resolving that involves even more stream boilerplate.
2014-11-08 15:20:08 +00:00
James Coglan
d6da566641
Only call tls.checkServerIdentity() if it is available (i.e. before Node 0.8.).
2014-11-07 19:17:12 +00:00
James Coglan
cde48d625c
Move http_parser.js up into the lib/websocket directory.
2014-11-07 19:16:35 +00:00
James Coglan
6eb04d5acc
Remove a redundant assignment.
2014-11-06 23:20:32 +00:00
James Coglan
4348bec390
Some cleanup to remove bits I left lying around while refactoring proxy support.
2014-11-06 23:04:11 +00:00
James Coglan
550b3d906d
Unify the proxy handshake, TLS handshake, and WebSocket protocol into a single stream when using driver.proxy() to simplify the API.
2014-11-05 23:30:15 +00:00
David Glasser
b88b8d6856
proxy should emit 'close' when it's done
...
This will cause any stream piped into it to stop piping into it. (It's
the only way to unpipe a Node 0.8 Streams1-style pipe.)
This change allows you to remove the empty "stream.on('data')" in
faye-websocket.
2014-10-29 16:47:56 -07:00
James Coglan
76f4128634
Redesign the proxy API so that we can more cleanly deal with TLS, either to the proxy server or origin server or both, while still allowing control of the TLS options and custom headers, and not leaking so much of the implementation.
2014-10-29 22:07:01 +00:00
James Coglan
32e6715b6e
[wip] Emit a proxy-connect event so the client can perform a TLS handshake at the right time.
2014-10-29 19:27:30 +00:00
James Coglan
bdc9bfe7e8
Add support for connecting via HTTP proxies.
2014-10-27 09:30:11 +00:00
David Glasser
dcd7c278b6
driver.close() before driver.start() should close
2014-08-15 10:48:30 -07:00
James Coglan
28858d9fb3
Delegate the protocol and version methods correctly in the TCP driver.
2014-07-04 17:49:11 +01:00
James Coglan
ae52cf995e
Stop the Hybi parser hanging onto data it doesn't need after emitFrame().
2014-06-16 20:30:44 +01:00
James Coglan
dfe7b2b000
Trailing blank lines are bad.
2014-05-17 00:35:31 +01:00
James Coglan
ed3907d5fd
Clean up the state management code in StreamReader.
2014-05-07 20:49:49 +01:00
David Glasser
8d19ee823e
StreamReader: Don't hang on to fully read buffers
2014-05-06 11:52:59 -07:00
James Coglan
9f2782da14
Correct the draft-76 status line reason phrase.
2014-04-17 02:23:58 +01:00
James Coglan
0b089ad921
Merge pull request #5 from Zarel/patch-1
...
Lower default max buffer length
2013-12-27 10:17:09 -08:00
James Coglan
e65e837968
Stop parsing Hybi when we go into a failure state.
2013-12-27 18:16:41 +00:00
Guangcong Luo
cda22e3bef
Lower default max buffer length
...
Real-world testing shows that the previous max buffer length
of ~1GB was too high, and messages of the size of roughly 300MB
could still cause the process to crash from running out of
memory. 64MB seems like a reasonably conservative maximum.
2013-12-24 19:26:38 -06:00
James Coglan
1ae37d6efe
Remove an unused instance variable _lengthBuffer.
2013-12-20 10:20:41 +00:00
James Coglan
82c42a6ce5
Extend max-length checking to draft-{75,76}.
2013-12-20 10:09:31 +00:00
James Coglan
aad1519f3f
Extend max-length checking to short (<= 125 bytes) frames and to sequences of continuation frames.
2013-12-20 09:50:18 +00:00
James Coglan
d93c853414
Don't pre-allocate a huge Buffer before we know there's enough chunks in the read queue to complete a message.
2013-12-02 21:07:33 +00:00
James Coglan
2dff35d3e4
Map Node v0.11's magic numbers for HTTP methods.
2013-12-02 13:02:38 +00:00
James Coglan
6588928445
Make HttpParser work on v0.11.6+.
2013-11-29 00:42:49 +00:00
James Coglan
151fddd206
Make the maximum frame length into an option that the user can set.
2013-11-28 23:38:42 +00:00
David Glasser
f15b331a34
Reduce frame max length to max Node Buffer length.
2013-10-11 19:21:14 -07:00
James Coglan
12f9f4d444
Add support for Basic Auth URLs to the client driver.
2013-08-13 17:16:49 +01:00
James Coglan
17e2bd4084
Messages should be queued when the driver is in the 'pre-connecting' state, as the client is initially.
2013-05-17 11:48:36 +01:00
James Coglan
3dfaaf497f
Expose the isSecureRequest() method.
2013-05-17 11:47:56 +01:00
James Coglan
97451f81ab
Set status and headers as soon as we have them so they're available if there is an error.
2013-05-12 14:44:17 +01:00
James Coglan
de001a0f54
Remove a blank line.
2013-05-12 01:45:56 +01:00
James Coglan
26c4873f3e
Apply offset to the consumed offset from HTTP parsing before we check whether the whole buffer has been used.
2013-05-12 01:45:04 +01:00
James Coglan
b2472e89a6
Document the Server driver.
2013-05-12 01:31:14 +01:00
James Coglan
1124df2bf5
Add a Server driver for running WebSockets through a bare TCP server.
2013-05-12 01:13:50 +01:00
James Coglan
ea4e289669
Add a setHeader() function to allow peers to add headers to their handshake responses.
2013-05-11 22:26:20 +01:00
James Coglan
d7c65eedd9
Expose the status and headers from the response in the client driver.
2013-05-11 21:58:37 +01:00
James Coglan
d594f7d708
Include more possible headers as indicators of a secure connection.
2013-05-11 21:55:52 +01:00
James Coglan
aa25393a6c
Check for GET in isWebSocket() and expose the isSecureRequest() method.
2013-05-04 17:27:25 +01:00
James Coglan
88202e66d5
Stream.end() should write() if given an empty stream.
2013-05-04 17:26:59 +01:00
James Coglan
25c075a408
Rename the module to websocket-driver.
2013-05-04 16:42:44 +01:00
James Coglan
f16ad50db0
Raise an error if the length header is larger than the max int that JS can represent precisely.
2013-05-04 13:33:27 +01:00
James Coglan
d716650499
Add more robust error handling for Hybi and Client and emit error events when the protocol goes wrong.
2013-05-02 00:09:14 +01:00
James Coglan
cbb33e4924
Allow default handler options to be overridden.
2013-05-01 00:59:54 +01:00
James Coglan
23f296b926
Replace the getVersion() method with a version property.
2013-05-01 00:55:49 +01:00