in src/main/java/com/twitter/http2/HttpConnectionHandler.java [408:450]
public void readSetting(int id, int value) {
httpSettingsFrame.setValue(id, value);
switch (id) {
case HttpSettingsFrame.SETTINGS_HEADER_TABLE_SIZE:
// Ignore 'negative' values -- they are too large for java
if (value >= 0) {
changeEncoderHeaderTableSize = true;
lastHeaderTableSize = value;
if (lastHeaderTableSize < minHeaderTableSize) {
minHeaderTableSize = lastHeaderTableSize;
}
}
break;
case HttpSettingsFrame.SETTINGS_ENABLE_PUSH:
if (value == 0) {
pushEnabled = false;
} else if (value == 1) {
pushEnabled = true;
} else {
issueConnectionError(HttpErrorCode.PROTOCOL_ERROR);
}
break;
case HttpSettingsFrame.SETTINGS_MAX_CONCURRENT_STREAMS:
if (value >= 0) {
remoteConcurrentStreams = value;
}
break;
case HttpSettingsFrame.SETTINGS_INITIAL_WINDOW_SIZE:
if (value >= 0) {
updateInitialSendWindowSize(value);
} else {
issueConnectionError(HttpErrorCode.FLOW_CONTROL_ERROR);
}
break;
case HttpSettingsFrame.SETTINGS_MAX_FRAME_SIZE:
if (value != HttpCodecUtil.HTTP_MAX_LENGTH) {
issueConnectionError(HttpErrorCode.PROTOCOL_ERROR);
}
break;
default:
// Ignore Unknown Settings
}
}