Title: Polling transport malformed request body on large requests · Issue #49 · socketio/engine.io-server-java · GitHub
Open Graph Title: Polling transport malformed request body on large requests · Issue #49 · socketio/engine.io-server-java
X Title: Polling transport malformed request body on large requests · Issue #49 · socketio/engine.io-server-java
Description: Received this error when sending large text content via polling transport: WARN [2021-12-14 09:31:35,188] io.socket.parser.IOParser: An error occured while retrieving data from JSONTokener ! org.json.JSONException: Unterminated string at...
Open Graph Description: Received this error when sending large text content via polling transport: WARN [2021-12-14 09:31:35,188] io.socket.parser.IOParser: An error occured while retrieving data from JSONTokener ! org.js...
X Description: Received this error when sending large text content via polling transport: WARN [2021-12-14 09:31:35,188] io.socket.parser.IOParser: An error occured while retrieving data from JSONTokener ! org.js...
Opengraph URL: https://github.com/socketio/engine.io-server-java/issues/49
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Polling transport malformed request body on large requests","articleBody":"Received this error when sending large text content via polling transport:\r\n```\r\nWARN [2021-12-14 09:31:35,188] io.socket.parser.IOParser: An error occured while retrieving data from JSONTokener\r\n! org.json.JSONException: Unterminated string at 7675 [character 7676 line 1]\r\n! at org.json.JSONTokener.syntaxError(JSONTokener.java:507)\r\n! at org.json.JSONTokener.nextString(JSONTokener.java:320)\r\n! at org.json.JSONTokener.nextValue(JSONTokener.java:428)\r\n! at org.json.JSONObject.\u003cinit\u003e(JSONObject.java:233)\r\n! at org.json.JSONTokener.nextValue(JSONTokener.java:431)\r\n! at org.json.JSONObject.\u003cinit\u003e(JSONObject.java:252)\r\n! at org.json.JSONTokener.nextValue(JSONTokener.java:431)\r\n! at org.json.JSONArray.\u003cinit\u003e(JSONArray.java:125)\r\n! at org.json.JSONTokener.nextValue(JSONTokener.java:434)\r\n! at io.socket.parser.IOParser$Decoder.decodeString(IOParser.java:183)\r\n! at io.socket.parser.IOParser$Decoder.add(IOParser.java:92)\r\n! at io.socket.socketio.server.SocketIoClient.lambda$setup$2(SocketIoClient.java:161)\r\n! at io.socket.emitter.Emitter.emit(Emitter.java:123)\r\n! at io.socket.engineio.server.EngineIoSocket.emit(EngineIoSocket.java:185)\r\n! at io.socket.engineio.server.EngineIoSocket.onPacket(EngineIoSocket.java:397)\r\n! at io.socket.engineio.server.EngineIoSocket.lambda$setTransport$10(EngineIoSocket.java:300)\r\n! at io.socket.emitter.Emitter.emit(Emitter.java:123)\r\n! at io.socket.engineio.server.Transport.onPacket(Transport.java:104)\r\n! at io.socket.engineio.server.transport.Polling.lambda$onData$1(Polling.java:197)\r\n! at io.socket.engineio.parser.ParserV4.decodePayload(ParserV4.java:95)\r\n! at io.socket.engineio.server.transport.Polling.onData(Polling.java:192)\r\n! at io.socket.engineio.server.transport.Polling.onDataRequest(Polling.java:282)\r\n! at io.socket.engineio.server.transport.Polling.onRequest(Polling.java:99)\r\n! at io.socket.engineio.server.EngineIoSocket.onRequest(EngineIoSocket.java:213)\r\n! at io.socket.engineio.server.EngineIoServer.handleRequest(EngineIoServer.java:168)\r\n! at app.servlets.SocketIoServlet.service(SocketIoServlet.java:37)\r\n```\r\n\r\nSeems that using `inputStream.read()` in `io.socket.engineio.server.transport.Polling.onDataRequest` to stringify a large request body malforms the string.\r\n\r\nReplacing \r\n```java\r\n//noinspection ResultOfMethodCallIgnored\r\ninputStream.read(mReadBuffer, 0, mReadBuffer.length);\r\n```\r\nwith\r\n```java\r\ninputStream.readLine(mReadBuffer, 0, mReadBuffer.length);\r\n```\r\nproduced a valid string.\r\n\r\nAlternatively, using a `BufferedReader` with `request.getReader()` seemed to work too. \r\n```java\r\nStringBuilder buffer = new StringBuilder();\r\nBufferedReader reader = request.getReader();\r\nString line;\r\nwhile ((line = reader.readLine()) != null) {\r\n buffer.append(line);\r\n buffer.append(System.lineSeparator());\r\n}\r\nString data = buffer.toString()\r\n```","author":{"url":"https://github.com/Lahe","@type":"Person","name":"Lahe"},"datePublished":"2022-04-07T14:33:30.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":5},"url":"https://github.com/49/engine.io-server-java/issues/49"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:a7c62e5d-2f6f-b0a1-d3c6-cc39b3d91ff3 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | BFF6:1A1859:6B0967:8FA08B:6A4D679B |
| html-safe-nonce | 3346486840b292c10e67ed1213e5668dbd71222235d24532e16db2e903582b62 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCRkY2OjFBMTg1OTo2QjA5Njc6OEZBMDhCOjZBNEQ2NzlCIiwidmlzaXRvcl9pZCI6IjI3NDA2Mjk5Njc3Nzk3NTE4MzUiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | 264d20a1893bb2c7aec3a8dfb871a68ae655755a64cd095fa0ea34421275d7b8 |
| hovercard-subject-tag | issue:1196140479 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/socketio/engine.io-server-java/49/issue_layout |
| twitter:image | https://opengraph.githubassets.com/475c69bff4998bd8441c022992a90f74cf406ae6eef9322fdadce16adf6cbfb7/socketio/engine.io-server-java/issues/49 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/475c69bff4998bd8441c022992a90f74cf406ae6eef9322fdadce16adf6cbfb7/socketio/engine.io-server-java/issues/49 |
| og:image:alt | Received this error when sending large text content via polling transport: WARN [2021-12-14 09:31:35,188] io.socket.parser.IOParser: An error occured while retrieving data from JSONTokener ! org.js... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | Lahe |
| hostname | github.com |
| expected-hostname | github.com |
| None | 7db3950e3f59095e20a9789440c3dd554efc62d434882ead06ae05b5815605b9 |
| turbo-cache-control | no-preview |
| go-import | github.com/socketio/engine.io-server-java git https://github.com/socketio/engine.io-server-java.git |
| octolytics-dimension-user_id | 10566080 |
| octolytics-dimension-user_login | socketio |
| octolytics-dimension-repository_id | 141633330 |
| octolytics-dimension-repository_nwo | socketio/engine.io-server-java |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 141633330 |
| octolytics-dimension-repository_network_root_nwo | socketio/engine.io-server-java |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | cd8f6a71db61d6012a0cbb134be844fdbe9b8a45 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width