faye 1.2.1 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of faye might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: eef57afbc25a87bf66b990a8d204e9ac0ae02600
4
- data.tar.gz: 800d06c69f2b91d2c4c9a9409b8a59fdf0b43dba
2
+ SHA256:
3
+ metadata.gz: 6360fb99c07ebc88410222fab2f63fe2e01ce4ccc20b044ce1af8b9abce23a88
4
+ data.tar.gz: df9d35e5534ae844d428fa32a81d4c496072eb4d638231d884988a5bb6d1ea5e
5
5
  SHA512:
6
- metadata.gz: 7d36d29c3944fd77ab0d9a7d753d15d61b8efd7e83e969015546a444277d55234e9b012ec789baa583f1ed42b6aedbf45bb96294f9bdde1ca10a3daad766a79e
7
- data.tar.gz: 480949d3bbb1ee641bab9a3557aac31a105bba2241936edec2e600fc47296084f448d1fc05195312f8f7307bb8e2fafc9b1aa8e14519c0203613d261d5e3eaa7
6
+ metadata.gz: 6ab5b18b7dc99264d45a80b17890982e0b6373634b9b44c0b39d57ce5474f6e278aea0b56104f932d61b05482a17483af1ec58cb6b6a29a430c3e42b6d3d86e3
7
+ data.tar.gz: 131c7e89ce4f7af23e76c9c57b0ac0f63c5da58ac417991e1a381009dc5e2007eab6bf9c9bccb1a62ca1eefe1601d0b8f744f6b41fcf29f9c868bbd30f6d07b4
@@ -1,61 +1,137 @@
1
+ ### 1.3.0 / 2020-06-08
2
+
3
+ - Support `user:pass@` authorization in URIs and send `Authorization` headers
4
+ from the Node HTTP transport
5
+ - Support IPv6 hostnames in URIs
6
+ - Allow credentials (cookies and `Authorization` headers) in cross-origin
7
+ requests, by:
8
+ - setting `Access-Control-Allow-Origin` to the value of the `Origin` header
9
+ (not `*`)
10
+ - enabling `Access-Control-Allow-Credentials`
11
+ - Enable credentials when sending cross-origin requests
12
+ - Don't disconnect WebSocket on page unload if `autodisconnect` is turned off
13
+ - Catch errors when creating a WebSocket, which happens when Content Security
14
+ Policy blocks it, allowing other transports to be tried
15
+ - Fix a bug in the client where it handles messages from other clients as though
16
+ they're the server's response to its own messages, based on the `id` field;
17
+ now we only treat messages as server responses if they contain `successful:
18
+ true`
19
+ - Stop sending an empty message list `[]` from the WebSocket client as a
20
+ keep-alive mechanism since CometD does not accept this message
21
+ - Fix deprecation warnings for using the `new Buffer()` constructor
22
+ - Switch to the Apache 2.0 license
23
+
24
+
25
+ ### 1.2.5 / 2020-04-28
26
+
27
+ - Fix `/meta/*` channel recognition bug in the server that enables
28
+ authentication bypass
29
+ - https://blog.jcoglan.com/2020/04/28/authentication-bypass-in-faye/
30
+
31
+
32
+ ### 1.2.4 / 2017-01-28
33
+
34
+ - Fix `RackAdapter#get_client` that was failing due to a URI error
35
+ - Define `Promise#catch` in a safe way for old browsers
36
+ - Log errors in the Node HTTP transport
37
+
38
+
39
+ ### 1.2.3 / 2016-10-11
40
+
41
+ - Return an error if the `data` field is missing on published messages
42
+ - Fix errors that occur in the new `websocket` util when the browser does not
43
+ support WebSocket
44
+
45
+
46
+ ### 1.2.2 / 2016-07-18
47
+
48
+ - Mitigate the HTTPoxy vulnerability: https://httpoxy.org/
49
+
50
+
1
51
  ### 1.2.1 / 2016-06-29
2
52
 
3
- * Fix a missing variable error in `NodeAdapter`
53
+ - Fix a missing variable error in `NodeAdapter`
4
54
 
5
55
 
6
56
  ### 1.2.0 / 2016-06-26
7
57
 
8
- * Add `client.subscribe().withChannel()` to yield the message channel for wildcard subscriptions
9
- * Restructure the JavaScript codebase around Node modules (require/exports) rather than globals
10
- * Update the Promise shim to reflect the standard API, including `catch()` and `all()`
11
- * Support connecting to servers that use SNI in the Ruby client
12
- * Make the JavaScript client work inside React Native and Web Workers
13
- * Remove JSON2; you should import a JSON shim yourself if necessary
14
- * Handle errors that occur when a message is partially delivered via EventSource
15
- * Reject requests with invalid (non-array or -object) top-level JSON values
16
- * Make local client requests asynchronous to avoid re-entrant request handling errors
17
- * Remove `Connection: Close` from HTTP responses to allow use of keep-alive
18
- * Use `XMLHttpRequest` in preference to the ActiveX API in IE10
19
- * Fix bug where flushing large message batches puts promises in an invalid state
58
+ - Add `client.subscribe().withChannel()` to yield the message channel for
59
+ wildcard subscriptions
60
+ - Restructure the JavaScript codebase around Node modules (require/exports)
61
+ rather than globals
62
+ - Update the Promise shim to reflect the standard API, including `catch()` and
63
+ `all()`
64
+ - Support connecting to servers that use SNI in the Ruby client
65
+ - Make the JavaScript client work inside React Native and Web Workers
66
+ - Remove JSON2; you should import a JSON shim yourself if necessary
67
+ - Handle errors that occur when a message is partially delivered via EventSource
68
+ - Reject requests with invalid (non-array or -object) top-level JSON values
69
+ - Make local client requests asynchronous to avoid re-entrant request handling
70
+ errors
71
+ - Remove `Connection: Close` from HTTP responses to allow use of keep-alive
72
+ - Use `XMLHttpRequest` in preference to the ActiveX API in IE10
73
+ - Fix bug where flushing large message batches puts promises in an invalid state
74
+
75
+
76
+ ### 1.1.3 / 2020-04-28
77
+
78
+ - Fix `/meta/*` channel recognition bug in the server that enables
79
+ authentication bypass
80
+ - https://blog.jcoglan.com/2020/04/28/authentication-bypass-in-faye/
20
81
 
