135 Commits

Author SHA1 Message Date
fiatjaf
cc23d81e80 pool's .FetchManyReplaceable() and amends to previous commit. 2025-03-12 00:49:58 -03:00
fiatjaf
441f94563f WithCheckDuplicateReplaceable() and helper functions for efficient replaceable event matching. 2025-03-12 00:19:41 -03:00
fiatjaf
cecc71cd81 fix and improve envelope stuff again, deal with messages as strings on all envelope parsing steps. 2025-03-12 00:18:11 -03:00
fiatjaf
5bfaed2740 docstrings for many functions. 2025-03-04 11:42:44 -03:00
fiatjaf
17431dee59 do not close relay connection when ping fails because some relays just do not pong. 2025-01-25 00:26:38 -03:00
fiatjaf
3e1c0ddc7e fix pinging relays: use the main relay context, not the relay connection temporary context. 2025-01-17 14:08:54 -03:00
fiatjaf
06a15fdaab follow list fetching test and related changes and fixes.
- make BatchedSubManyEose() use a single duplicate id index and use it for replaceable loaders;
- fixes parsing follow entry from kind:3 events (and others);
- adds a "cause" to most cancelation errors in relay/pool;
- remove the inherent cache from dataloader (we have our own hopefully);
- increase max frame size we can read from any websocket to 2**18 (262k), which gives over 2000 item lists.
2025-01-17 13:44:51 -03:00
fiatjaf
febf022124 add some basic sdk tests, fix saving hints (normalize urls), checkduplicates arg order, kvdb stuff and other things. 2025-01-16 17:39:16 -03:00
fiatjaf
e1971d12c0 WithCheckDuplicate(), let's see if this works. 2025-01-15 14:29:38 -03:00
fiatjaf
795f9516ae use @mmalmi json string preparsing speedup for duplicate events
- get rid of "nonUnique" variants of subMany as we can now relay on CheckDuplicate to track relays.
- add global pool tracker duplicateMiddleware.
2025-01-15 14:29:38 -03:00
fiatjaf
defc349e57 use coder/websocket for everything, get rid of gobwas.
supposedly it is faster, and anyway it's better to use it since we're already using it for wasm/js.

