scripts
This commit is contained in:
@@ -0,0 +1,177 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
|
||||
namespace System.Net
|
||||
{
|
||||
// Token: 0x02000264 RID: 612
|
||||
internal class WebConnectionGroup
|
||||
{
|
||||
// Token: 0x06001658 RID: 5720 RVA: 0x0004A200 File Offset: 0x00048400
|
||||
public WebConnectionGroup(ServicePoint sPoint, string name)
|
||||
{
|
||||
this.sPoint = sPoint;
|
||||
this.name = name;
|
||||
this.connections = new ArrayList(1);
|
||||
this.queue = new Queue();
|
||||
}
|
||||
|
||||
// Token: 0x06001659 RID: 5721 RVA: 0x0004A230 File Offset: 0x00048430
|
||||
public void Close()
|
||||
{
|
||||
ArrayList arrayList = this.connections;
|
||||
lock (arrayList)
|
||||
{
|
||||
int count = this.connections.Count;
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
WeakReference weakReference = (WeakReference)this.connections[i];
|
||||
WebConnection webConnection = weakReference.Target as WebConnection;
|
||||
if (webConnection != null)
|
||||
{
|
||||
webConnection.Close(false);
|
||||
}
|
||||
}
|
||||
this.connections.Clear();
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600165A RID: 5722 RVA: 0x0004A2D4 File Offset: 0x000484D4
|
||||
public WebConnection GetConnection(HttpWebRequest request)
|
||||
{
|
||||
WebConnection webConnection = null;
|
||||
ArrayList arrayList = this.connections;
|
||||
lock (arrayList)
|
||||
{
|
||||
int count = this.connections.Count;
|
||||
ArrayList arrayList2 = null;
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
WeakReference weakReference = (WeakReference)this.connections[i];
|
||||
webConnection = weakReference.Target as WebConnection;
|
||||
if (webConnection == null)
|
||||
{
|
||||
if (arrayList2 == null)
|
||||
{
|
||||
arrayList2 = new ArrayList(1);
|
||||
}
|
||||
arrayList2.Add(i);
|
||||
}
|
||||
}
|
||||
if (arrayList2 != null)
|
||||
{
|
||||
for (int j = arrayList2.Count - 1; j >= 0; j--)
|
||||
{
|
||||
this.connections.RemoveAt((int)arrayList2[j]);
|
||||
}
|
||||
}
|
||||
webConnection = this.CreateOrReuseConnection(request);
|
||||
}
|
||||
return webConnection;
|
||||
}
|
||||
|
||||
// Token: 0x0600165B RID: 5723 RVA: 0x0004A3CC File Offset: 0x000485CC
|
||||
private static void PrepareSharingNtlm(WebConnection cnc, HttpWebRequest request)
|
||||
{
|
||||
if (!cnc.NtlmAuthenticated)
|
||||
{
|
||||
return;
|
||||
}
|
||||
bool flag = false;
|
||||
NetworkCredential ntlmCredential = cnc.NtlmCredential;
|
||||
NetworkCredential credential = request.Credentials.GetCredential(request.RequestUri, "NTLM");
|
||||
if (ntlmCredential.Domain != credential.Domain || ntlmCredential.UserName != credential.UserName || ntlmCredential.Password != credential.Password)
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
if (!flag)
|
||||
{
|
||||
bool unsafeAuthenticatedConnectionSharing = request.UnsafeAuthenticatedConnectionSharing;
|
||||
bool unsafeAuthenticatedConnectionSharing2 = cnc.UnsafeAuthenticatedConnectionSharing;
|
||||
flag = !unsafeAuthenticatedConnectionSharing || unsafeAuthenticatedConnectionSharing != unsafeAuthenticatedConnectionSharing2;
|
||||
}
|
||||
if (flag)
|
||||
{
|
||||
cnc.Close(false);
|
||||
cnc.ResetNtlm();
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600165C RID: 5724 RVA: 0x0004A484 File Offset: 0x00048684
|
||||
private WebConnection CreateOrReuseConnection(HttpWebRequest request)
|
||||
{
|
||||
int num = this.connections.Count;
|
||||
WebConnection webConnection;
|
||||
for (int i = 0; i < num; i++)
|
||||
{
|
||||
WeakReference weakReference = this.connections[i] as WeakReference;
|
||||
webConnection = weakReference.Target as WebConnection;
|
||||
if (webConnection == null)
|
||||
{
|
||||
this.connections.RemoveAt(i);
|
||||
num--;
|
||||
i--;
|
||||
}
|
||||
else if (!webConnection.Busy)
|
||||
{
|
||||
WebConnectionGroup.PrepareSharingNtlm(webConnection, request);
|
||||
return webConnection;
|
||||
}
|
||||
}
|
||||
if (this.sPoint.ConnectionLimit > num)
|
||||
{
|
||||
webConnection = new WebConnection(this, this.sPoint);
|
||||
this.connections.Add(new WeakReference(webConnection));
|
||||
return webConnection;
|
||||
}
|
||||
if (this.rnd == null)
|
||||
{
|
||||
this.rnd = new Random();
|
||||
}
|
||||
int num2 = ((num <= 1) ? 0 : this.rnd.Next(0, num - 1));
|
||||
WeakReference weakReference2 = (WeakReference)this.connections[num2];
|
||||
webConnection = weakReference2.Target as WebConnection;
|
||||
if (webConnection == null)
|
||||
{
|
||||
webConnection = new WebConnection(this, this.sPoint);
|
||||
this.connections.RemoveAt(num2);
|
||||
this.connections.Add(new WeakReference(webConnection));
|
||||
}
|
||||
return webConnection;
|
||||
}
|
||||
|
||||
// Token: 0x1700072C RID: 1836
|
||||
// (get) Token: 0x0600165D RID: 5725 RVA: 0x0004A5C0 File Offset: 0x000487C0
|
||||
public string Name
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.name;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700072D RID: 1837
|
||||
// (get) Token: 0x0600165E RID: 5726 RVA: 0x0004A5C8 File Offset: 0x000487C8
|
||||
internal Queue Queue
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.queue;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x04001236 RID: 4662
|
||||
private ServicePoint sPoint;
|
||||
|
||||
// Token: 0x04001237 RID: 4663
|
||||
private string name;
|
||||
|
||||
// Token: 0x04001238 RID: 4664
|
||||
private ArrayList connections;
|
||||
|
||||
// Token: 0x04001239 RID: 4665
|
||||
private Random rnd;
|
||||
|
||||
// Token: 0x0400123A RID: 4666
|
||||
private Queue queue;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user