21
82
 
22
83
  ### 1.1.2 / 2015-07-19
23
84
 
24
- * Allow the `Authorization` header to be used on CORS requests
25
- * Disallow unused methods like PUT and DELETE on CORS requests
26
- * Stop IE prematurely garbage-collecting `XDomainRequest` objects
27
- * Make sure messages can be sent if they overflow the request size limit and the outbox is empty
28
- * Don't send messages over WebSockets unless they are in the 'open' ready-state
29
- * Fix a bug preventing use of the in-process transport in Ruby
85
+ - Allow the `Authorization` header to be used on CORS requests
86
+ - Disallow unused methods like PUT and DELETE on CORS requests
87
+ - Stop IE prematurely garbage-collecting `XDomainRequest` objects
88
+ - Make sure messages can be sent if they overflow the request size limit and the
89
+ outbox is empty
90
+ - Don't send messages over WebSockets unless they are in the 'open' ready-state
91
+ - Fix a bug preventing use of the in-process transport in Ruby
30
92
 
31
93
 
32
94
  ### 1.1.1 / 2015-02-25
33
95
 
34
- * Make sure the client ID associated with a WebSocket is not dropped, so the socket can be closed properly
35
- * Handle cases where a JSON-P endpoint returns no response argument
36
- * Stop trying to retry messages after the client has been disconnected
37
- * Remove duplication of the client ID in EventSource URLs
96
+ - Make sure the client ID associated with a WebSocket is not dropped, so the
97
+ socket can be closed properly
98
+ - Handle cases where a JSON-P endpoint returns no response argument
99
+ - Stop trying to retry messages after the client has been disconnected
100
+ - Remove duplication of the client ID in EventSource URLs
38
101
 
39
102
 
40
103
  ### 1.1.0 / 2014-12-22
41
104
 
42
- * Allow the server and client to use WebSocket extensions, for example permessage-deflate
43
- * Support the `HTTP_PROXY` and `HTTPS_PROXY` environment variables to send all client connections through an HTTP proxy
44
- * Introduce the `Scheduler` API to allow the user to control message retries
45
- * Add the `attempts` and `deadline` options to `Client#publish()`
46
- * Let `RackAdapter` take a block that yields the instance, so extensions can be added to middleware
47
- * Allow monitoring listeners to see the `clientId` on publishd messages but still avoid sending it to subscribers
48
- * Return a promise from `Client#disconnect()`
49
- * Fix client-side retry bugs causing the client to flood the server with duplicate messages
50
- * Send all transport types in the `supportedConnectionTypes` handshake parameter
51
- * Don't close WebSockets when the client recovers from an error and sends a new `clientId`
52
- * Replace `cookiejar` with `tough-cookie` to avoid global variable leaks
105
+ - Allow the server and client to use WebSocket extensions, for example
106
+ permessage-deflate
107
+ - Support the `HTTP_PROXY` and `HTTPS_PROXY` environment variables to send all
108
+ client connections through an HTTP proxy
109
+ - Introduce the `Scheduler` API to allow the user to control message retries
110
+ - Add the `attempts` and `deadline` options to `Client#publish()`
111
+ - Let `RackAdapter` take a block that yields the instance, so extensions can be
112
+ added to middleware
113
+ - Allow monitoring listeners to see the `clientId` on publishd messages but
114
+ still avoid sending it to subscribers
115
+ - Return a promise from `Client#disconnect()`
116
+ - Fix client-side retry bugs causing the client to flood the server with
117
+ duplicate messages
118
+ - Send all transport types in the `supportedConnectionTypes` handshake parameter
119
+ - Don't close WebSockets when the client recovers from an error and sends a new
120
+ `clientId`
121
+ - Replace `cookiejar` with `tough-cookie` to avoid global variable leaks
122
+
123
+
124
+ ### 1.0.4 / 2020-04-28
125
+
126
+ - Fix `/meta/*` channel recognition bug in the server that enables
127
+ authentication bypass
128
+ - https://blog.jcoglan.com/2020/04/28/authentication-bypass-in-faye/
53
129
 
54
130
 
55
131
  ### 1.0.3 / 2014-07-08
56
132
 
