From d5c5714c6aba35a4f3c4bb5113da043cd7831fe7 Mon Sep 17 00:00:00 2001 From: a <a@tuxpa.in> Date: Sat, 28 Oct 2023 02:57:35 -0500 Subject: [PATCH] fuck me --- contrib/codecs/http/client.go | 5 +++-- contrib/codecs/http/codec.go | 3 +++ pkg/server/responsewriter.go | 6 +++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/contrib/codecs/http/client.go b/contrib/codecs/http/client.go index 2f01aa9..a707be4 100644 --- a/contrib/codecs/http/client.go +++ b/contrib/codecs/http/client.go @@ -59,7 +59,9 @@ func Dial(ctx context.Context, client *http.Client, target string) (*Client, err if client == nil { client = http.DefaultClient } - return &Client{remote: target, c: client, headers: http.Header{}}, nil + return &Client{remote: target, c: client, headers: http.Header{ + "Content-Type": []string{"application/json"}, + }}, nil } func (c *Client) SetHeader(key string, value string) { @@ -196,6 +198,5 @@ func (c *Client) postBuf(ctx context.Context, rd io.Reader) (*http.Response, err } } }() - hreq.Header.Add("Content-Type", "application/json") return c.c.Do(hreq) } diff --git a/contrib/codecs/http/codec.go b/contrib/codecs/http/codec.go index caa126e..3a8e680 100644 --- a/contrib/codecs/http/codec.go +++ b/contrib/codecs/http/codec.go @@ -11,6 +11,7 @@ import ( "net/http" "net/url" "strings" + "sync" "gfx.cafe/open/jrpc/pkg/codec" "gfx.cafe/open/jrpc/pkg/serverutil" @@ -29,6 +30,8 @@ type Codec struct { msgs chan *serverutil.Bundle errCh chan httpError + mu sync.Mutex + i codec.PeerInfo } diff --git a/pkg/server/responsewriter.go b/pkg/server/responsewriter.go index e23a03e..404e585 100644 --- a/pkg/server/responsewriter.go +++ b/pkg/server/responsewriter.go @@ -65,6 +65,11 @@ func (c *callRespWriter) Send(v any, e error) (err error) { if err != nil { return err } + select { + case <-c.ctx.Done(): + return c.ctx.Err() + default: + } defer c.cr.mu.Release(1) if c.err != nil { e = c.err @@ -77,7 +82,6 @@ func (c *callRespWriter) Send(v any, e error) (err error) { if v != nil { ce.v = &v } - err = c.cr.send(c.ctx, ce) if err != nil { return err -- GitLab