Write returns an error in a channel (why? I think it makes no difference.)

This commit is contained in:
fiatjaf 2023-06-22 10:46:31 -03:00
parent f78270765d
commit f0a35d7ab2
No known key found for this signature in database
GPG Key ID: BAD43C4BE5C1A3A1
2 changed files with 5 additions and 5 deletions

View File

@ -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
}

View File

@ -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)
}