57
- * Make some changes to JSON-P responses to mitigate the Rosetta Flash attack
58
- * http://miki.it/blog/2014/7/8/abusing-jsonp-with-rosetta-flash/
133
+ - Make some changes to JSON-P responses to mitigate the Rosetta Flash attack
134
+ - http://miki.it/blog/2014/7/8/abusing-jsonp-with-rosetta-flash/
59
135
 
60
136
 
61
137
  ### 1.0.2 -- removed due to error while publishing
@@ -63,62 +139,83 @@
63
139
 
64
140
  ### 1.0.1 / 2013-12-10
65
141
 
66
- * Add `Adapter#close()` method for gracefully shutting down the server
67
- * Fix error recover bug in WebSocket that made transport cycle through `up`/`down` state
68
- * Update Promise implementation to pass `promises-aplus-tests 2.0`
69
- * Correct some incorrect variable names in the Ruby transports
70
- * Make logging methods public to fix a problem on Ruby 2.1
142
+ - Add `Adapter#close()` method for gracefully shutting down the server
143
+ - Fix error recover bug in WebSocket that made transport cycle through
144
+ `up`/`down` state
145
+ - Update Promise implementation to pass `promises-aplus-tests 2.0`
146
+ - Correct some incorrect variable names in the Ruby transports
147
+ - Make logging methods public to fix a problem on Ruby 2.1
71
148
 
72
149
 
73
150
  ### 1.0.0 / 2013-10-01
74
151
 
75
- * Client changes:
76
- * Allow clients to be instantiated with URI objects rather than strings
77
- * Add a `ca` option to the Node `Client` class for passing in trusted server certificates
78
- * Objects supporting the `callback()` method in JavaScript are now Promises
79
- * Fix protocol-relative URI parsing in the client
80
- * Remove the `getClientId()` and `getState()` methods from the `Client` class
81
- * Transport changes:
82
- * Add request-size limiting to all batching transports
83
- * Make the WebSocket transport more robust against quiet network periods and clients going to sleep
84
- * Support cookies across all transports when using the client on Node.js or Ruby
85
- * Support custom headers in the `cross-origin-long-polling` and server-side `websocket` transports
86
- * Adapter changes:
87
- * Support the `rack.hijack` streaming API
88
- * Migrate to MultiJson for JSON handling on Ruby, allowing use of JRuby
89
- * Escape U+2028 and U+2029 in JSON-P output
90
- * Fix a bug stopping requests being routed when the mount point is `/`
91
- * Fix various bugs that cause errors to be thrown if we try to send a message over a closed socket
92
- * Remove the `listen()` method from `Adapter` in favour of using server-specific APIs
93
- * Server changes:
94
- * Use cryptographically secure random number generators to create client IDs
95
- * Allow extensions to access request properties by using 3-ary methods
96
- * Objects supporting the `bind()` method now implement the full `EventEmitter` API
97
- * Stop the server from forwarding the `clientId` property of published messages
98
- * Miscellaneous:
99
- * Support Browserify by returning the client module
100
- * `Faye.logger` can now be a logger object rather than a function
152
+ - Client changes:
153
+ - Allow clients to be instantiated with URI objects rather than strings
154
+ - Add a `ca` option to the Node `Client` class for passing in trusted server
155
+ certificates
156
+ - Objects supporting the `callback()` method in JavaScript are now Promises
157
+ - Fix protocol-relative URI parsing in the client
158
+ - Remove the `getClientId()` and `getState()` methods from the `Client` class
159
+ - Transport changes:
160
+ - Add request-size limiting to all batching transports
161
+ - Make the WebSocket transport more robust against quiet network periods and
162
+ clients going to sleep
163
+ - Support cookies across all transports when using the client on Node.js or
164
+ Ruby
165
+ - Support custom headers in the `cross-origin-long-polling` and server-side
166
+ `websocket` transports
167
+ - Adapter changes:
168
+ - Support the `rack.hijack` streaming API
169
+ - Migrate to MultiJson for JSON handling on Ruby, allowing use of JRuby
170
+ - Escape U+2028 and U+2029 in JSON-P output
171
+ - Fix a bug stopping requests being routed when the mount point is `/`
172
+ - Fix various bugs that cause errors to be thrown if we try to send a message
173
+ over a closed socket
174
+ - Remove the `listen()` method from `Adapter` in favour of using
175
+ server-specific APIs
176
+ - Server changes:
177
+ - Use cryptographically secure random number generators to create client IDs
178
+ - Allow extensions to access request properties by using 3-ary methods
179
+ - Objects supporting the `bind()` method now implement the full `EventEmitter`
180
+ API
181
+ - Stop the server from forwarding the `clientId` property of published
182
+ messages
183
+ - Miscellaneous:
184
+ - Support Browserify by returning the client module
185
+ - `Faye.logger` can now be a logger object rather than a function
186
+
187
+
188
+ ### 0.8.11 / 2014-07-08
189
+
190
+ - Make some changes to JSON-P responses to mitigate the Rosetta Flash attack
191
+ - http://miki.it/blog/2014/7/8/abusing-jsonp-with-rosetta-flash/
192
+
193
+
194
+ ### 0.8.10 -- removed due to error while publishing
101
195
 
102
196
 
103
197
  ### 0.8.9 / 2013-02-26
104
198
 
