Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
Add more peer ID entropy
|
|
This still keeps the peer ID printable as ascii, while adding lots more
entropy
|
|
|
|
|
|
|
|
|
|
Fixes #848
|
|
Fixes #862
|
|
|
|
|
|
|
|
`.map` calls zeroFill with the index as `pad` argument, causing incorrect results like `'1.2.5' -> '0112'`.
|
|
|
|
Use the new Buffer APIs from Node v6 for added security. For example,
Buffer.from() will throw if passed a number, unlike Buffer() which
allocated UNINITIALIZED memory.
Use the safe-buffer package for compatibility with previous versions of
Node.js, including v4.x, v0.12, and v0.10.
https://github.com/feross/safe-buffer
|
|
|
|
|
|
Private 'infoHash' event allows client.add to check for duplicate
torrents and destroy them before the normal 'infoHash' event is
emitted. Prevents user applications from needing to deal with duplicate
'infoHash' events.
|
|
|
|
Closes #649
Based on a PR by @nkittsteiner. #791
|
|
|
|
|
|
|
|
|
|
- Only pass `torrent.infoHash` to the Chunk Store constructor, instead
of the `Torrent`
instance itself, to prevent accidental memory leaks of the `Torrent`
object by the
store. (Open an issue if you were using other properties. They can be
re-added.)
- Non-fatal errors with a single torrent will be emitted at
`torrent.on('error')`. You
should listen to this event. Previously, all torrent errors were also
emitted on
`client.on('error')` and handling `torrent.on('error')` was optional.
This design is
better since now it is possible to distinguish between fatal client
errors
(`client.on('error')`) when the whole client becomes unusable versus
recoverable errors
where only a single torrent fails (`torrent.on('error')`) but the
client can continue to
be used. However, if there is no `torrent.on('error')` event, then
the error will be
forwarded to `client.on('error')`. This prevents crashing the client
when the user
only has a listener on the client, but it makes it impossible for
them to determine
a client error versus a torrent error.
- Errors creating a torrent with `client.seed` are now emitted on the
returned `torrent`
object instead of the client (unless there is no event listeners on
`torrent.on('error')` as previously discussed). The torrent object is
now also destroyed
automatically for the user, as was probably expected.
- If `client.get` is passed a `Torrent` instance, it now only returns
it if it is present
in the client.
|
|
|
|
### Added
- `client.listening` property to signal whether TCP server is listening
for incoming
connections.
### Changed
- Merged `Swarm` class into `Torrent` object. Properties on
`torrent.swarm` (like
`torrent.swarm.wires`) now exist on `torrent` (e.g. `torrent.wires`).
- `torrent.addPeer` can no longer be called before the `infoHash` event
has been
emitted.
- Remove `torrent.on('listening')` event. Use `client.on('listening')`
instead.
- Remove support from `TCPPool` for listening on multiple ports. This
was not used by
WebTorrent and just added complexity. There is now a single `TCPPool`
instance for the
whole WebTorrent client.
- Deprecate: Do not use `client.download()` anymore. Use `client.add()`
instead.
- Deprecate: Do not use `torrent.swarm` anymore. Use `torrent` instead.
### Fixed
- When there is a `torrent.on('error')` listener, don't also emit
`client.on('error')`.
- Do not return existing torrent object when duplicate torrent is
added. Fire an
`'error'` event instead.
- Memory leak of `Torrent` object caused by `RarityMap`
- Memory leak of `Torrent` object caused by `TCPPool`
- `client.ratio` and `torrent.ratio` are now calculated as `uploaded /
received` instead
of `uploaded / downloaded`.
|
|
|
|
|
|
|
|
|
|
|
|
- client.on(‘error’, err, torrent) always includes relevant torrent
object for all errors
- ‘torrent’ event emitted when duplicate torrent added
- ‘seed’ event emitted when duplicate torrent seeded
|
|
convert streams to buffer, since we need to consume the stream twice.
|
|
|
|
|
|
torrent.downloadSpeed() -> torrent.downloadSpeed
torrent.uploadSpeed() -> torrent.uploadSpeed
|
|
Detect native WebRTC support in the environment.
```js
if (WebTorrent.WEBRTC_SUPPORT) {
// webrtc support!
} else {
// fallback
}
```
|
|
- The underlying option on the `bittorrent-swarm` instance is named
`maxConns` which is a more accurate name
- Let `bittorrent-swarm` handle non-number maxConns values
|
|
|
|
|
|
When the user sets `{ tracker: false }` on the WebTorrent client, don’t
add trackers to the torrent by default.
|
|
Instead of “WebTorrent/0.63.0”, it’s now “WebTorrent/0063”.
|
|
|
|
|
|
|
|
Clone options when seeding / downloading
|
|
|