<feed xmlns='http://www.w3.org/2005/Atom'>
<title>tesseras-paste/src/bin/tpd.rs, branch v0.1.1</title>
<subtitle>Decentralized pastebin built on tesseras-dht
</subtitle>
<link rel='alternate' type='text/html' href='http://git.tesseras.net/tesseras-paste/'/>
<entry>
<title>Add automatic re-join and -v flag for verbose logging</title>
<updated>2026-03-26T01:19:39+00:00</updated>
<author>
<name>murilo ijanc</name>
</author>
<published>2026-03-26T01:19:39+00:00</published>
<link rel='alternate' type='text/html' href='http://git.tesseras.net/tesseras-paste/commit/?id=4214189961d59b9de15e221a9c4b229c0d646e78'/>
<id>4214189961d59b9de15e221a9c4b229c0d646e78</id>
<content type='text'>
When the routing table drops to zero peers, the daemon now
re-joins bootstrap nodes every 60s, unbanning their addresses
first so replies are not silently discarded.

Both tp and tpd accept -v for debug-level output without
needing RUST_LOG environment variable.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When the routing table drops to zero peers, the daemon now
re-joins bootstrap nodes every 60s, unbanning their addresses
first so replies are not silently discarded.

Both tp and tpd accept -v for debug-level output without
needing RUST_LOG environment variable.
</pre>
</div>
</content>
</entry>
<entry>
<title>Limit stdin read in tp, bound protocol drain, document Arc leak</title>
<updated>2026-03-25T18:49:08+00:00</updated>
<author>
<name>murilo ijanc</name>
</author>
<published>2026-03-25T18:41:40+00:00</published>
<link rel='alternate' type='text/html' href='http://git.tesseras.net/tesseras-paste/commit/?id=290f53c38cdacd502eb6dda52f2ad207063e3973'/>
<id>290f53c38cdacd502eb6dda52f2ad207063e3973</id>
<content type='text'>
- tp: limit stdin to 64 KiB + 1 byte to reject oversized pastes
  early without unbounded memory allocation
- daemon: bound the oversized-line drain to MAX_LINE_SIZE so a
  client without newlines cannot block beyond the read timeout
- tpd: document intentional Arc::into_raw leak in signal handler
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- tp: limit stdin to 64 KiB + 1 byte to reject oversized pastes
  early without unbounded memory allocation
- daemon: bound the oversized-line drain to MAX_LINE_SIZE so a
  client without newlines cannot block beyond the read timeout
- tpd: document intentional Arc::into_raw leak in signal handler
</pre>
</div>
</content>
</entry>
<entry>
<title>Harden identity key permissions, atomic writes, and HTTP method</title>
<updated>2026-03-25T18:30:45+00:00</updated>
<author>
<name>murilo ijanc</name>
</author>
<published>2026-03-25T18:26:44+00:00</published>
<link rel='alternate' type='text/html' href='http://git.tesseras.net/tesseras-paste/commit/?id=62b68cc461b5e298add3ab190fe9a38f3efefe7a'/>
<id>62b68cc461b5e298add3ab190fe9a38f3efefe7a</id>
<content type='text'>
- Write identity.key with mode 0600 to prevent other users from
  reading the Ed25519 private seed
- Use destination filename in atomic_write temp path to avoid
  collisions between concurrent writes to different files
- Reject HTTP methods other than GET/HEAD with 405
- Return "Hello Tesseras World" on GET /
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Write identity.key with mode 0600 to prevent other users from
  reading the Ed25519 private seed
- Use destination filename in atomic_write temp path to avoid
  collisions between concurrent writes to different files
