Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ ProcessSettingsFrame()

void System.Net.Http.Http2Connection.ProcessSettingsFrame ( FrameHeader frameHeader,
bool initialFrame = false )
inlineprivate

Definition at line 2261 of file Http2Connection.cs.

2262 {
2263 if (frameHeader.StreamId != 0)
2264 {
2266 }
2267 if (frameHeader.AckFlag)
2268 {
2269 if (frameHeader.PayloadLength != 0)
2270 {
2272 }
2274 {
2276 }
2277 _expectingSettingsAck = false;
2279 return;
2280 }
2281 if (frameHeader.PayloadLength % 6 != 0)
2282 {
2284 }
2285 ReadOnlySpan<byte> source = _incomingBuffer.ActiveSpan.Slice(0, frameHeader.PayloadLength);
2286 bool flag = false;
2287 while (source.Length > 0)
2288 {
2290 source = source.Slice(2);
2292 source = source.Slice(4);
2293 switch ((SettingId)num)
2294 {
2295 case SettingId.MaxConcurrentStreams:
2297 flag = true;
2298 break;
2299 case SettingId.InitialWindowSize:
2300 if (num2 > int.MaxValue)
2301 {
2303 }
2305 break;
2306 case SettingId.MaxFrameSize:
2307 if (num2 < 16384 || num2 > 16777215)
2308 {
2310 }
2311 break;
2312 }
2313 }
2314 if (initialFrame && !flag)
2315 {
2316 ChangeMaxConcurrentStreams(2147483647u);
2317 }
2318 _incomingBuffer.Discard(frameHeader.PayloadLength);
2320 }
static uint ReadUInt32BigEndian(ReadOnlySpan< byte > source)
static ushort ReadUInt16BigEndian(ReadOnlySpan< byte > source)
System.Net.ArrayBuffer _incomingBuffer
void ChangeMaxConcurrentStreams(uint newValue)
void ChangeInitialWindowSize(int newSize)
void OnInitialSettingsAckReceived(Http2Connection connection)

References System.Net.Http.Http2Connection._expectingSettingsAck, System.Net.Http.Http2Connection._incomingBuffer, System.Net.Http.Http2Connection._rttEstimator, System.Net.Http.Http2Connection.ChangeInitialWindowSize(), System.Net.Http.Http2Connection.ChangeMaxConcurrentStreams(), System.Net.Http.HttpConnectionBase.LogExceptions(), System.Net.Http.Http2Connection.RttEstimator.OnInitialSettingsAckReceived(), System.Buffers.Binary.BinaryPrimitives.ReadUInt16BigEndian(), System.Buffers.Binary.BinaryPrimitives.ReadUInt32BigEndian(), System.Net.Http.Http2Connection.SendSettingsAckAsync(), System.source, and System.Net.Http.Http2Connection.ThrowProtocolError().

Referenced by System.Net.Http.Http2Connection.ProcessIncomingFramesAsync().