From b4f7b8083809966b34e6076ad2dc1fa553eafedf Mon Sep 17 00:00:00 2001
From: a <a@tuxpa.in>
Date: Thu, 5 Oct 2023 08:49:40 -0500
Subject: [PATCH] simplify

---
 pkg/server/server.go | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/pkg/server/server.go b/pkg/server/server.go
index 737af86..6b83d31 100644
--- a/pkg/server/server.go
+++ b/pkg/server/server.go
@@ -165,6 +165,7 @@ func (s *Server) Stop() {
 
 type callResponder struct {
 	remote codec.ReaderWriter
+	mu     sync.Mutex
 }
 
 type notifyEnv struct {
@@ -174,6 +175,9 @@ type notifyEnv struct {
 }
 
 func (c *callResponder) notify(ctx context.Context, env *notifyEnv) error {
+	c.mu.Lock()
+	defer c.mu.Unlock()
+	defer c.remote.Flush()
 	enc := jx.GetEncoder()
 	enc.Grow(4096)
 	enc.ResetWriter(c.remote)
@@ -197,7 +201,11 @@ func (c *callResponder) notify(ctx context.Context, env *notifyEnv) error {
 	if err != nil {
 		return err
 	}
-	return enc.Close()
+	err = enc.Close()
+	if err != nil {
+		return err
+	}
+	return nil
 }
 
 type callEnv struct {
@@ -206,6 +214,9 @@ type callEnv struct {
 }
 
 func (c *callResponder) send(ctx context.Context, env *callEnv) (err error) {
+	c.mu.Lock()
+	defer c.mu.Unlock()
+	defer c.remote.Flush()
 	// notification gets nothing
 	// if all msgs in batch are notification, we trigger an allSkip and write nothing
 	if env.batch {
-- 
GitLab