protected boolean onSettings(ByteBuffer buffer, Map<Integer, Integer> settings) { Integer enablePush = settings.get(SettingsFrame.ENABLE_PUSH); if (enablePush != null && enablePush != 0 && enablePush != 1) return connectionFailure(buffer, ErrorCode.PROTOCOL_ERROR.code, "invalid_settings_enable_push"); Integer initialWindowSize = settings.get(SettingsFrame.INITIAL_WINDOW_SIZE); // Values greater than Integer.MAX_VALUE will overflow to negative. if (initialWindowSize != null && initialWindowSize < 0) return connectionFailure(buffer, ErrorCode.FLOW_CONTROL_ERROR.code, "invalid_settings_initial_window_size"); Integer maxFrameLength = settings.get(SettingsFrame.MAX_FRAME_SIZE); if (maxFrameLength != null && (maxFrameLength < Frame.DEFAULT_MAX_LENGTH || maxFrameLength > Frame.MAX_MAX_LENGTH)) return connectionFailure(buffer, ErrorCode.PROTOCOL_ERROR.code, "invalid_settings_max_frame_size"); SettingsFrame frame = new SettingsFrame(settings, hasFlag(Flags.ACK)); reset(); notifySettings(frame); return true; }
protected boolean onSettings(ByteBuffer buffer, Map<Integer, Integer> settings) { Integer enablePush = settings.get(SettingsFrame.ENABLE_PUSH); if (enablePush != null && enablePush != 0 && enablePush != 1) return connectionFailure(buffer, ErrorCode.PROTOCOL_ERROR.code, "invalid_settings_enable_push"); Integer initialWindowSize = settings.get(SettingsFrame.INITIAL_WINDOW_SIZE); // Values greater than Integer.MAX_VALUE will overflow to negative. if (initialWindowSize != null && initialWindowSize < 0) return connectionFailure(buffer, ErrorCode.FLOW_CONTROL_ERROR.code, "invalid_settings_initial_window_size"); Integer maxFrameLength = settings.get(SettingsFrame.MAX_FRAME_SIZE); if (maxFrameLength != null && (maxFrameLength < Frame.DEFAULT_MAX_LENGTH || maxFrameLength > Frame.MAX_MAX_LENGTH)) return connectionFailure(buffer, ErrorCode.PROTOCOL_ERROR.code, "invalid_settings_max_frame_size"); SettingsFrame frame = new SettingsFrame(settings, hasFlag(Flags.ACK)); reset(); notifySettings(frame); return true; }