{"record":{"id":"7fe53570f2a9daa7","repo":"TooTallNate/Java-WebSocket","slug":"payload-limit-reached","errorCode":null,"errorMessage":"Payload limit reached.","messagePattern":"Payload limit reached\\.","errorType":"exception","errorClass":"LimitExceededException","httpStatus":null,"severity":"error","filePath":"src/main/java/org/java_websocket/drafts/Draft_6455.java","lineNumber":655,"sourceCode":"      payloadlength = (int) length;\n    }\n    return new TranslatedPayloadMetaData(payloadlength, realpacketsize);\n  }\n\n  /**\n   * Check if the frame size exceeds the allowed limit\n   *\n   * @param length the current payload length\n   * @throws LimitExceededException if the payload length is to big\n   */\n  private void translateSingleFrameCheckLengthLimit(long length) throws LimitExceededException {\n    if (length > Integer.MAX_VALUE) {\n      log.trace(\"Limit exedeed: Payloadsize is to big...\");\n      throw new LimitExceededException(\"Payloadsize is to big...\");\n    }\n    if (length > maxFrameSize) {\n      log.trace(\"Payload limit reached. Allowed: {} Current: {}\", maxFrameSize, length);\n      throw new LimitExceededException(\"Payload limit reached.\", maxFrameSize);\n    }\n    if (length < 0) {\n      log.trace(\"Limit underflow: Payloadsize is to little...\");\n      throw new LimitExceededException(\"Payloadsize is to little...\");\n    }\n  }\n\n  /**\n   * Check if the max packet size is smaller than the real packet size\n   *\n   * @param maxpacketsize  the max packet size\n   * @param realpacketsize the real packet size\n   * @throws IncompleteException if the maxpacketsize is smaller than the realpackagesize\n   */\n  private void translateSingleFrameCheckPacketSize(int maxpacketsize, int realpacketsize)\n      throws IncompleteException {\n    if (maxpacketsize < realpacketsize) {\n      log.trace(\"Incomplete frame: maxpacketsize < realpacketsize\");","sourceCodeStart":637,"sourceCodeEnd":673,"githubUrl":"https://github.com/TooTallNate/Java-WebSocket/blob/afeacbf8c0f6f6a761c9d9daed8c813dd3b8ed7d/src/main/java/org/java_websocket/drafts/Draft_6455.java#L637-L673","documentation":"translateSingleFrameCheckLengthLimit throws LimitExceededException(\"Payload limit reached.\", maxFrameSize) when a frame's payload length exceeds the configured maxFrameSize of the Draft_6455 instance. This is the library's built-in defense against oversized frames.","triggerScenarios":"Incoming frame length (after decoding 126/127 length forms) exceeds maxFrameSize set via setMaxFrameSize() (default Integer.MAX_VALUE); called from translateSingleFrame and translateSingleFramePayloadLength.","commonSituations":"Server configured with a small maxFrameSize (e.g. 1 MiB) receiving larger frames from clients; a client raised its send size but the server limit was not updated; large message framing instead of fragmenting.","solutions":["Increase maxFrameSize on the draft: draft.setMaxFrameSize(desiredLimit) on both sides consistently","Fragment large messages into multiple frames each within the limit","Catch LimitExceededException and close with code 1009 (message too big) instead of crashing","Align client and server frame/message size configuration"],"exampleFix":"// before\nDraft_6455 draft = new Draft_6455(); // default maxFrameSize, big frames rejected\n// after\nDraft_6455 draft = new Draft_6455();\ndraft.setMaxFrameSize(8 * 1024 * 1024); // allow up to 8 MiB frames","handlingStrategy":"validation","validationCode":"// ensure sender payload fits the receiver's configured limit\nif (Charsetfunctions.utf8Bytes(message).length > maxFrameSize) {\n  throw new IllegalArgumentException(\"Message exceeds maxFrameSize=\" + maxFrameSize);\n}","typeGuard":null,"tryCatchPattern":"try {\n  conn.send(message);\n} catch (WebsocketNotConnectedException e) {\n  // connection gone\n} catch (IllegalArgumentException e) {\n  log.error(\"Frame size limit: {}\", e.getMessage());\n}","preventionTips":["Configure matching maxFrameSize on client and server","Document your frame-size limit in the peer-facing API contract","Chunk large payloads at the application level instead of enlarging limits unbounded"],"tags":["websocket","maxframesize","limit-exceeded","configuration"],"backgroundTag":"payload-too-large","analyzedSha":"afeacbf8c0f6f6a761c9d9daed8c813dd3b8ed7d","analyzedAt":"2026-09-09T14:39:47.546Z","contentChangedAt":"2026-09-09T14:39:47.546Z","schemaVersion":2},"datasetVersion":"2026-09-16T09:17:16.951Z"}