Jeremy O'Brien
794e437f6d
Channel: prevent sequence holes and ghost envelopes when sending on a dying outlet
...
RNSChannelOutlet.send() can return a packet that never reached the wire
(link not ACTIVE, no capable interface, etc). The old Channel.send()
queued the envelope in _tx_ring before calling outlet.send(), then
tried to rewind _next_sequence and remove the envelope if the outlet
returned a failed packet. Two problems:
- Between queueing and outlet.send() returning, _tx_ring held an
envelope with packet.raw=None. Any worker thread iterating the
ring (timeout fire, proof callback) crashed in get_packet_id's
packet.get_hash() with a TypeError on None.raw.
- The rewind was only safe for a single-threaded sender: it checked
"is _next_sequence one past mine?" and skipped the rewind otherwise.
Under concurrent senders, the rewind silently failed, leaving a
hole in the on-wire sequence stream. The receiver's contiguous
seqnum rule then stalled the channel permanently with no error.
This fix serializes the reservation-and-transmit pair with a per-channel
_send_lock so the rewind is always correct, and defers queueing until
outlet.send() returns a real packet so _tx_ring never contains a
packet-less envelope. _packet_tx_op() and get_packet_id() now also
defensively skip/return-None for packet-less envelopes.
Also handle the small race where a proof arrives between outlet.send()
registering the receipt and us installing the delivery callback: after
registration, re-read the receipt status and synthesize the
_packet_delivered() call if it's already DELIVERED.
2026-05-19 14:52:59 -04:00
Jeremy O'Brien
ebf544d335
rnsh: don't wait forever for rns operations when timeout isn't set
2026-05-19 07:46:50 -04:00
Jeremy O'Brien
939f30fef2
Don't iterate known_destinations directly; it can change during iteration
2026-05-19 07:46:50 -04:00
Mark Qvist
137d73ad0d
Updated version
2026-05-19 00:51:12 +02:00
Mark Qvist
67625395fe
Updated logging
2026-05-18 22:48:18 +02:00
Mark Qvist
888e3102de
Added offline RSM release manifest verification
2026-05-18 17:55:10 +02:00
Mark Qvist
5243d646f0
Improved known destination persist reliability
2026-05-18 14:57:17 +02:00
Mark Qvist
bdb284ce5d
Improved page node ref handling in commit links
2026-05-18 14:46:00 +02:00
Mark Qvist
1b34820601
Added ability to fetch new verified releases directly from RSM-embedded release manifest data. Added local release generation and signing with the --local option to rnid.
2026-05-18 13:49:01 +02:00
Mark Qvist
cdc6159a15
Added canonical release RSM structure validator to rnid
2026-05-18 13:32:54 +02:00
Mark Qvist
eb2f7ae455
Implemented remote HEAD tracking for forks and mirrors in rngit
2026-05-18 12:39:22 +02:00
Mark Qvist
a74f1bd89f
Save manifest on release fetch
2026-05-18 11:52:46 +02:00
Mark Qvist
0dd063a32e
Clear previous request progress
2026-05-18 03:37:52 +02:00
Mark Qvist
e4a85de089
Actually send manifest and rsgs
2026-05-18 03:31:40 +02:00
Mark Qvist
19bc8ef85c
Cleanup
2026-05-18 03:00:52 +02:00
Mark Qvist
1e33d3eebb
Updated version
2026-05-18 02:52:30 +02:00
Mark Qvist
d18f434583
Implemented rsm-verified release fetching with embedded artifact signatures
2026-05-18 02:51:53 +02:00
Mark Qvist
64749b4d18
Cleanup. Prepared artifact fetch.
2026-05-18 01:24:15 +02:00
Mark Qvist
20283f1536
Added automatic signing and release manifest generation to rnid release
2026-05-18 00:44:41 +02:00
Mark Qvist
c4af328802
Dropped note meta field requirement from rsg structure
2026-05-18 00:10:22 +02:00
Mark Qvist
a2193b9ffd
Dropped note meta field requirement from rsg structure
2026-05-18 00:05:29 +02:00
Mark Qvist
d2542fd49b
Added blocked identities handling and push stats ignore to rngit
2026-05-17 23:26:19 +02:00
Mark Qvist
0333884877
Handle silly links
2026-05-17 23:09:21 +02:00
Mark Qvist
63947ed69a
Oops
2026-05-17 23:07:44 +02:00
Mark Qvist
d6d18ce29c
Fixed micron tags escaping to where they shouldn't go and wreaking havoc on the rest of the pafe. Looking at you table cell truncator.
2026-05-17 23:01:36 +02:00
Mark Qvist
2ef58d8b59
Better table cell truncation method
2026-05-17 22:01:30 +02:00
Mark Qvist
15f2d1635e
Added fork and mirror sync time to repo pages
2026-05-17 21:14:26 +02:00
Mark Qvist
c83b71f49a
Cleanup
2026-05-17 20:45:38 +02:00
Mark Qvist
f0824fd71e
Added RSM metadata embedding and spec validation to rnid
2026-05-17 20:29:40 +02:00
Mark Qvist
8dde60658f
Added validate.py for spec validation
2026-05-17 20:27:16 +02:00
Mark Qvist
9437648ae5
Adjusted logging
2026-05-17 19:06:24 +02:00
Mark Qvist
71b19aca2c
Added signed message from file creation to rnid. Added signed message metadata output option to rnid.
2026-05-17 18:29:44 +02:00
Mark Qvist
7d320f8cd5
Fixed missing working identity check on message signing op
2026-05-17 17:27:18 +02:00
Mark Qvist
66096acc29
Added ability to render raw micron in markdown files
2026-05-17 17:22:25 +02:00
Mark Qvist
128455ef01
Implemented remote permissions management in rngit
2026-05-17 16:49:44 +02:00
Mark Qvist
4f5482f2ae
Implemented identity and destination aliases in rngit
2026-05-17 15:09:00 +02:00
Mark Qvist
2b9fdae74b
Fixed typo
2026-05-17 12:49:53 +02:00
Mark Qvist
7506caa0da
Fixed f-string for old snakes
2026-05-17 12:25:21 +02:00
Mark Qvist
176567e3f1
Updated version
2026-05-17 00:39:15 +02:00
Mark Qvist
15cd4268ac
Cleanup
2026-05-17 00:38:51 +02:00
Mark Qvist
9307db16c4
Allow disabling mirroring interval
2026-05-17 00:17:12 +02:00
Mark Qvist
b2a4ceb853
Updated default config
2026-05-16 23:37:45 +02:00
Mark Qvist
6c7f1d068b
Implemented fork and mirror sync from upstreams
2026-05-16 23:02:45 +02:00
Mark Qvist
b76beb602d
Added scaffolding for periodic upstream mirror sync and manual fork/mirror sync
2026-05-16 22:06:16 +02:00
Mark Qvist
0c68f6491a
Added fork and mirror indications to rngit page node
2026-05-16 21:14:02 +02:00
Mark Qvist
038981474a
Added fork and mirroring support to rngit CLI and node
2026-05-16 20:21:01 +02:00
Mark Qvist
df0b4a5165
Implemented rngit remote repo create
2026-05-16 17:35:00 +02:00
Mark Qvist
db7359f56d
Preparation for create, fork and mirror functionality. Refactored and expanded permissions system. Added group .allowed files. Prepared dynamic permissions resolution. Basic functional scaffolding for create/fork/mirror.
2026-05-16 16:16:10 +02:00
Mark Qvist
12e45b6483
Added work document proposals
2026-05-16 02:11:00 +02:00
Mark Qvist
ba8fca6f87
Nicer stats page
2026-05-15 23:21:56 +02:00