| 1600 | /* ── Handle JSON-RPC request ──────────────────────────────────── */ |
| 1601 | |
| 1602 | static void handle_rpc(cbm_http_conn_t *c, const cbm_http_req_t *req, cbm_mcp_server_t *mcp) { |
| 1603 | if (req->body_len == 0 || req->body_len > MAX_BODY_SIZE || !req->body) { |
| 1604 | cbm_http_replyf(c, 400, g_cors_json, |
| 1605 | "{\"jsonrpc\":\"2.0\",\"error\":{\"code\":-32600," |
| 1606 | "\"message\":\"invalid request size\"},\"id\":null}"); |
| 1607 | return; |
| 1608 | } |
| 1609 | |
| 1610 | /* req->body is NUL-terminated by the transport */ |
| 1611 | char *response = cbm_mcp_server_handle(mcp, req->body); |
| 1612 | |
| 1613 | if (response) { |
| 1614 | cbm_http_replyf(c, 200, g_cors_json, "%s", response); |
| 1615 | free(response); |
| 1616 | } else { |
| 1617 | cbm_http_replyf(c, 204, g_cors, "%s", ""); |
| 1618 | } |
| 1619 | } |
| 1620 | |
| 1621 | /* ── Request dispatch ─────────────────────────────────────────── */ |
| 1622 |
no test coverage detected