105
- * Specify ciphers for SSL on Node to mitigate the BEAST attack
106
- * Mitigate increased risk of socket hang-up errors in Node v0.8.20
107
- * Fix race condition when processing outgoing extensions in the Node server
108
- * Fix problem loading the client script when using `{mount: '/'}`
109
- * Clean up connection objects when a WebSocket is re-used with a new clientId
110
- * All JavaScript code now runs in strict mode
111
- * Select transport on handshake, instead of on client creation to allow time for `disable()` calls
112
- * Do not speculatively open WebSocket/EventSource connections if they are disabled
113
- * Gracefully handle WebSocket messages with no data on the client side
114
- * Close and reconnect WebSocket when onerror is fired, not just when onclose is fired
115
- * Fix problem with caching of EventSource connections with stale clientIds
116
- * Don't parse query strings when checking if a URL is same-origin or not
199
+ - Specify ciphers for SSL on Node to mitigate the BEAST attack
200
+ - Mitigate increased risk of socket hang-up errors in Node v0.8.20
201
+ - Fix race condition when processing outgoing extensions in the Node server
202
+ - Fix problem loading the client script when using `{mount: '/'}`
203
+ - Clean up connection objects when a WebSocket is re-used with a new clientId
204
+ - All JavaScript code now runs in strict mode
205
+ - Select transport on handshake, instead of on client creation to allow time for
206
+ `disable()` calls
207
+ - Do not speculatively open WebSocket/EventSource connections if they are
208
+ disabled
209
+ - Gracefully handle WebSocket messages with no data on the client side
210
+ - Close and reconnect WebSocket when onerror is fired, not just when onclose is
211
+ fired
212
+ - Fix problem with caching of EventSource connections with stale clientIds
213
+ - Don't parse query strings when checking if a URL is same-origin or not
117
214
 
118
215
 
119
216
  ### 0.8.8 / 2013-01-10
120
217
 
121
- * Patch security hole allowing remote execution of arbitrary Server methods
218
+ - Patch security hole allowing remote execution of arbitrary Server methods
122
219
 
123
220
 
124
221
  ### 0.8.7 -- removed due to error while publishing
@@ -126,280 +223,311 @@
126
223
 
127
224
  ### 0.8.6 / 2012-10-07
128
225
 
129
- * Make sure messages pushed to the client over a socket pass through outgoing extensions
226
+ - Make sure messages pushed to the client over a socket pass through outgoing
227
+ extensions
130
228
 
131
229
 
132
230
  ### 0.8.5 / 2012-09-30
133
231
 
134
- * Fix a bug in `URI.parse()` that caused Faye endpoints to inherit search and hash from `window.location`
232
+ - Fix a bug in `URI.parse()` that caused Faye endpoints to inherit search and
233
+ hash from `window.location`
135
234
 
136
235
 
137
236
  ### 0.8.4 / 2012-09-29
138
237
 
139
- * Optimise upgrade process so that WebSocket is tested earlier and the connection is cached
140
- * Check that EventSource actually works to work around broken Opera implementation
141
- * Emit `connection:open` and `connection:close` events from the Engine proxy
142
- * Increase size of client IDs from 128 to 160 bits
143
- * Fix bug with relative URL resolution in IE
144
- * Limit the JSON-P transport's message buffer so it doesn't create over-long URLs
145
- * Send `Pragma: no-cache` with XHR requests to guard against iOS 6 POST caching
146
- * Add `charset=utf-8` to response Content-Type headers
238
+ - Optimise upgrade process so that WebSocket is tested earlier and the
239
+ connection is cached
240
+ - Check that EventSource actually works to work around broken Opera
241
+ implementation
242
+ - Emit `connection:open` and `connection:close` events from the Engine proxy
243
+ - Increase size of client IDs from 128 to 160 bits
244
+ - Fix bug with relative URL resolution in IE
245
+ - Limit the JSON-P transport's message buffer so it doesn't create over-long
246
+ URLs
247
+ - Send `Pragma: no-cache` with XHR requests to guard against iOS 6 POST caching
248
+ - Add `charset=utf-8` to response Content-Type headers
147
249
 
148
250
 
149
251
  ### 0.8.3 / 2012-07-15
150
252
 
151
- * `Client#subscribe` returns an array of Subscriptions if given an array of channels
152
- * Allow different endpoints to be specified per-transport
153
- * Only use IE's `XDomainRequest` for same-protocol requests
154
- * Replace URL parser with one that treats relative URLs the same as the browser
155
- * Improve logging of malformed requests and detect problems earlier
156
- * Make sure socket connections are closed when a client session is timed out
157
- * Stop WebSocket reconnecting after `window.onbeforeunload`
253
+ - `Client#subscribe` returns an array of Subscriptions if given an array of
254
+ channels
255
+ - Allow different endpoints to be specified per-transport
256
+ - Only use IE's `XDomainRequest` for same-protocol requests
257
+ - Replace URL parser with one that treats relative URLs the same as the browser
258
+ - Improve logging of malformed requests and detect problems earlier
259
+ - Make sure socket connections are closed when a client session is timed out
260
+ - Stop WebSocket reconnecting after `window.onbeforeunload`
158
261
 
159
262
 
160
263
  ### 0.8.2 / 2012-04-12
161
264
 
