
Company News
Socket Named Top Sales Organization by RepVue
Socket won two 2026 Reppy Awards from RepVue, ranking in the top 5% of all sales orgs. AE Alexandra Lister shares what it's like to grow a sales career here.
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 11,780 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.

Company News
Socket won two 2026 Reppy Awards from RepVue, ranking in the top 5% of all sales orgs. AE Alexandra Lister shares what it's like to grow a sales career here.

Security News
NIST will stop enriching most CVEs under a new risk-based model, narrowing the NVD's scope as vulnerability submissions continue to surge.

Company News
/Security News
Socket is an initial recipient of OpenAI's Cybersecurity Grant Program, which commits $10M in API credits to defenders securing open source software.