- Reject HTTP methods other than GET/HEAD with 405
- Return "Hello Tesseras World" on GET /
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix clippy warnings: needless borrow and collapsible if</title>
<updated>2026-03-25T18:10:15+00:00</updated>
<author>
<name>murilo ijanc</name>
</author>
<published>2026-03-25T18:10:15+00:00</published>
<link rel='alternate' type='text/html' href='http://git.tesseras.net/tesseras-paste/commit/?id=63c080840a7567f67effa9703d7c94b488d22fc1'/>
<id>63c080840a7567f67effa9703d7c94b488d22fc1</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Exit early if data directory cannot be created</title>
<updated>2026-03-25T17:55:41+00:00</updated>
<author>
<name>murilo ijanc</name>
</author>
<published>2026-03-25T17:55:41+00:00</published>
<link rel='alternate' type='text/html' href='http://git.tesseras.net/tesseras-paste/commit/?id=e93f672b2f9c7ce3c8deae5ddbadcd21ba919e33'/>
<id>e93f672b2f9c7ce3c8deae5ddbadcd21ba919e33</id>
<content type='text'>
Report the actual error instead of silently ignoring it and
failing later with a confusing message in PasteStore::open.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Report the actual error instead of silently ignoring it and
failing later with a confusing message in PasteStore::open.
</pre>
</div>
</content>
</entry>
<entry>
<title>Add pledge(2) and unveil(2) sandboxing for tp and tpd</title>
<updated>2026-03-25T17:06:13+00:00</updated>
<author>
<name>murilo ijanc</name>
</author>
<published>2026-03-25T16:58:11+00:00</published>
<link rel='alternate' type='text/html' href='http://git.tesseras.net/tesseras-paste/commit/?id=57176d45cacb98f1968daa8f8b2efd2735da2731'/>
<id>57176d45cacb98f1968daa8f8b2efd2735da2731</id>
<content type='text'>
tpd: unveil data dir (rwc), resolv.conf (r) when DNS needed,
then pledge stdio rpath wpath cpath fattr inet unix dns.

tp: unveil socket path (rw), then pledge stdio unix rpath.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
tpd: unveil data dir (rwc), resolv.conf (r) when DNS needed,
then pledge stdio rpath wpath cpath fattr inet unix dns.

tp: unveil socket path (rw), then pledge stdio unix rpath.
</pre>
</div>
</content>
</entry>
<entry>
<title>Add DNS SRV bootstrap discovery for automatic peer finding</title>
<updated>2026-03-25T06:46:21+00:00</updated>
<author>
<name>murilo ijanc</name>
</author>
<published>2026-03-25T06:46:21+00:00</published>
<link rel='alternate' type='text/html' href='http://git.tesseras.net/tesseras-paste/commit/?id=ee25588324ca61275782a3628dd1838dae58e69e'/>
<id>ee25588324ca61275782a3628dd1838dae58e69e</id>
<content type='text'>
tpd now queries _tesseras._udp.tesseras.net SRV records to discover
bootstrap peers when no -b flag is given. Add -n flag to disable this
automatic discovery for seed/isolated nodes.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
tpd now queries _tesseras._udp.tesseras.net SRV records to discover
bootstrap peers when no -b flag is given. Add -n flag to disable this
automatic discovery for seed/isolated nodes.
</pre>
</div>
</content>
</entry>
<entry>
<title>Initial commit: tesseras-paste decentralized pastebin</title>
<updated>2026-03-25T05:07:37+00:00</updated>
<author>
<name>murilo ijanc</name>
</author>
<published>2026-03-25T05:07:37+00:00</published>
<link rel='alternate' type='text/html' href='http://git.tesseras.net/tesseras-paste/commit/?id=7aff2e1d279a4e442b32f49ca0a0eca065355787'/>
<id>7aff2e1d279a4e442b32f49ca0a0eca065355787</id>
<content type='text'>
DHT-backed encrypted pastebin with two binaries (tp/tpd),
XChaCha20-Poly1305 encryption, content-addressed storage,
and Unix socket + HTTP interfaces.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
DHT-backed encrypted pastebin with two binaries (tp/tpd),
XChaCha20-Poly1305 encryption, content-addressed storage,
and Unix socket + HTTP interfaces.
</pre>
</div>
</content>
</entry>
</feed>