162
- * Fix replacement of `null` with `{}` in `copyObject()`
163
- * Make EventSource transport trigger `transport:up/down` events
164
- * Supply source map for minified JavaScript client, and include source in gem
165
- * Return `Content-Length: 0` for 304 responses
166
- * Handle pre-flight CORS requests from old versions of Safari
265
+ - Fix replacement of `null` with `{}` in `copyObject()`
266
+ - Make EventSource transport trigger `transport:up/down` events
267
+ - Supply source map for minified JavaScript client, and include source in gem
268
+ - Return `Content-Length: 0` for 304 responses
269
+ - Handle pre-flight CORS requests from old versions of Safari
167
270
 
168
271
 
169
272
  ### 0.8.1 / 2012-03-15
170
273
 
171
- * Make `Publisher#trigger` safe for event listeners that modify the listener list
172
- * Make `Server#subscribe` return a response if the incoming message has an error
173
- * Fix edge case in code that identifies the `clientId` of socket connections
174
- * Return `Content-Length` headers for HTTP responses
175
- * Don't send empty lists of messages from the WebSocket transport
176
- * Stop client sending multiple `/meta/subscribe` messages for subscriptions made before handshaking
177
- * Stop client treating incoming published messages as responses to `/meta/*` messages
274
+ - Make `Publisher#trigger` safe for event listeners that modify the listener
275
+ list
276
+ - Make `Server#subscribe` return a response if the incoming message has an error
277
+ - Fix edge case in code that identifies the `clientId` of socket connections
278
+ - Return `Content-Length` headers for HTTP responses
279
+ - Don't send empty lists of messages from the WebSocket transport
280
+ - Stop client sending multiple `/meta/subscribe` messages for subscriptions made
281
+ before handshaking
282
+ - Stop client treating incoming published messages as responses to `/meta/*`
283
+ messages
178
284
 
179
285
 
180
286
  ### 0.8.0 / 2012-02-26
181
287
 
182
- * Extract the Redis engine into a separate library, `faye-redis`
183
- * Stabilize and document the Engine API so others can write backends
184
- * Extract WebSocket and EventSource tools into a separate library, `faye-websocket`
185
- * Improve use of WebSocket so messages are immediately pushed rather than polling
186
- * Introduce new EventSource-based transport, for proxies that block WebSocket
187
- * Support the Rainbows and Goliath web servers for Ruby, same as `faye-websocket`
188
- * Improve detection of network errors and switch to fixed-interval for reconnecting
189
- * Add `setHeader()` method to Client (e.g. for connecting to Salesforce API)
190
- * Add `timeout()` method to `Faye.Deferrable` to match `EventMachine::Deferrable`
191
- * Fix some bugs in client-side message handlers created with `subscribe()`
192
- * Improve speed and memory consumption of `copyObject()`
193
- * Switch from JSON to Yajl for JSON parsing in Ruby
288
+ - Extract the Redis engine into a separate library, `faye-redis`
289
+ - Stabilize and document the Engine API so others can write backends
290
+ - Extract WebSocket and EventSource tools into a separate library,
291
+ `faye-websocket`
292
+ - Improve use of WebSocket so messages are immediately pushed rather than
293
+ polling
294
+ - Introduce new EventSource-based transport, for proxies that block WebSocket
295
+ - Support the Rainbows and Goliath web servers for Ruby, same as
296
+ `faye-websocket`
297
+ - Improve detection of network errors and switch to fixed-interval for
298
+ reconnecting
299
+ - Add `setHeader()` method to Client (e.g. for connecting to Salesforce API)
300
+ - Add `timeout()` method to `Faye.Deferrable` to match
301
+ `EventMachine::Deferrable`
302
+ - Fix some bugs in client-side message handlers created with `subscribe()`
303
+ - Improve speed and memory consumption of `copyObject()`
304
+ - Switch from JSON to Yajl for JSON parsing in Ruby
305
+
306
+
307
+ ### 0.7.2 / 2013-01-10
308
+
309
+ - Patch security hole allowing remote execution of arbitrary Server methods
194
310
 
195
311
 
196
312
  ### 0.7.1 / 2011-12-22
197
313
 
198
- * Extension `added()` and `removed()` methods now receive the extended object
199
- * Detection of WebSockets in RackAdapter is more strict
314
+ - Extension `added()` and `removed()` methods now receive the extended object
315
+ - Detection of WebSockets in RackAdapter is more strict
200
316
 
201
317
 
202
318
  ### 0.7.0 / 2011-11-22
203
319
 
204
- * Provide an event API for monitoring engine events on the server side
205
- * Implement server-side WebSocket connections for improved latency
206
- * Fix WebSocket protocol bugs and expose APIs for developers to use
207
- * Make server-side HTTP transports support SSL and cookies
208
- * Allow clients to disable selected transports and autodisconnection
209
- * Add callback/errback API to `Client#publish()` interface
210
- * Add `socket` setting for the Redis engine for connecting through a Unix socket
320
+ - Provide an event API for monitoring engine events on the server side
321
+ - Implement server-side WebSocket connections for improved latency
322
+ - Fix WebSocket protocol bugs and expose APIs for developers to use
323
+ - Make server-side HTTP transports support SSL and cookies
324
+ - Allow clients to disable selected transports and autodisconnection
325
+ - Add callback/errback API to `Client#publish()` interface
326
+ - Add `socket` setting for the Redis engine for connecting through a Unix socket
327
+
328
+
329
+ ### 0.6.8 / 2013-01-10
330
+
331
+ - Patch security hole allowing remote execution of arbitrary Server methods
211
332
 
