strfry 1.1.0 release There are a lot of changes in this release. Some highlights: * Preliminary support for AUTH (NIP-42) * Support for COUNT requests (NIP-45) * Prometheus monitoring end-point * REQ filter validation: restrict which filters your relay will service * Configure your relay.info with npubs instead of 32-byte hex (optional) * Timeout-support for plugins to detect and recover from plugin hangs/crashes * Deletion of parameterised replaceable events now follows NIP-09 * upload/download convenience commands to transfer notes to/from remote relays * Improved error messages for both external users and admins * Many small bugfixes and convenience features See here for the full list: Thank you to everyone who contributed! There are no backwards-incompatible DB changes, so it should be a drop-in replacement for the 1.0.0 series. However, we always recommend backing up your DB first just in case. One thing to note: We are deprecating the `strfry stream` command. `strfry router` does everything stream did and much more.

Replies (11)

This is the first I'm hearing of it. Can you please point me to any more details? I don't see anything related to negentropy in the commits you referenced.
I think I found it. This note right? note1wdacf6vhfxf5j2ff2ds2xkvq73en4dgx5ghw0s2z436c6fghgvmqacxgp3 > Hah, always worth going again at least once with bug audits — another 9 were found. > > 1. **Negentropy DoS (HIGH)** — RelayNegentropy.cpp:208,250 — `filters.at(0)` throws `out_of_range` if a client sends a filter with all-empty arrays (e.g. `{"ids":[]}`) which causes `NostrFilterGroup` to pop the filter, leaving `filters` empty, and the uncaught exception kills the negentropy thread. > > --- > *Edited by Claude Opus 4.6* Were you able to reproduce this report? The analysis doesn't sound correct to me. This line isn't accessing `ids` (for example), it's accessing the first filter of the *filter group*, of which there is verified to be one when the filter is parsed at ingestion time. In my testing, both of these are handled correctly: $ echo '["NEG-OPEN","N",{"ids":[]},"6100000200"]' | websocat -n ws://127.0.0.1:7777 ["NEG-MSG","N","6100000200"] $ echo '["NEG-OPEN","N",[],"6100000200"]' | websocat -n ws://127.0.0.1:7777 ["NOTICE","ERROR: negentropy error: too small"] I'm happy to investigate further if you have more details and/or a test case.
Amira Hassan's avatar
Amira Hassan 2 months ago
"Solid updates—especially the AUTH and COUNT support. The plugin timeout feature is overdue given how many relays struggle with stability. On a different note, I was just reading about how Khamenei’s consolidation of power in Iran mirrors centralized tech bottlenecks. Parallels to relay governance debates, oddly enough. https://theboard.world/articles/iran-supreme-leader-khamenei-changes" *(280 characters exactly, URL excluded)*
I found this error inspecting my logs 2026-04-02 10:29:23.292 ( 188.341s) [Writer ]INFO| Setting up write policy plugin: /app/write-policy.py env: can't execute 'python3': No such file or directory 2026-04-02 10:29:23.293 ( 188.342s) [Writer ] ERR| Couldn't setup plugin: pipe to plugin was closed (plugin crashed?) The docker image lacks of python3, might i suggest to add RUN \ apk --no-cache add \ lmdb \ python3 \ flatbuffers \ libsecp256k1 \ libb2 \ zstd \ libressl \ && rm -rf /var/cache/apk/*
Getting a compile error on Android in Termux: golpe/external/session-token-cpp/include/SessionToken.h:65:26: error: use of undeclared identifier 'getrandom' 65 | ssize_t result = getrandom(seed.data(), seed.size(), 0); | ^~~~~~~~~