From 142b5091c15f2d41d2598f941d968d91ee50eb39 Mon Sep 17 00:00:00 2001 From: czq <89424516@qq.com> Date: Mon, 5 May 2025 20:02:45 +0800 Subject: [PATCH 1/2] fix notify init bug --- server/receive.go | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/server/receive.go b/server/receive.go index 434b08e..e1d9dcb 100644 --- a/server/receive.go +++ b/server/receive.go @@ -20,19 +20,6 @@ func (server *Server) receive(ctx context.Context, sessionID string, msg []byte) return nil, pkg.ErrLackSession } - if !gjson.GetBytes(msg, "id").Exists() { - notify := &protocol.JSONRPCNotification{} - if err := pkg.JSONUnmarshal(msg, ¬ify); err != nil { - return nil, err - } - if err := server.receiveNotify(sessionID, notify); err != nil { - notify.RawParams = nil // simplified log - server.logger.Errorf("receive notify:%+v error: %s", notify, err.Error()) - return nil, err - } - return nil, nil - } - // case request or response if !gjson.GetBytes(msg, "method").Exists() { resp := &protocol.JSONRPCResponse{} @@ -52,6 +39,20 @@ func (server *Server) receive(ctx context.Context, sessionID string, msg []byte) if err := pkg.JSONUnmarshal(msg, &req); err != nil { return nil, err } + + if req.Method == protocol.NotificationInitialized { + notify := &protocol.JSONRPCNotification{} + if err := pkg.JSONUnmarshal(msg, ¬ify); err != nil { + return nil, err + } + if err := server.receiveNotify(sessionID, notify); err != nil { + notify.RawParams = nil // simplified log + server.logger.Errorf("receive notify:%+v error: %s", notify, err.Error()) + return nil, err + } + return nil, nil + } + if !req.IsValid() { return nil, pkg.ErrRequestInvalid } From 610509122104f58a9e441d03fc8c4208cbe4c107 Mon Sep 17 00:00:00 2001 From: czq <89424516@qq.com> Date: Wed, 7 May 2025 18:30:44 +0800 Subject: [PATCH 2/2] no check status --- server/receive.go | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/server/receive.go b/server/receive.go index e1d9dcb..3f65d01 100644 --- a/server/receive.go +++ b/server/receive.go @@ -20,6 +20,19 @@ func (server *Server) receive(ctx context.Context, sessionID string, msg []byte) return nil, pkg.ErrLackSession } + if !gjson.GetBytes(msg, "id").Exists() { + notify := &protocol.JSONRPCNotification{} + if err := pkg.JSONUnmarshal(msg, ¬ify); err != nil { + return nil, err + } + if err := server.receiveNotify(sessionID, notify); err != nil { + notify.RawParams = nil // simplified log + server.logger.Errorf("receive notify:%+v error: %s", notify, err.Error()) + return nil, err + } + return nil, nil + } + // case request or response if !gjson.GetBytes(msg, "method").Exists() { resp := &protocol.JSONRPCResponse{} @@ -39,29 +52,13 @@ func (server *Server) receive(ctx context.Context, sessionID string, msg []byte) if err := pkg.JSONUnmarshal(msg, &req); err != nil { return nil, err } - - if req.Method == protocol.NotificationInitialized { - notify := &protocol.JSONRPCNotification{} - if err := pkg.JSONUnmarshal(msg, ¬ify); err != nil { - return nil, err - } - if err := server.receiveNotify(sessionID, notify); err != nil { - notify.RawParams = nil // simplified log - server.logger.Errorf("receive notify:%+v error: %s", notify, err.Error()) - return nil, err - } - return nil, nil - } - if !req.IsValid() { return nil, pkg.ErrRequestInvalid } if sessionID != "" && req.Method != protocol.Initialize && req.Method != protocol.Ping { - if s, ok := server.sessionManager.GetSession(sessionID); !ok { + if _, ok := server.sessionManager.GetSession(sessionID); !ok { return nil, pkg.ErrLackSession - } else if !s.GetReady() { - return nil, pkg.ErrSessionHasNotInitialized } }