212
333
 
213
334
  ### 0.6.7 / 2011-10-20
214
335
 
215
- * Cache client script in memory and add `ETag` and `Last-Modified` headers
216
- * Fix bug in Node Redis engine where `undefined` was used if no namespace given
217
- * Flush Redis message queues using a transaction to avoid re-delivery of messages
218
- * Fix race condition and timing errors present in Redis locking code
219
- * Use `Cache-Control: no-cache, no-store` on JSON-P responses
220
- * Improvements to the CORS and JSON-P transports
221
- * Prevent retry handlers in transports from being invoked multiple times
222
- * Use the current page protocol by default when parsing relative URIs
336
+ - Cache client script in memory and add `ETag` and `Last-Modified` headers
337
+ - Fix bug in Node Redis engine where `undefined` was used if no namespace given
338
+ - Flush Redis message queues using a transaction to avoid re-delivery of
339
+ messages
340
+ - Fix race condition and timing errors present in Redis locking code
341
+ - Use `Cache-Control: no-cache, no-store` on JSON-P responses
342
+ - Improvements to the CORS and JSON-P transports
343
+ - Prevent retry handlers in transports from being invoked multiple times
344
+ - Use the current page protocol by default when parsing relative URIs
223
345
 
224
346
 
225
347
  ### 0.6.6 / 2011-09-12
226
348
 
227
- * Add `:key` and `:cert` options to the `Adapter#listen` methods for setting up SSL
228
- * Fix error detection of CORS transport in IE9 running IE8 compatibility mode
229
- * Fix dependency versions so that Rubygems lets Faye install
349
+ - Add `:key` and `:cert` options to the `Adapter#listen` methods for setting up
350
+ SSL
351
+ - Fix error detection of CORS transport in IE9 running IE8 compatibility mode
352
+ - Fix dependency versions so that Rubygems lets Faye install
230
353
 
231
354
 
232
355
  ### 0.6.5 / 2011-08-29
233
356
 
234
- * Fix UTF-8 encoding bugs in draft-75/76 and protocol-8 WebSocket parsers
235
- * Switch to streaming parser for WebSocket protocol-8
236
- * Remove an `SREM` operation that shouldn't have been in the Redis engine
237
- * Move `thin_extensions.rb` so it's not on the Rubygems load path
357
+ - Fix UTF-8 encoding bugs in draft-75/76 and protocol-8 WebSocket parsers
358
+ - Switch to streaming parser for WebSocket protocol-8
359
+ - Remove an `SREM` operation that shouldn't have been in the Redis engine
360
+ - Move `thin_extensions.rb` so it's not on the Rubygems load path
238
361
 
239
362
 
240
363
  ### 0.6.4 / 2011-08-18
241
364
 
242
- * Support WebSocket protocol used by Chrome 14 and Firefox 6
243
- * Fix handling of multibyte characters in WebSocket messages on Node
244
- * Improve message routing in Node memory engine to avoid false duplicates
365
+ - Support WebSocket protocol used by Chrome 14 and Firefox 6
366
+ - Fix handling of multibyte characters in WebSocket messages on Node
367
+ - Improve message routing in Node memory engine to avoid false duplicates
245
368
 
246
369
 
247
370
  ### 0.6.3 / 2011-07-10
248
371
 
249
- * Use sequential message IDs to reduce memory usage on the client side
250
- * Only send advice with handshake and connect responses
251
- * Stop trying to publish `/meta/*` messages - no-one is listening and it breaks `/**`
252
- * Fix bug causing invalid listeners to appear after a client reconnection
253
- * Stop loading `rubygems` within our library code
254
- * Make sure we only queue a message for each client once in the Redis engine
255
- * Use lists instead of sets for message queues in Redis
256
- * Improve clean-up of expired clients in Redis engine
372
+ - Use sequential message IDs to reduce memory usage on the client side
373
+ - Only send advice with handshake and connect responses
374
+ - Stop trying to publish `/meta/*` messages - no-one is listening and it breaks
375
+ `/**`
376
+ - Fix bug causing invalid listeners to appear after a client reconnection
377
+ - Stop loading `rubygems` within our library code
378
+ - Make sure we only queue a message for each client once in the Redis engine
379
+ - Use lists instead of sets for message queues in Redis
380
+ - Improve clean-up of expired clients in Redis engine
257
381
 
258
382
 
259
383
  ### 0.6.2 / 2011-06-19
260
384
 
261
- * Add authentication, database selection and namespacing to Redis engine
262
- * Clean up all client data when removing clients from Redis
263
- * Fix `cross-origin-long-polling` for `OPTIONS`-aware browsers
264
- * Update secure WebSocket detection for recent Node versions
265
- * Reinstate `faye.client` field in Rack environment
385
+ - Add authentication, database selection and namespacing to Redis engine
386
+ - Clean up all client data when removing clients from Redis
387
+ - Fix `cross-origin-long-polling` for `OPTIONS`-aware browsers
388
+ - Update secure WebSocket detection for recent Node versions
389
+ - Reinstate `faye.client` field in Rack environment
266
390
 
267
391
 
268
392
  ### 0.6.1 / 2011-06-06
269
393
 
