Commit graph

77 commits

Author SHA1 Message Date
Mark Qvist
28eba69900
Added generation notices 2026-09-18 01:49:52 +02:00
Mark Qvist
b28f5ebf7a
Allow inbound queue utilization in drainer benchmarks 2026-08-28 11:11:42 +02:00
Mark Qvist
e714c559cc
Updated tests init 2026-08-27 22:17:38 +02:00
Mark Qvist
10848b7cff
Added egress control HWM limiter test 2026-08-27 01:55:28 +02:00
Mark Qvist
ac9130f01f
Added coalesced transmit test 2026-08-26 21:38:15 +02:00
Mark Qvist
54a919f045
Added optimized HDLC implementation 2026-08-26 20:59:38 +02:00
Mark Qvist
47add6381d
Increase queues for throughput tests 2026-08-25 11:14:38 +02:00
Mark Qvist
dd204e11ce
Added 32k throughput run 2026-08-25 11:07:38 +02:00
Mark Qvist
9f66b5a6a3
Merge branch 'optimize' 2026-08-25 02:51:54 +02:00
Mark Qvist
f111709902
Updated througput benchmarker 2026-08-25 01:41:31 +02:00
Mark Qvist
516cb106c1 Updated througput benchmarker 2026-08-24 21:54:11 +02:00
Mark Qvist
7e197542e5 Updated througput bench 2026-08-24 21:54:11 +02:00
Mark Qvist
5e013464da Added throughput benchmarker 2026-08-24 21:54:11 +02:00
Mark Qvist
b9278ce352
Added throughput benchmarker 2026-08-24 20:42:57 +02:00
Mark Qvist
171868c6cb
Added IFAC and HKDF tests to test runner 2026-08-23 23:49:59 +02:00
Mark Qvist
cfddb9abe6
Added HKDF tests 2026-08-23 23:48:48 +02:00
Mark Qvist
929aba0282
Added IFAC tests 2026-08-23 23:47:34 +02:00
Mark Qvist
7488336985
Use test runner config loglevel setting 2026-08-21 11:32:53 +02:00
Mark Qvist
df80181006
Utilize full link MDU in RawChannelWriter 2026-08-19 17:57:14 +02:00
Mark Qvist
3db15dae44
Updated identity test 2026-08-16 21:28:03 +02:00
Mark Qvist
12c21d4e25
Cleanup 2026-07-24 15:33:19 +02:00
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
Mark Qvist
23c0a493b1 Refactoring work for free-threaded transport I/O 2026-04-12 14:55:42 +02:00
Mark Qvist
a699d7c110 Run github workflow tests on Python 3.11
Some checks failed
Build Reticulum / test (push) Has been cancelled
Build Reticulum / package (push) Has been cancelled
Build Reticulum / release (push) Has been cancelled
2025-11-02 22:43:12 +01:00
Mark Qvist
0896df05b6 Workaround for https://github.com/python/cpython/issues/138720
Some checks are pending
Build Reticulum / test (push) Waiting to run
Build Reticulum / package (push) Blocked by required conditions
Build Reticulum / release (push) Blocked by required conditions
2025-11-02 11:50:17 +01:00
Mark Qvist
045cb662ef Removed legacy AES-128 handlers 2025-05-26 19:04:30 +02:00
Mark Qvist
5f502746a4 Updated tests 2025-05-13 13:16:37 +02:00
Mark Qvist
3dc260a300 Updated link tests 2025-05-10 20:59:23 +02:00
Mark Qvist
7065856229 Added resource with metadata tests 2025-05-10 15:31:35 +02:00
Mark Qvist
38241452d3 Dynamic link mode establishment 2025-05-06 16:31:36 +02:00
Mark Qvist
3cbcbec942 Updated tests for link modes 2025-05-06 14:23:42 +02:00
Mark Qvist
13b4291840 Epoll backend switch 2025-04-08 02:33:32 +02:00
Mark Qvist
08751a762a Add timing deviation stats to encrypt/decrypt tests 2025-02-25 12:31:29 +01:00
Mark Qvist
e5c22b8a3f Run tests against CRNS 2025-02-24 12:04:10 +01:00
Mark Qvist
cd0f82d9ad Updated tests 2025-01-13 15:42:32 +01:00
Mark Qvist
f595648a9b Updated tests 2024-05-04 20:27:27 +02:00
Mark Qvist
a2caa47334 Improved link tests 2024-01-14 00:12:30 +01:00
Mark Qvist
5ba789f782 Updated single-packet timing 2023-11-06 11:10:38 +01:00
Mark Qvist
9ce2ea4a5c Updated link test 2023-11-05 23:36:19 +01:00
Mark Qvist
09e146ef0b Updated channel tests 2023-09-18 00:34:02 +02:00
Mark Qvist
4c272aa536 Updated buffer tests for windowed channel 2023-05-18 23:32:29 +02:00
Mark Qvist
e184861822 Enabled channel tests 2023-05-18 23:31:29 +02:00
Mark Qvist
387b8c46ff Cleanup 2023-05-11 18:35:01 +02:00
Mark Qvist
a4c64abed4 Initial framework for channel windowing 2023-05-10 18:43:17 +02:00
Mark Qvist
f522cb1db1 Added per-packet compression to buffer 2023-05-09 22:13:57 +02:00
Aaron Heise
6d9d410a70
Address multiple issues with Buffer and Channel
- StreamDataMessage now packed by struct rather than umsgpack for a more predictable size
- Added protected variable on LocalInterface to allow tests to simulate a low bandwidth connection
- Retry timer now has exponential backoff and a more sane starting value
- Link proves packet _before_ sending contents to Channel; this should help prevent spurious retries especially on half-duplex links
- Prevent Transport packet filter from filtering out duplicate packets for Channel; handle duplicates in Channel to ensure the packet is reproven (in case the original proof packet was lost)
- Fix up other tests broken by these changes
2023-03-04 23:37:58 -06:00
Aaron Heise
aac2b9f987
Buffer: send and receive binary data over Channel
(also some minor fixes in channel)
2023-03-02 17:17:18 -06:00
Aaron Heise
d2d121d49f
Fix broken Channel test 2023-02-28 08:38:36 -06:00
Aaron Heise
d3c4928eda
Tidy up PR 2023-02-27 21:31:41 -06:00
Aaron Heise
68f95cd80b
Tidy up PR 2023-02-27 21:30:13 -06:00