From 7ff534d1dad698b8bb0ab698636e23e73e57751e Mon Sep 17 00:00:00 2001 From: Derek Collison Date: Fri, 8 Jul 2022 07:19:15 -0700 Subject: [PATCH] Allow get next for json stream get version Signed-off-by: Derek Collison --- server/jetstream_api.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/server/jetstream_api.go b/server/jetstream_api.go index d7325058..f884b634 100644 --- a/server/jetstream_api.go +++ b/server/jetstream_api.go @@ -2714,7 +2714,13 @@ func (s *Server) jsMsgGetRequest(sub *subscription, c *client, _ *Account, subje } // Check that we do not have both options set. - if req.Seq > 0 && req.LastFor != _EMPTY_ || req.Seq == 0 && req.LastFor == _EMPTY_ { + if req.Seq > 0 && req.LastFor != _EMPTY_ || req.Seq == 0 && req.LastFor == _EMPTY_ && req.NextFor == _EMPTY_ { + resp.Error = NewJSBadRequestError() + s.sendAPIErrResponse(ci, acc, subject, reply, string(msg), s.jsonResponse(&resp)) + return + } + // Check that both last and next not both set. + if req.LastFor != _EMPTY_ && req.NextFor != _EMPTY_ { resp.Error = NewJSBadRequestError() s.sendAPIErrResponse(ci, acc, subject, reply, string(msg), s.jsonResponse(&resp)) return @@ -2730,8 +2736,10 @@ func (s *Server) jsMsgGetRequest(sub *subscription, c *client, _ *Account, subje var svp StoreMsg var sm *StoreMsg - if req.Seq > 0 { + if req.Seq > 0 && req.NextFor == _EMPTY_ { sm, err = mset.store.LoadMsg(req.Seq, &svp) + } else if req.NextFor != _EMPTY_ { + sm, _, err = mset.store.LoadNextMsg(req.NextFor, subjectHasWildcard(req.NextFor), req.Seq, &svp) } else { sm, err = mset.store.LoadLastMsg(req.LastFor, &svp) }