diff --git a/relay.go b/relay.go index aa8d862..0d78cd1 100644 --- a/relay.go +++ b/relay.go @@ -318,10 +318,10 @@ func (r *Relay) HandleRelayMessage(envelope Envelope) { } // Write queues a message to be sent to the relay. -func (r *Relay) Write(msg []byte) error { +func (r *Relay) Write(msg []byte) <-chan error { ch := make(chan error) r.writeQueue <- writeRequest{msg: msg, answer: ch} - return <-ch + return ch } // Publish sends an "EVENT" command to the relay r as in NIP-01. @@ -364,7 +364,7 @@ func (r *Relay) Publish(ctx context.Context, event Event) (Status, error) { envb, _ := EventEnvelope{Event: event}.MarshalJSON() debugLog("{%s} sending %v\n", r.URL, envb) status = PublishStatusSent - if err := r.Write(envb); err != nil { + if err := <-r.Write(envb); err != nil { status = PublishStatusFailed return status, err } @@ -423,7 +423,7 @@ func (r *Relay) Auth(ctx context.Context, event Event) (Status, error) { // send AUTH authResponse, _ := AuthEnvelope{Event: event}.MarshalJSON() debugLog("{%s} sending %v\n", r.URL, authResponse) - if err := r.Write(authResponse); err != nil { + if err := <-r.Write(authResponse); err != nil { // status will be "failed" return status, err } diff --git a/subscription.go b/subscription.go index 5625630..b7fbbf2 100644 --- a/subscription.go +++ b/subscription.go @@ -88,7 +88,7 @@ func (sub *Subscription) Fire() error { debugLog("{%s} sending %v", sub.Relay.URL, reqb) sub.live = true - if err := sub.Relay.Write(reqb); err != nil { + if err := <-sub.Relay.Write(reqb); err != nil { sub.cancel() return fmt.Errorf("failed to write: %w", err) }