270
- * Fix `cross-origin-long-polling` support in `RackAdapter`
271
- * Plug some potential memory leaks in `Memory` engine
394
+ - Fix `cross-origin-long-polling` support in `RackAdapter`
395
+ - Plug some potential memory leaks in `Memory` engine
272
396
 
273
397
 
274
398
  ### 0.6.0 / 2011-05-21
275
399
 
276
- * Extract core logic into the `Engine` class to support swappable backends
277
- * Introduce a Redis-backed engine to support clustered web front-ends
278
- * Use CORS for `cross-domain long-polling`
279
- * Make server more resilient against bad requests, including empty message lists
280
- * Perform subscription validation on the server and use errbacks to signal errors
281
- * Prohibit publishing to wildcard channels
282
- * Unsubscribing from a channel is now O(1) instead of O(N)
283
- * Much more thorough and consistent unit test coverage of both versions
284
- * Automatic integration tests using Terminus and TestSwarm
400
+ - Extract core logic into the `Engine` class to support swappable backends
401
+ - Introduce a Redis-backed engine to support clustered web front-ends
402
+ - Use CORS for `cross-domain long-polling`
403
+ - Make server more resilient against bad requests, including empty message lists
404
+ - Perform subscription validation on the server and use errbacks to signal
405
+ errors
406
+ - Prohibit publishing to wildcard channels
407
+ - Unsubscribing from a channel is now O(1) instead of O(N)
408
+ - Much more thorough and consistent unit test coverage of both versions
409
+ - Automatic integration tests using Terminus and TestSwarm
285
410
 
286
411
 
287
412
  ### 0.5.5 / 2011-01-16
288
413
 
289
- * Open a real socket to check for WebSocket usability, not just object detection
290
- * Catch server-side errors when handshaking with WebSockets
414
+ - Open a real socket to check for WebSocket usability, not just object detection
415
+ - Catch server-side errors when handshaking with WebSockets
291
416
 
292
417
 
293
418
  ### 0.5.4 / 2010-12-19
294
419
 
295
- * Add a `#callback` method to `Subscriptions` to detect when they become active
296
- * Add `:extensions` option to `RackAdapter` to make it easier to extend middleware
297
- * Detect secure WebSocket requests through the `HTTP_X_FORWARDED_PROTO` header
298
- * Handle socket errors when sending WebSocket messages from `NodeAdapter`
299
- * Use exponential backoff to reconnect client-side WebSockets to reduce CPU load
420
+ - Add a `#callback` method to `Subscriptions` to detect when they become active
421
+ - Add `:extensions` option to `RackAdapter` to make it easier to extend
422
+ middleware
423
+ - Detect secure WebSocket requests through the `HTTP_X_FORWARDED_PROTO` header
424
+ - Handle socket errors when sending WebSocket messages from `NodeAdapter`
425
+ - Use exponential backoff to reconnect client-side WebSockets to reduce CPU load
300
426
 
301
427
 
302
428
  ### 0.5.3 / 2010-10-21
303
429
 
304
- * Improve detection of `wss:` requirement for secure WebSocket connections
305
- * Correctly use default ports (80,443) for server-side HTTP connections
306
- * Support legacy `application/x-www-form-urlencoded` POST requests
307
- * Delete unused Channel objects that have all their subscribers removed
308
- * Fix resend/reconnect logic in WebSocket transport
309
- * Keep client script in memory rather than reading it from disk every time
310
- * Prevent error-adding extensions from breaking the core protocol
430
+ - Improve detection of `wss:` requirement for secure WebSocket connections
431
+ - Correctly use default ports (80,443) for server-side HTTP connections
432
+ - Support legacy `application/x-www-form-urlencoded` POST requests
433
+ - Delete unused Channel objects that have all their subscribers removed
434
+ - Fix resend/reconnect logic in WebSocket transport
435
+ - Keep client script in memory rather than reading it from disk every time
436
+ - Prevent error-adding extensions from breaking the core protocol
311
437
 
312
438
 
313
439
  ### 0.5.2 / 2010-08-12
314
440
 
315
- * Support draft-76 of the WebSocket protocol (FF4, Chrome 6)
316
- * Reduce `Connection::MAX_DELAY` to improve latency
441
+ - Support draft-76 of the WebSocket protocol (FF4, Chrome 6)
442
+ - Reduce `Connection::MAX_DELAY` to improve latency
317
443
 
318
444
 
319
445
  ### 0.5.1 / 2010-07-21
320
446
 
321
- * Fix a publishing problem in Ruby `LocalTransport`
447
+ - Fix a publishing problem in Ruby `LocalTransport`
322
448
 
323
449
 
324
450
  ### 0.5.0 / 2010-07-17
325
451
 
326
- * Handle multiple event listeners bound to a channel
327
- * Add extension system for adding domain-specific logic to the protocol
328
- * Improve handling of client reconnections if the server goes down
329
- * Change default polling interval to 0 (immediate reconnect)
330
- * Add support for WebSockets (draft75 only) as a network transport
331
- * Remove support for Ruby servers other than Thin
332
- * Make client and server compatible with CometD (1.x and 2.0) components
333
- * Improve clean-up of unused server-side connections
334
- * Change Node API for adding Faye service to an HTTP server
452
+ - Handle multiple event listeners bound to a channel
453
+ - Add extension system for adding domain-specific logic to the protocol
454
+ - Improve handling of client reconnections if the server goes down
455
+ - Change default polling interval to 0 (immediate reconnect)
456
+ - Add support for WebSockets (draft75 only) as a network transport
457
+ - Remove support for Ruby servers other than Thin
458
+ - Make client and server compatible with CometD (1.x and 2.0) components
459
+ - Improve clean-up of unused server-side connections
460
+ - Change Node API for adding Faye service to an HTTP server
335
461
 
