Commit Graph

256 Commits

Author SHA1 Message Date
fiatjaf af4fc98fc2 stop decoding strings unsafely. 2023-06-21 13:03:43 -03:00
boreq b984a598cb Fix panic in ParseMessage
There is a chance the function can panic if a comma is included in the
input which is invalid.
2023-06-20 12:13:48 -03:00
Yasuhiro Matsumoto f4102ea8d2 add icon to RelayInformationDocument 2023-06-20 12:03:45 -03:00
fiatjaf 5bbb6ba05b add empty tags field if nil before signing. 2023-06-13 09:36:38 -03:00
Isaque Veras 58d56abe05 fix: removing redundancy 2023-06-12 08:18:29 -03:00
fiatjaf ee8f58360f print all filters when doesn't match. 2023-06-09 16:11:16 -03:00
fiatjaf f37eb96f28 rename KindBoost to KindRepost. 2023-06-09 13:54:07 -03:00
fiatjaf a80965425b comment out info log for when we get an event outside of a subscription.
relays will often keep sending stored events even though we've closed a subscription already.
2023-06-09 13:49:29 -03:00
fiatjaf bc783a3a24 fix atomicity of subscription ids. 2023-06-09 11:01:42 -03:00
Daniele Tonon b7ec430166 Fix GetImmediateReply
When scanning an event with positional "e" tags the reply is the last one
2023-05-31 12:35:48 -03:00
fiatjaf 9cafea7e2a ensure relay context and subscriptions are closed when we lose connectivity. 2023-05-30 17:44:25 -03:00
fiatjaf 19d96e3566 close SubMany channel when all underlying subscriptions die. 2023-05-30 16:11:33 -03:00
fiatjaf a2941876e3 expose subscriptions from relay and keep that updated. 2023-05-30 14:55:44 -03:00
fiatjaf 0f7a3f01f2 use an atomic counter. 2023-05-30 14:01:07 -03:00
fiatjaf 39f09e6bb9 replace generic-sync-map with xsync. 2023-05-30 13:52:14 -03:00
fiatjaf ad0f73fa9c ensure subscription dies if the relay connection dies. 2023-05-30 13:47:47 -03:00
fiatjaf 5cead32fbe remove extra subscription after publishing an event to check if it is there.
just assume all relays will return OK.
2023-05-30 13:45:45 -03:00
fiatjaf 1cd2c0293d add a bunch more of event kinds. 2023-05-28 15:46:41 -03:00
fiatjaf b269dd9ce9 sdk: return start and end on references for replacement. 2023-05-26 19:22:59 -03:00
Daniele Tonon 5c0f8bff83 Add fields to ProfileMetadata 2023-05-25 08:23:12 -03:00
starcorn2020 123d3a6a9a Add error capture to authentication status in relay.Auth 2023-05-14 10:23:35 -03:00
fiatjaf fa00133825 websocket to send text, not binary. 2023-05-11 10:09:43 -03:00
fiatjaf 0c06788672 oops: stop replacing connectionContext with Connect(ctx). 2023-05-10 09:09:49 -03:00
fiatjaf 9dc674bc02 use different contexts for the relay connection lifetime and the Connect() call.
fixes https://github.com/nbd-wtf/go-nostr/pull/86
2023-05-09 17:08:08 -03:00
fiatjaf ccbb44989f get rid of WriteJSON() and replace calls with manually marshaled envelopes. 2023-05-09 17:02:22 -03:00
fiatjaf d36fbb95b9 ParseMessage() returns an Envelope, use that on the main relay handler loop. 2023-05-09 16:55:21 -03:00
fiatjaf f7ce78d7f8 add custom envelope types with json codecs. 2023-05-09 16:31:10 -03:00
fiatjaf 52a493fd96 EnsureRelay() returns an error. 2023-05-09 00:09:05 -03:00
shota3506 6c186812c9 fix readme code example 2023-05-07 06:21:25 -03:00
shota3506 96f3d4c9a0 fix event comparison in EventSerialization test 2023-05-07 06:21:12 -03:00
fiatjaf c0a42ff2ff SimplePool improvements. 2023-05-06 14:32:39 -03:00
fiatjaf_ 2b2c000d6a Merge pull request #81 from wozuo/master 2023-05-05 21:06:07 -03:00
Marc Tarnutzer 69b9d82bb1 check if messages are compressed on receive 2023-05-06 01:48:01 +02:00
fiatjaf 98a2a39521 add SimplePool. 2023-05-05 19:05:11 -03:00
Marc Tarnutzer c86e907142 enable compression by default 2023-05-05 22:00:25 +02:00
Marc Tarnutzer ee9502bc3e fix: outgoing pings 2023-05-05 12:14:29 +02:00
Marc Tarnutzer f152a5e0c7 simplify connection close 2023-05-04 23:54:39 +02:00
Marc Tarnutzer 9c01ead91f switch to gobwas/ws, add compression 2023-05-04 23:51:15 +02:00
fiatjaf 1c118cd83e take context.Context for nip-05 resolving. 2023-05-04 13:20:15 -03:00
fiatjaf 53e0935308 parse kind in nevent. 2023-05-04 08:24:39 -03:00
fiatjaf 6fc1627fcc json tags on pointers. 2023-05-04 08:24:26 -03:00
fiatjaf 32ca737acf remove unused ping handler (it is done automatically).
fixes https://github.com/nbd-wtf/go-nostr/pull/74, thanks @patdz
2023-04-26 08:12:50 -03:00
Patrick Bennett ebae5d41e6 Add most NIP-11 extension structures to the RelayInformationDocument struct. (#80)
* Fix race condition on status in Relay.Publish method and failure to send

A race-condition exists between setting of the (unprotected) status and the callback which sets the status upon receiving an OK.
The message is sent which can receive an OK in separate goroutine (setting status) prior to the status being set to 'sent.'
The OK can be received prior to the status being set.

This fix also sets the status to PublishStatusFailed if the WriteJSON call fails.

* Add some NIP-11 extension structures to the RelayInformationDocument struct.

Added additional NIP-11 fields for relays that want to provide additional details based on NIP-11 extensions.
The retention structure has been left out as it doesn't have a clean schema for kinds (array of kinds, or pairs of kinds?)
Specified the fields w/ omitempty so marshaled will be same as original NIP-11 if nothing else is specified.
Nested structs defined as pointers so they are omitted if not specified.

* Fix TestPublishWriteFailed so that the socket is given a brief amount of time to close prior to publish being called.
The test relies on Publish always failing.
2023-04-26 08:06:05 -03:00
fiatjaf 3838ed7e91 guard ping writes with the mutex.
fixes https://github.com/nbd-wtf/go-nostr/issues/76#issuecomment-1521170395
2023-04-26 08:04:51 -03:00
Patrick Bennett b077a41f83 Fix race condition on status in Relay.Publish method and failure to send
A race-condition exists between setting of the (unprotected) status and the callback which sets the status upon receiving an OK.
The message is sent which can receive an OK in separate goroutine (setting status) prior to the status being set to 'sent.'
The OK can be received prior to the status being set.

This fix also sets the status to PublishStatusFailed if the WriteJSON call fails.
2023-04-21 07:48:08 -03:00
fiatjaf 9b89a49e5e cancel relay context when calling .Close().
fixing https://github.com/nbd-wtf/go-nostr/issues/76#issuecomment-1517251898
2023-04-21 07:45:28 -03:00
fiatjaf 3785daf8aa normalize relay url from Tag.Relay(). 2023-04-19 14:40:44 -03:00
fiatjaf fc7b20114b update readme and example. 2023-04-16 16:25:25 -03:00
fiatjaf 2695854e56 fixing json filter json + marshaling filter tags. 2023-04-16 16:22:32 -03:00
fiatjaf c42059f4b4 tests run (but not pass) and fine-tuning (specially tag filters) on filter_easyjson.go 2023-04-16 16:16:16 -03:00