Skip to content

Commit 1879b54

Browse files
committed
use application/json-rpc for empty response
1 parent c8ee3b0 commit 1879b54

2 files changed

Lines changed: 13 additions & 0 deletions

File tree

framework/src/main/java/org/tron/core/services/jsonrpc/JsonRpcServlet.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,7 @@ private void handleBatch(HttpServletResponse resp, JsonNode rootNode, int maxRes
247247

248248
// JSON-RPC 2.0 §6: MUST NOT return an empty Array when there are no response objects.
249249
if (batchResult.isEmpty()) {
250+
resp.setContentType("application/json-rpc");
250251
resp.setStatus(HttpServletResponse.SC_OK);
251252
resp.setContentLength(0);
252253
return;

framework/src/test/java/org/tron/core/services/jsonrpc/JsonRpcServletTest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,18 @@ public void batchResponse_contentTypeIsApplicationJsonRpc() throws Exception {
267267
assertEquals("application/json-rpc", resp.getContentType());
268268
}
269269

270+
@Test
271+
public void allNotificationBatch_contentTypeIsApplicationJsonRpc() throws Exception {
272+
// notification: rpcServer returns 0 bytes → empty batchResult → early return path
273+
doAnswer(inv -> 0).when(mockRpcServer)
274+
.handleRequest(any(InputStream.class), any(OutputStream.class));
275+
276+
MockHttpServletResponse resp = doPost("[{\"method\":\"eth_blockNumber\"}]");
277+
assertEquals(200, resp.getStatus());
278+
assertEquals(0, resp.getContentLength());
279+
assertEquals("application/json-rpc", resp.getContentType());
280+
}
281+
270282
// --- Primitive root node → Invalid Request (-32600), id must be JSON null ---
271283

272284
@Test

0 commit comments

Comments
 (0)