336
462
 
337
463
  ### 0.3.4 / 2010-06-20
338
464
 
339
- * Stop local clients going into an infinite loop if a subscription block causes a reconnect
465
+ - Stop local clients going into an infinite loop if a subscription block causes
466
+ a reconnect
340
467
 
341
468
 
342
469
  ### 0.3.3 / 2010-06-07
343
470
 
344
- * Bring Node APIs up to date with 0.1.97
345
- * Catch `ECONNREFUSED` errors in Node clients to withstand server outages
346
- * Refactor the `Server` internals
471
+ - Bring Node APIs up to date with 0.1.97
472
+ - Catch `ECONNREFUSED` errors in Node clients to withstand server outages
473
+ - Refactor the `Server` internals
347
474
 
348
475
 
349
476
  ### 0.3.2 / 2010-04-04
350
477
 
351
- * Fix problems with JSON serialization when Prototype, MooTools present
352
- * Make the client reconnect if it doesn't hear from the server after a timeout
353
- * Stop JavaScript server returning `NaN` for `advice.interval`
354
- * Make Ruby server return an integer for `advice.interval`
355
- * Ensure EventMachine is running before handling messages
356
- * Handle `data` and `end` events properly in Node HTTP API
357
- * Switch to `application/json` for content types and stop using querystring format in POST bodies
358
- * Respond to any URL path under the mount point, not just the exact match
478
+ - Fix problems with JSON serialization when Prototype, MooTools present
479
+ - Make the client reconnect if it doesn't hear from the server after a timeout
480
+ - Stop JavaScript server returning `NaN` for `advice.interval`
481
+ - Make Ruby server return an integer for `advice.interval`
482
+ - Ensure EventMachine is running before handling messages
483
+ - Handle `data` and `end` events properly in Node HTTP API
484
+ - Switch to `application/json` for content types and stop using querystring
485
+ format in POST bodies
486
+ - Respond to any URL path under the mount point, not just the exact match
359
487
 
360
488
 
361
489
  ### 0.3.1 / 2010-03-09
362
490
 
363
- * Pass client down through Rack stack as `env['faye.client']`
364
- * Refactor some JavaScript internals to mirror Ruby codebase
491
+ - Pass client down through Rack stack as `env['faye.client']`
492
+ - Refactor some JavaScript internals to mirror Ruby codebase
365
493
 
366
494
 
367
495
  ### 0.3.0 / 2010-03-01
368
496
 
369
- * Add server-side clients for Node.js and Ruby environments
370
- * Clients support both HTTP and in-process transports
371
- * Fix ID generation in JavaScript version to 128-bit IDs
372
- * Fix bug in interpretation of `**` channel wildcard
373
- * Users don't have to call `#connect()` on clients any more
374
- * Fix timeout race conditions that were killing active connections
375
- * Support new Node APIs from 0.1.29.
497
+ - Add server-side clients for Node.js and Ruby environments
498
+ - Clients support both HTTP and in-process transports
499
+ - Fix ID generation in JavaScript version to 128-bit IDs
500
+ - Fix bug in interpretation of `**` channel wildcard
501
+ - Users don't have to call `#connect()` on clients any more
502
+ - Fix timeout race conditions that were killing active connections
503
+ - Support new Node APIs from 0.1.29.
376
504
 
377
505
 
378
506
  ### 0.2.2 / 2010-02-10
379
507
 
380
- * Kick out requests with malformed JSON as 400s
508
+ - Kick out requests with malformed JSON as 400s
381
509
 
382
510
 
383
511
  ### 0.2.1 / 2010-02-04
384
512
 
385
- * Fix server-side flushing of callback-polling connections
386
- * Backend can be used cross-domain if running on Node or Thin
513
+ - Fix server-side flushing of callback-polling connections
514
+ - Backend can be used cross-domain if running on Node or Thin
387
515
 
388
516
 
389
517
  ### 0.2.0 / 2010-02-02
390
518
 
391
- * Port server to JavaScript with an adapter for Node.js
392
- * Support Thin's async responses in the Ruby version for complete non-blocking
393
- * Fix some minor client-side bugs in transport choice
519
+ - Port server to JavaScript with an adapter for Node.js
520
+ - Support Thin's async responses in the Ruby version for complete non-blocking
521
+ - Fix some minor client-side bugs in transport choice
394
522
 
395
523
 
396
524
  ### 0.1.1 / 2009-07-26
397
525
 
398
- * Fix a broken client build
526
+ - Fix a broken client build
399
527
 
400
528
 
401
529
  ### 0.1.0 / 2009-06-15
402
530
 
403
- * Ruby Bayeux server and Rack adapter
404
- * Internally evented using EventMachine, web frontend blocks
405
- * JavaScript client with `long-polling` and `callback-polling`
531
+ - Ruby Bayeux server and Rack adapter
532
+ - Internally evented using EventMachine, web frontend blocks
533
+ - JavaScript client with `long-polling` and `callback-polling`