
Product
Announcing Precomputed Reachability Analysis in Socket
Socket’s precomputed reachability slashes false positives by flagging up to 80% of vulnerabilities as irrelevant, with no setup and instant results.
lt_donthave
Advanced tools
JavaScript implementation of the The BitTorrent lt_donthave extension (BEP 54). Use with bittorrent-protocol.
The purpose of this extension is to allow peers to indicate that they no longer have a piece. It provides a single donthave
message that means the opposite of the standard have
message. In addition, when a client receives donthave
, it knows that all requests for the matching piece have failed.
Works in the browser with browserify! This module is used by WebTorrent.
npm install lt_donthave
This package should be used with bittorrent-protocol, which supports a plugin-like system for extending the protocol with additional functionality.
Say you're already using bittorrent-protocol
. Your code might look something like this:
import BitField from 'bitfield'
import Protocol from 'bittorrent-protocol'
import net from 'net'
net.createServer(socket => {
var wire = new Protocol()
socket.pipe(wire).pipe(socket)
// handle handshake
wire.on('handshake', (infoHash, peerId) => {
wire.handshake(Buffer.from('my info hash'), Buffer.from('my peer id'))
// advertise that we have all 10 pieces of the torrent
const bitfield = new BitField(10)
for (let i = 0; i <= 10; i++) {
bitfield.set(i, true)
}
wire.bitfield(bitfield)
})
}).listen(6881)
To add support for BEP 54, simply modify your code like this:
import BitField from 'bitfield'
import Protocol from 'bittorrent-protocol'
import net from 'net'
import lt_donthave from 'lt_donthave'
net.createServer(socket => {
const wire = new Protocol()
socket.pipe(wire).pipe(socket)
// initialize the extension
wire.use(lt_donthave())
// all `lt_donthave` functionality can now be accessed at wire.lt_donthave
wire.on('request', (pieceIndex, offset, length, cb) => {
// whoops, turns out we don't have any pieces after all
wire.lt_donthave.donthave(pieceIndex)
cb(new Error('not found'))
})
// 'donthave' event will fire when the remote peer indicates it no longer has a piece
wire.lt_donthave.on('donthave', index => {
// remote peer no longer has piece `index`
})
// handle handshake
wire.on('handshake', (infoHash, peerId) => {
wire.handshake(Buffer.from('my info hash'), Buffer.from('my peer id'))
// advertise that we have all 10 pieces of the torrent
const bitfield = new BitField(10)
for (let i = 0; i <= 10; i++) {
bitfield.set(i, true)
}
wire.bitfield(bitfield)
})
}).listen(6881)
lt_donthave()
Initialize the extension.
wire.use(lt_donthave())
lt_donthave.donthave(index)
Tell the remote peer that this peer no longer has the piece with the specified index
.
Opposite of wire.have
.
lt_donthave.on('donthave', index => {})
Fired when the remote peer no longer has the piece with the specified index
.
Opposite of wire.on('have', index => ())
After this is fired, all outstanding requests to the remote peer for that piece will automatically fail.
MIT. Copyright (c) John Hiesey and WebTorrent, LLC.
FAQs
The BitTorrent lt_donthave extension (BEP 54)
The npm package lt_donthave receives a total of 7,003 weekly downloads. As such, lt_donthave popularity was classified as popular.
We found that lt_donthave demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 9 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Socket’s precomputed reachability slashes false positives by flagging up to 80% of vulnerabilities as irrelevant, with no setup and instant results.
Product
Socket is launching experimental protection for Chrome extensions, scanning for malware and risky permissions to prevent silent supply chain attacks.
Product
Add secure dependency scanning to Claude Desktop with Socket MCP, a one-click extension that keeps your coding conversations safe from malicious packages.