From ca8cbcdc63c2875f996658dd49453099424192af Mon Sep 17 00:00:00 2001 From: "R.I.Pienaar" Date: Tue, 17 Nov 2020 16:33:22 +0100 Subject: [PATCH] support subjects starting with { still doesnt support a subject {} Signed-off-by: R.I.Pienaar --- server/jetstream_api.go | 10 ++++------ test/jetstream_test.go | 5 +++++ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/server/jetstream_api.go b/server/jetstream_api.go index f3447a7f..ba12c443 100644 --- a/server/jetstream_api.go +++ b/server/jetstream_api.go @@ -997,13 +997,11 @@ func (s *Server) jsStreamLookupRequest(sub *subscription, c *client, subject, re if bytes.HasPrefix(bytes.TrimSpace(msg), []byte("{")) { var req JSApiStreamLookupRequest err := json.Unmarshal(msg, &req) - if err != nil { - resp.Error = &ApiError{Code: 400, Description: "invalid request"} - s.sendAPIResponse(c, subject, reply, string(msg), s.jsonResponse(&resp)) - return + // happy path we set it, otherwise we try whatever was in the + // msg as if its a subject this is because '{' is a valid subject + if err == nil { + subj = req.Subject } - - subj = req.Subject } if !IsValidSubject(subj) { diff --git a/test/jetstream_test.go b/test/jetstream_test.go index 46652ba4..f974558f 100644 --- a/test/jetstream_test.go +++ b/test/jetstream_test.go @@ -425,6 +425,9 @@ func TestJetStreamLookupStreamBySubject(t *testing.T) { if _, err := acc.AddStream(&server.StreamConfig{Name: "4", Subjects: []string{"baz.*.*.>"}}); err != nil { t.Fatalf("Unexpected error adding stream: %v", err) } + if _, err := acc.AddStream(&server.StreamConfig{Name: "5", Subjects: []string{"{test"}}); err != nil { + t.Fatalf("Unexpected error adding stream: %v", err) + } // Check some errors first. checkError := func(subj string) { @@ -500,6 +503,8 @@ func TestJetStreamLookupStreamBySubject(t *testing.T) { checkAPILookup(c.subj, c.stream, c.filtered) checkAPILookup(fmt.Sprintf(`{"subject":%q}`, c.subj), c.stream, c.filtered) } + + checkAPILookup("{test", "5", false) } func TestJetStreamConsumerWithStartTime(t *testing.T) {