Bug Fixes
- Made application agent less verbose for logging
- Spawn tasks for actual CLA transmission in actor instead of blocking
- Tcpcl now spawns a new tokio task for new connections
- Seeing an already known peer did not update its last seen timestamp, now it gets touched on any new beacon
- Tcpcl now uses buffered IO
- Fixed bug where touching of known peers used wrong node ID
- Removed unneeded timeout tick from TCP CLA
- Handle all IO related unwraps in tcpcl
- Made websocket mutexes async
- Potential deadlock in forwarding code when reporting failed transmissions to routing agent fixed
- Added else case to select in tcpcl, logging and aborting session when all channels closed
- Fixed a race condition where the same bundle received multiple times in parallel also get delivery to the local endpoint multiple times. additionalls dispatching spawns a task for forwarding to return earlier.
- Check node and service names for validity with more options than just alphanumeric chars, now following URL and hostname rules
- Report decoding error to client in websocket error message
- Bundles created via WS only consist of primary block and payload, no more hopcount block
Documentation
- Added curl example on how to use HTTP push endpoint to the HTTP client API documentation
- Add new bundle verbose and filtered endpoints to http client API documentation
Features
- Increased sending channel buffer from 1 to 100 for http, mtcp and tcp
- ClaSenderTask now carries the next_hop node ID of the peer
- Http cla now has a timeout to complete the bundle delivery (default: 5s)
- Added transmission time output to tcpcl
- Remove peers from neighborhood list if they fail too often when transferring bundles
- Added optional feature for tokio tracing
- Increased sending channel buffer from 1 to 100 for http, mtcp and tcp
- ClaSenderTask now carries the next_hop node ID of the peer
- Transmission time debug output for all CLAs
- Add connecting peer to peer database for tcpcl if not already known and update last seen field on keep alive packets
- Added deadlock detection for tracing builds or when deadlock_detection feature is enabled
- HTTP cla now uses shared hyper client for connection pooling
- Added config to enable parallel processing of bundles - can speed up bundle transmission time but can also cause congestion and higher CPU load
- Added receive processing time to HTTP push endpoint
- Added rest endpoint with verbose bundle output and filter query interface
- Add new verbose and filter functions to dtnquery bundle CLI tool
- Add more fine granular logging to dtnd processing
- Added python example to produce message flood via websocket (bulk and sequential)
- Return bundle ID for newly sent bundle via websocket
- Ws-flooder.py now supports different payload sizes
- External CLA and Routing (17)
- Mtcp and tcp can now be configured to bind to a specific IP address (27)
Miscellaneous Tasks
- Updated to newest bp7 crate, removing dbg! output
- Minor code cleanups
- Eliminated some clones
- Eliminated bundle clone in tcp CLA
- Cleanup of some log output
- Minor changes to please clippy
- Upgraded dependencies and pleased new clippy lints
- Bump crossbeam-utils from 0.7.2 to 0.8.8 in /core/dtn7/fuzz
- Bump generic-array from 0.12.3 to 0.12.4 in /core/dtn7/fuzz
- Bump regex from 1.3.9 to 1.5.6 in /core/dtn7/fuzz
- Bump miow from 0.2.1 to 0.2.2 in /core/dtn7/fuzz
- Moved fuzz project to top and updated deps to most recent versions
- Cleaned up flooding example and updated comments
- Updated dependencies and switched to dtn7-plus 0.7.0
Refactor
- Switched ClaSender to a channel for sending
- Direct delivery priority is now up to the routing agent
- Switched ClaSender to a channel for sending
- Cleanup in forward of processing logic
- Let tcp_send_bundles directly send reply to provided oneshot address
- Refactored tcpcl to use less tasks
- Moved error handling in tcpcl connect method up to spawning task
- Made return value of cla send function an enum instead of bool
Testing
- Local nodes http example
- Local nodes http example
- Local ping echo test now does not start a CLA
- Added coreemu-lab scenario with 3 nodes and message flooding
- Refactored tests to use more ergonimic shell functions from `libshelltests.sh` to reduce boilerplate
Example
- Update example config to include parallel bundle processing config option