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