(previously named nhooyr/websocket).
2025-01-03 01:15:17 -03:00
reis
63919cf685
support wasm (#163) 2025-01-02 09:42:04 -03:00
fiatjaf
f22d4b7692 make it clear that a message was _received_ from a given relay on log output. 2024-12-17 11:06:36 -03:00
fiatjaf
1106329c95 return hyperloglog value from Relay.Count() 2024-12-10 23:24:45 -03:00
fiatjaf
851116d2e3 Merge branch 'hyperloglog' 2024-12-07 00:13:23 -03:00
fiatjaf
98d3766474 fix race condition on ticker ping.
fixes nevent1qqszqakrmmjyjelgp06f3hx0fu70xyvmqt4ed8v65xpmpy9g8nj9qgqpz4mhxue69uhkummnw3ezummcw3ezuer9wchsz9nhwden5te0dehhxarjv4kxjar9wvhx7un89uq32amnwvaz7tmjv4kxz7fwv3sk6atn9e5k7tcnynjra
2024-11-24 14:49:32 -03:00
fiatjaf
0d40b40c9c pool: support CountMany() using hyperloglog. 2024-11-16 17:47:42 -03:00
fiatjaf
4cf3cdbe66 fix horrible infinite loop in Relay.QueryEvents() 2024-10-18 07:07:53 -03:00
fiatjaf
9e0a86d48e subscription must be deemed closed when receiving a CLOSED. 2024-10-15 18:27:19 -03:00
fiatjaf
fe3508881b in the last commits we had forgotten to handle the case in which there was no WithLabel(). 2024-09-29 17:02:19 -03:00
fiatjaf
ad14daec9f allocate subscription id only once on creation. 2024-09-29 16:44:31 -03:00
fiatjaf
24343dbbef reduce allocations at subscription.GetID() because why not. 2024-09-29 07:55:06 -03:00
fiatjaf
47d493b7e8 make libsecp256k1 available with a build tag. 2024-09-27 17:45:46 -03:00
fiatjaf
0caf8deb56 WithUserAgent() pool option. 2024-09-26 19:18:34 -03:00
fiatjaf
23ddac33dd hopefully fix a segfault with broken connections. 2024-09-20 22:59:31 -03:00
fiatjaf
515f76bd86 add a default user-agent: github.com/nbd-wtf/go-nostr.
fixes https://github.com/nbd-wtf/go-nostr/issues/147
2024-09-16 07:11:19 -03:00
fiatjaf
a094f3a9d2 negentropy.
- a way to handle custom messages from Relay (NEG-whatever etc)
- negentropy implementation (adapted from that other one)
- nip77 nostr negentropy extension
- QueryEvents method for RelayStore that returns a channel (makes negentropy syncing work more seamlessly)
2024-09-14 07:40:09 -03:00
fiatjaf
9addd57db7 missing bit from f57d93. 2024-09-11 10:16:28 -03:00
fiatjaf
f57d93ac78 after getting an EOSE we should stop checking since/until. 2024-09-06 19:37:34 -03:00
fiatjaf
51e527680e WithNoticeHandler() just calls a function, no channel stuff anymore.
probably fixes https://t.me/nostr_protocol/145832

I think we were using this channel for legacy reasons, it feels completely unnecessary now.
2024-08-31 23:12:20 -03:00
fiatjaf
a7303c385b error instead of panic'ing when opening subscription. 2024-06-27 14:50:24 -03:00
fiatjaf
a35cdff6c8 problem: connection can be nil when writing and we're panic'ing. 2024-06-21 09:32:53 -03:00
fiatjaf
37ef70e4cb relay: prevent panic on double-closing.
probably fixes https://github.com/nbd-wtf/go-nostr/issues/130
2024-06-19 09:59:28 -03:00
fiatjaf
d06f61136d allow using libsecp256k1 for signature verification in subscriptions. 2024-05-29 17:08:15 -03:00
ice-cronus
c0f1c4f510 add option to connect with custom TLS 2024-03-28 15:54:12 -03:00
fiatjaf
09ea5d5758 subscription.EndOfStoredEvents to have a capacity of 1 so it never gets deadlocked. 2024-01-28 14:34:05 -03:00
fiatjaf
7b292775c0
migrate to xsync/v3
closes https://github.com/nbd-wtf/go-nostr/issues/117
2024-01-10 06:54:53 -03:00
fiatjaf
3e1749a01d
fix OK handling. 2023-12-09 13:21:35 -03:00
fiatjaf
f8fa490293
get rid of PublishStatus and always expect relays to answer with an OK for both AUTH and EvENT publishes. 2023-12-07 21:31:40 -03:00
fiatjaf
3adb1cde3c
only store the last AUTH challenge and allow user to perform auth only whenever they want instead of automatically. 2023-11-28 22:30:16 -03:00
fiatjaf
7449f254db
support handling CLOSED messages from relay client. 2023-11-28 18:54:24 -03:00
fiatjaf
93b43ed426
add infolog for when a relay sends an unexpected OK message.
this can be indicative of either us or the relay miscalculating the event id.
2023-11-08 22:22:30 -03:00
fiatjaf
c357e6babe
log event id on bad signature. 2023-11-08 00:07:01 -03:00
fiatjaf
f6df0f3f40
rename .mu -> .closeMutex 2023-11-05 13:39:09 -03:00
Yasuhiro Matsumoto
20d65d4a76 fix race condition in Close 2023-11-05 13:38:32 -03:00
fiatjaf
f8fb9e8c26
fix OKEnvelope always requiring the 4th field. 2023-11-04 17:30:19 -03:00
Isaque Veras
0f66883dc7 feat(kind): using constants 2023-09-07 07:05:01 -03:00
fiatjaf
eef7c40dc7
migrate to xsync v2. 2023-09-04 16:44:36 -03:00
fiatjaf
1f605f3629
remove intermediary .events channel and hacky ms sleep. 2023-09-04 08:57:53 -03:00
fiatjaf
6d1875de46
ensure eose channel closes after events have been emitted. 2023-09-04 08:33:31 -03:00