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

◆ ReturnHttp2Connection()

void System.Net.Http.HttpConnectionPool.ReturnHttp2Connection ( Http2Connection connection,
bool isNewConnection )
inline

Definition at line 1413 of file HttpConnectionPool.cs.

1414 {
1415 if (System.Net.NetEventSource.Log.IsEnabled())
1416 {
1417 connection.Trace($"{"isNewConnection"}={isNewConnection}", "ReturnHttp2Connection");
1418 }
1419 if (!isNewConnection && CheckExpirationOnReturn(connection))
1420 {
1421 lock (SyncObj)
1422 {
1424 }
1425 if (System.Net.NetEventSource.Log.IsEnabled())
1426 {
1427 connection.Trace("Disposing HTTP/2 connection return to pool. Connection lifetime expired.", "ReturnHttp2Connection");
1428 }
1429 connection.Dispose();
1430 return;
1431 }
1432 bool flag = true;
1433 bool flag2 = false;
1434 lock (SyncObj)
1435 {
1436 if (isNewConnection)
1437 {
1439 }
1440 while (!_http2RequestQueue.IsEmpty)
1441 {
1442 if (!connection.TryReserveStream())
1443 {
1444 flag = false;
1445 if (isNewConnection)
1446 {
1447 HttpRequestException ex = new HttpRequestException(System.SR.net_http_http2_connection_not_established);
1449 _http2RequestQueue.TryFailNextRequest(ex);
1450 }
1451 break;
1452 }
1453 isNewConnection = false;
1454 if (!_http2RequestQueue.TryDequeueNextRequest(connection))
1455 {
1456 connection.ReleaseStream();
1457 break;
1458 }
1459 if (System.Net.NetEventSource.Log.IsEnabled())
1460 {
1461 connection.Trace("Dequeued waiting HTTP/2 request.", "ReturnHttp2Connection");
1462 }
1463 }
1465 if (_disposed)
1466 {
1468 flag2 = true;
1469 }
1470 else if (flag)
1471 {
1472 if (_availableHttp2Connections == null)
1473 {
1475 }
1476 _availableHttp2Connections.Add(connection);
1477 if (System.Net.NetEventSource.Log.IsEnabled())
1478 {
1479 connection.Trace("Put HTTP/2 connection in pool.", "ReturnHttp2Connection");
1480 }
1481 return;
1482 }
1483 }
1484 if (flag2)
1485 {
1486 if (System.Net.NetEventSource.Log.IsEnabled())
1487 {
1488 connection.Trace("Disposing HTTP/2 connection returned to pool. Pool was disposed.", "ReturnHttp2Connection");
1489 }
1490 connection.Dispose();
1491 }
1492 else
1493 {
1494 DisableHttp2Connection(connection);
1495 }
1496 }
void Add(TKey key, TValue value)
RequestQueue< Http2Connection > _http2RequestQueue
List< Http2Connection > _availableHttp2Connections
bool CheckExpirationOnReturn(HttpConnectionBase connection)
void DisableHttp2Connection(Http2Connection connection)
static readonly System.Net.NetEventSource Log
static string net_http_http2_connection_not_established
Definition SR.cs:150
Definition SR.cs:7

References System.Net.Http.HttpConnectionPool._associatedHttp2ConnectionCount, System.Net.Http.HttpConnectionPool._availableHttp2Connections, System.Net.Http.HttpConnectionPool._disposed, System.Net.Http.HttpConnectionPool._http2RequestQueue, System.Net.Http.HttpConnectionPool._pendingHttp2Connection, System.Collections.Generic.Dictionary< TKey, TValue >.Add(), System.Net.Http.HttpConnectionPool.CheckExpirationOnReturn(), System.Net.Http.HttpConnectionPool.CheckForHttp2ConnectionInjection(), System.Net.Http.HttpConnectionPool.DisableHttp2Connection(), System.Net.Http.Http2Connection.Dispose(), System.Net.NetEventSource.Log, System.SR.net_http_http2_connection_not_established, System.Net.Http.Http2Connection.ReleaseStream(), System.Runtime.ExceptionServices.ExceptionDispatchInfo.SetCurrentStackTrace(), System.Net.Http.HttpConnectionPool.SyncObj, System.Net.Http.Http2Connection.Trace(), and System.Net.Http.Http2Connection.TryReserveStream().

Referenced by System.Net.Http.HttpConnectionPool.AddHttp2ConnectionAsync(), and System.Net.Http.HttpConnectionPool.DisableHttp2Connection().