From 2bed11bf96b81ef684b9e37de79b63d5adb60bf4 Mon Sep 17 00:00:00 2001
From: Garet Halliday <me@garet.holiday>
Date: Fri, 8 Dec 2023 14:13:55 -0600
Subject: [PATCH] idreply when closed

---
 contrib/codecs/websocket/client.go            |  5 ++++-
 contrib/extension/subscription/client_test.go |  2 +-
 pkg/clientutil/idreply.go                     |  6 +++---
 pkg/jrpctest/suites.go                        | 12 ------------
 4 files changed, 8 insertions(+), 17 deletions(-)

diff --git a/contrib/codecs/websocket/client.go b/contrib/codecs/websocket/client.go
index 7aa5321..4847ada 100644
--- a/contrib/codecs/websocket/client.go
+++ b/contrib/codecs/websocket/client.go
@@ -29,8 +29,11 @@ func newClient(conn *websocket.Conn) (*Client, error) {
 }
 
 func (c *Client) Close() error {
+	if err := c.Client.Close(); err != nil {
+		return err
+	}
 	if err := c.conn.Close(websocket.StatusNormalClosure, ""); err != nil {
 		return err
 	}
-	return c.Client.Close()
+	return nil
 }
diff --git a/contrib/extension/subscription/client_test.go b/contrib/extension/subscription/client_test.go
index b63d6e2..2350506 100644
--- a/contrib/extension/subscription/client_test.go
+++ b/contrib/extension/subscription/client_test.go
@@ -173,7 +173,7 @@ func TestCloseClient(t *testing.T) {
 	}
 
 	go func() {
-		if err := cl.Close(); err != nil {
+		if err = cl.Close(); err != nil {
 			t.Error(err)
 		}
 	}()
diff --git a/pkg/clientutil/idreply.go b/pkg/clientutil/idreply.go
index 1ff7eca..167ce52 100644
--- a/pkg/clientutil/idreply.go
+++ b/pkg/clientutil/idreply.go
@@ -13,8 +13,8 @@ import (
 type IdReply struct {
 	id atomic.Int64
 
-	amClosed atomic.Bool
-	closed   chan struct{}
+	close  atomic.Bool
+	closed chan struct{}
 
 	chs map[string]chan msgOrError
 	mu  sync.Mutex
@@ -109,7 +109,7 @@ func (i *IdReply) Closed() <-chan struct{} {
 }
 
 func (i *IdReply) Close() error {
-	if i.amClosed.Swap(true) {
+	if i.close.Swap(true) {
 		return net.ErrClosed
 	}
 	close(i.closed)
diff --git a/pkg/jrpctest/suites.go b/pkg/jrpctest/suites.go
index c92e6a0..b175b6f 100644
--- a/pkg/jrpctest/suites.go
+++ b/pkg/jrpctest/suites.go
@@ -3,9 +3,7 @@ package jrpctest
 import (
 	"context"
 	"embed"
-	"errors"
 	"math/rand"
-	"net"
 	"reflect"
 	"sync"
 	"testing"
@@ -190,16 +188,6 @@ func RunBasicTestSuite(t *testing.T, args BasicTestSuiteArgs) {
 		wg.Wait()
 	})
 
-	makeTest("close", func(t *testing.T, server *server.Server, client jsonrpc.Conn) {
-		go func() {
-			_ = client.Close()
-		}()
-		err := jsonrpc.CallInto(context.Background(), client, nil, "test_block")
-		if !errors.Is(err, net.ErrClosed) {
-			t.Errorf("expected close error but got %v", err)
-		}
-	})
-
 	makeTest("", func(t *testing.T, server *server.Server, client jsonrpc.Conn) {
 	})
 }
-- 
GitLab