You've already forked agentic-coding-workflow
bugfix
This commit is contained in:
@@ -249,7 +249,21 @@ func (r *Relay) reader(ctx context.Context, sess handlers.SessionContext) {
|
||||
}
|
||||
|
||||
// handleAgentRequest dispatches an agent → server request to the appropriate handler.
|
||||
// 在独立 goroutine 中运行,故 defer recover 兜底任何 handler panic:记录日志并回送
|
||||
// JSON-RPC internal error,避免 agent 构造的请求 panic 掉整个进程(DoS)。
|
||||
func (r *Relay) handleAgentRequest(ctx context.Context, sess handlers.SessionContext, req *Message) {
|
||||
defer func() {
|
||||
if rec := recover(); rec != nil {
|
||||
r.log.Error("acp.relay.handle_request_panic",
|
||||
"session_id", r.sessionID, "method", req.Method, "panic", fmt.Sprintf("%v", rec))
|
||||
resp := NewResponseErr(req.ID, JSONRPCInternalError, "internal error")
|
||||
select {
|
||||
case r.serverInitiated <- resp:
|
||||
case <-ctx.Done():
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
var resp *Message
|
||||
switch req.Method {
|
||||
case "fs/read_text_file":
|
||||
|
||||
Reference in New Issue
Block a user