Skip to content

Commit c2f953d

Browse files
committed
fix(cp): use json.Marshal for error messages to properly escape special characters
1 parent 9dfa4c7 commit c2f953d

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

cmd/api/api/cp.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,21 +100,24 @@ func (s *ApiService) CpHandler(w http.ResponseWriter, r *http.Request) {
100100
msgType, message, err := ws.ReadMessage()
101101
if err != nil {
102102
log.ErrorContext(ctx, "failed to read cp request", "error", err)
103-
ws.WriteMessage(websocket.TextMessage, []byte(fmt.Sprintf(`{"type":"error","message":"failed to read request: %v"}`, err)))
103+
errMsg, _ := json.Marshal(CpError{Type: "error", Message: fmt.Sprintf("failed to read request: %v", err)})
104+
ws.WriteMessage(websocket.TextMessage, errMsg)
104105
return
105106
}
106107

107108
if msgType != websocket.TextMessage {
108109
log.ErrorContext(ctx, "expected text message with JSON request", "type", msgType)
109-
ws.WriteMessage(websocket.TextMessage, []byte(`{"type":"error","message":"first message must be JSON text"}`))
110+
errMsg, _ := json.Marshal(CpError{Type: "error", Message: "first message must be JSON text"})
111+
ws.WriteMessage(websocket.TextMessage, errMsg)
110112
return
111113
}
112114

113115
// Parse JSON request
114116
var cpReq CpRequest
115117
if err := json.Unmarshal(message, &cpReq); err != nil {
116118
log.ErrorContext(ctx, "invalid JSON request", "error", err)
117-
ws.WriteMessage(websocket.TextMessage, []byte(fmt.Sprintf(`{"type":"error","message":"invalid JSON: %v"}`, err)))
119+
errMsg, _ := json.Marshal(CpError{Type: "error", Message: fmt.Sprintf("invalid JSON: %v", err)})
120+
ws.WriteMessage(websocket.TextMessage, errMsg)
118121
return
119122
}
120123

0 commit comments

Comments
 (0)