You've already forked linux-packaging-mono
Imported Upstream version 4.3.2.467
Former-commit-id: 9c2cb47f45fa221e661ab616387c9cda183f283d
This commit is contained in:
@@ -341,7 +341,11 @@ namespace MonoTests.System.Net {
|
||||
Thread thread = new Thread (ReadToEnd);
|
||||
thread.Start ();
|
||||
if (test_evt.WaitOne (3000, false) == false) {
|
||||
#if MONO_FEATURE_THREAD_ABORT
|
||||
thread.Abort ();
|
||||
#else
|
||||
thread.Interrupt ();
|
||||
#endif
|
||||
test_evt.Close ();
|
||||
Assert.IsTrue (false, "Timed out");
|
||||
}
|
||||
@@ -774,5 +778,23 @@ namespace MonoTests.System.Net {
|
||||
var c = new TcpClient ("localhost", port);
|
||||
h.Stop ();
|
||||
}
|
||||
|
||||
// Test case for bug #31209
|
||||
[Test]
|
||||
public void Test_EmptyLineAtStart ()
|
||||
{
|
||||
var listener = HttpListener2Test.CreateAndStartListener ("http://127.0.0.1:9124/");
|
||||
var ns = HttpListener2Test.CreateNS (9124);
|
||||
|
||||
HttpListener2Test.Send (ns, "\r\nGET / HTTP/1.1\r\nHost: 127.0.0.1\r\n\r\n");
|
||||
|
||||
bool timedout;
|
||||
HttpListener2Test.GetContextWithTimeout (listener, 1000, out timedout);
|
||||
|
||||
Assert.IsFalse (timedout, "timed out");
|
||||
|
||||
ns.Close ();
|
||||
listener.Close ();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,9 +27,11 @@
|
||||
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Net;
|
||||
using System.Net.Sockets;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using NUnit.Framework;
|
||||
using MonoTests.Helpers;
|
||||
|
||||
@@ -476,7 +478,6 @@ namespace MonoTests.System.Net {
|
||||
}
|
||||
|
||||
[Test]
|
||||
[Category ("AndroidNotWorking")] // Fails ("reuse1") when ran as part of the entire BCL test suite. Works when only this fixture is ran
|
||||
public void ConnectionReuse ()
|
||||
{
|
||||
var uri = "http://localhost:" + NetworkHelpers.FindFreePort () + "/";
|
||||
@@ -494,7 +495,11 @@ namespace MonoTests.System.Net {
|
||||
public IPEndPoint CreateListenerRequest (HttpListener listener, string uri)
|
||||
{
|
||||
IPEndPoint ipEndPoint = null;
|
||||
listener.BeginGetContext ((result) => ipEndPoint = ListenerCallback (result), listener);
|
||||
var mre = new ManualResetEventSlim ();
|
||||
listener.BeginGetContext (result => {
|
||||
ipEndPoint = ListenerCallback (result);
|
||||
mre.Set ();
|
||||
}, listener);
|
||||
|
||||
var request = (HttpWebRequest) WebRequest.Create (uri);
|
||||
request.Method = "POST";
|
||||
@@ -509,6 +514,8 @@ namespace MonoTests.System.Net {
|
||||
// Close response so socket can be reused.
|
||||
response.Close ();
|
||||
|
||||
mre.Wait ();
|
||||
|
||||
return ipEndPoint;
|
||||
}
|
||||
|
||||
@@ -526,6 +533,53 @@ namespace MonoTests.System.Net {
|
||||
|
||||
return clientEndPoint;
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void HttpClientIsDisconnectedCheckForWriteException()
|
||||
{
|
||||
string uri = "http://localhost:" + NetworkHelpers.FindFreePort () + "/";
|
||||
|
||||
AutoResetEvent exceptionOccuredEvent = new AutoResetEvent (false);
|
||||
HttpListener listener = new HttpListener {
|
||||
IgnoreWriteExceptions = false
|
||||
};
|
||||
listener.Prefixes.Add (uri);
|
||||
listener.Start ();
|
||||
listener.BeginGetContext (result =>
|
||||
{
|
||||
HttpListenerContext context = listener.EndGetContext (result);
|
||||
context.Response.SendChunked = true;
|
||||
context.Request.InputStream.Close ();
|
||||
|
||||
var bytes = new byte [1024];
|
||||
using(Stream outputStream = context.Response.OutputStream) {
|
||||
try {
|
||||
while (true)
|
||||
outputStream.Write (bytes, 0, bytes.Length);
|
||||
} catch {
|
||||
exceptionOccuredEvent.Set ();
|
||||
}
|
||||
}
|
||||
}, null);
|
||||
|
||||
Task.Factory.StartNew (() =>
|
||||
{
|
||||
var webRequest = (HttpWebRequest)WebRequest.Create (uri);
|
||||
webRequest.Method = "POST";
|
||||
webRequest.KeepAlive = false;
|
||||
Stream requestStream = webRequest.GetRequestStream ();
|
||||
requestStream.WriteByte (1);
|
||||
requestStream.Close ();
|
||||
using (WebResponse response = webRequest.GetResponse ())
|
||||
using (Stream stream = response.GetResponseStream ()) {
|
||||
byte[] clientBytes = new byte [1024];
|
||||
Assert.IsNotNull (stream, "#01");
|
||||
stream.Read (clientBytes, 0, clientBytes.Length);
|
||||
}
|
||||
});
|
||||
|
||||
Assert.IsTrue (exceptionOccuredEvent.WaitOne (15 * 1000), "#02");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1 +1 @@
|
||||
3a7ce31d0c602f28af3549eefc482fcb33d7e65a
|
||||
ea928e50b3028df3f637377e58caab11f8e20610
|
||||
@@ -29,9 +29,7 @@ namespace MonoTests.System.Net
|
||||
IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
|
||||
string url = "http://" + ep.ToString () + "/test/";
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (FullResponseHandler))) {
|
||||
responder.Start ();
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, s => FullResponseHandler (s))) {
|
||||
HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
|
||||
req.Method = "GET";
|
||||
req.Timeout = 2000;
|
||||
@@ -59,9 +57,7 @@ namespace MonoTests.System.Net
|
||||
IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
|
||||
string url = "http://" + ep.ToString () + "/test/";
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (FullResponseHandler))) {
|
||||
responder.Start ();
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, s => FullResponseHandler (s))) {
|
||||
HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
|
||||
req.Method = "GET";
|
||||
req.Timeout = 2000;
|
||||
@@ -80,9 +76,7 @@ namespace MonoTests.System.Net
|
||||
IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
|
||||
string url = "http://" + ep.ToString () + "/test/";
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (FullResponseHandler))) {
|
||||
responder.Start ();
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, s => FullResponseHandler (s))) {
|
||||
HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
|
||||
req.Method = "GET";
|
||||
req.Timeout = 2000;
|
||||
@@ -110,9 +104,7 @@ namespace MonoTests.System.Net
|
||||
IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
|
||||
string url = "http://" + ep.ToString () + "/test/";
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (FullResponseHandler))) {
|
||||
responder.Start ();
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, s => FullResponseHandler (s))) {
|
||||
HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
|
||||
req.Method = "GET";
|
||||
req.Timeout = 2000;
|
||||
@@ -132,9 +124,7 @@ namespace MonoTests.System.Net
|
||||
IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
|
||||
string url = "http://" + ep.ToString () + "/test/";
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (FullResponseHandler))) {
|
||||
responder.Start ();
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, s => FullResponseHandler (s))) {
|
||||
HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
|
||||
req.Method = "GET";
|
||||
req.Timeout = 2000;
|
||||
@@ -162,9 +152,7 @@ namespace MonoTests.System.Net
|
||||
IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
|
||||
string url = "http://" + ep.ToString () + "/test/";
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (FullResponseHandler))) {
|
||||
responder.Start ();
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, s => FullResponseHandler (s))) {
|
||||
HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
|
||||
req.Method = "GET";
|
||||
req.Timeout = 2000;
|
||||
@@ -202,9 +190,7 @@ namespace MonoTests.System.Net
|
||||
IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
|
||||
string url = "http://" + ep.ToString () + "/test/";
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (FullResponseHandler))) {
|
||||
responder.Start ();
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, s => FullResponseHandler (s))) {
|
||||
HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
|
||||
req.Method = "GET";
|
||||
req.Timeout = 2000;
|
||||
@@ -232,9 +218,7 @@ namespace MonoTests.System.Net
|
||||
IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
|
||||
string url = "http://" + ep.ToString () + "/test/";
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (FullResponseHandler))) {
|
||||
responder.Start ();
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, s => FullResponseHandler (s))) {
|
||||
HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
|
||||
req.Method = "GET";
|
||||
req.Timeout = 2000;
|
||||
@@ -262,9 +246,7 @@ namespace MonoTests.System.Net
|
||||
IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
|
||||
string url = "http://" + ep.ToString () + "/test/";
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (FullResponseHandler))) {
|
||||
responder.Start ();
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, s => FullResponseHandler (s))) {
|
||||
HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
|
||||
req.Method = "GET";
|
||||
req.Timeout = 2000;
|
||||
@@ -291,9 +273,7 @@ namespace MonoTests.System.Net
|
||||
IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
|
||||
string url = "http://" + ep.ToString () + "/test/";
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (FullResponseHandler))) {
|
||||
responder.Start ();
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, s => FullResponseHandler (s))) {
|
||||
HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
|
||||
req.Method = "GET";
|
||||
req.Timeout = 2000;
|
||||
@@ -321,9 +301,7 @@ namespace MonoTests.System.Net
|
||||
IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
|
||||
string url = "http://" + ep.ToString () + "/test/";
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (FullResponseHandler))) {
|
||||
responder.Start ();
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, s => FullResponseHandler (s))) {
|
||||
HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
|
||||
req.Method = "GET";
|
||||
req.Timeout = 2000;
|
||||
@@ -351,9 +329,7 @@ namespace MonoTests.System.Net
|
||||
IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
|
||||
string url = "http://" + ep.ToString () + "/test/";
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (FullResponseHandler))) {
|
||||
responder.Start ();
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, s => FullResponseHandler (s))) {
|
||||
HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
|
||||
req.Method = "GET";
|
||||
req.Timeout = 2000;
|
||||
@@ -381,9 +357,7 @@ namespace MonoTests.System.Net
|
||||
IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
|
||||
string url = "http://" + ep.ToString () + "/test/";
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (FullResponseHandler))) {
|
||||
responder.Start ();
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, s => FullResponseHandler (s))) {
|
||||
HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
|
||||
req.Method = "GET";
|
||||
req.Timeout = 2000;
|
||||
@@ -411,9 +385,7 @@ namespace MonoTests.System.Net
|
||||
IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
|
||||
string url = "http://" + ep.ToString () + "/test/";
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (FullResponseHandler))) {
|
||||
responder.Start ();
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, s => FullResponseHandler (s))) {
|
||||
HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
|
||||
req.Method = "GET";
|
||||
req.Timeout = 2000;
|
||||
@@ -441,9 +413,7 @@ namespace MonoTests.System.Net
|
||||
IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
|
||||
string url = "http://" + ep.ToString () + "/test/";
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (FullResponseHandler))) {
|
||||
responder.Start ();
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, s => FullResponseHandler (s))) {
|
||||
HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
|
||||
req.Method = "GET";
|
||||
req.Timeout = 2000;
|
||||
@@ -463,9 +433,7 @@ namespace MonoTests.System.Net
|
||||
IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
|
||||
string url = "http://" + ep.ToString () + "/test/";
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (FullResponseHandler))) {
|
||||
responder.Start ();
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, s => FullResponseHandler (s))) {
|
||||
HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
|
||||
req.Method = "GET";
|
||||
req.Timeout = 2000;
|
||||
@@ -516,9 +484,7 @@ namespace MonoTests.System.Net
|
||||
IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
|
||||
string url = "http://" + ep.ToString () + "/test/";
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (HttpWebResponseTest.FullResponseHandler))) {
|
||||
responder.Start ();
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, s => HttpWebResponseTest.FullResponseHandler (s))) {
|
||||
HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
|
||||
req.Method = "GET";
|
||||
req.Timeout = 2000;
|
||||
@@ -567,9 +533,7 @@ namespace MonoTests.System.Net
|
||||
IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
|
||||
string url = "http://" + ep.ToString () + "/test/";
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (HttpWebResponseTest.FullResponseHandler))) {
|
||||
responder.Start ();
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, s => HttpWebResponseTest.FullResponseHandler (s))) {
|
||||
HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
|
||||
req.Method = "GET";
|
||||
req.Timeout = 2000;
|
||||
@@ -602,9 +566,7 @@ namespace MonoTests.System.Net
|
||||
IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
|
||||
string url = "http://" + ep.ToString () + "/test/";
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (HttpWebResponseTest.FullResponseHandler))) {
|
||||
responder.Start ();
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, s => HttpWebResponseTest.FullResponseHandler (s))) {
|
||||
HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
|
||||
req.Method = "GET";
|
||||
req.Timeout = 2000;
|
||||
@@ -631,9 +593,7 @@ namespace MonoTests.System.Net
|
||||
IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
|
||||
string url = "http://" + ep.ToString () + "/test/";
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (HttpWebResponseTest.FullResponseHandler))) {
|
||||
responder.Start ();
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, s => HttpWebResponseTest.FullResponseHandler (s))) {
|
||||
HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
|
||||
req.Method = "GET";
|
||||
req.Timeout = 2000;
|
||||
@@ -660,9 +620,7 @@ namespace MonoTests.System.Net
|
||||
IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
|
||||
string url = "http://" + ep.ToString () + "/test/";
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (HttpWebResponseTest.FullResponseHandler))) {
|
||||
responder.Start ();
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, s => HttpWebResponseTest.FullResponseHandler (s))) {
|
||||
HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
|
||||
req.Method = "GET";
|
||||
req.Timeout = 2000;
|
||||
@@ -689,9 +647,7 @@ namespace MonoTests.System.Net
|
||||
IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
|
||||
string url = "http://" + ep.ToString () + "/test/";
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (HttpWebResponseTest.FullResponseHandler))) {
|
||||
responder.Start ();
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, s => HttpWebResponseTest.FullResponseHandler (s))) {
|
||||
HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
|
||||
req.Method = "GET";
|
||||
req.Timeout = 2000;
|
||||
@@ -718,9 +674,7 @@ namespace MonoTests.System.Net
|
||||
IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
|
||||
string url = "http://" + ep.ToString () + "/test/";
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (HttpWebResponseTest.FullResponseHandler))) {
|
||||
responder.Start ();
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, s => HttpWebResponseTest.FullResponseHandler (s))) {
|
||||
HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
|
||||
req.Method = "GET";
|
||||
req.Timeout = 2000;
|
||||
@@ -757,9 +711,7 @@ namespace MonoTests.System.Net
|
||||
IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
|
||||
string url = "http://" + ep.ToString () + "/test/";
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (HttpWebResponseTest.FullResponseHandler))) {
|
||||
responder.Start ();
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, s => HttpWebResponseTest.FullResponseHandler (s))) {
|
||||
HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
|
||||
req.Method = "GET";
|
||||
req.Timeout = 2000;
|
||||
@@ -808,9 +760,7 @@ namespace MonoTests.System.Net
|
||||
IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
|
||||
string url = "http://" + ep.ToString () + "/test/";
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (HttpWebResponseTest.FullResponseHandler))) {
|
||||
responder.Start ();
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, s => HttpWebResponseTest.FullResponseHandler (s))) {
|
||||
HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
|
||||
req.Method = "GET";
|
||||
req.Timeout = 2000;
|
||||
@@ -860,9 +810,7 @@ namespace MonoTests.System.Net
|
||||
IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
|
||||
string url = "http://" + ep.ToString () + "/test/";
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (HttpWebResponseTest.FullResponseHandler))) {
|
||||
responder.Start ();
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, s => HttpWebResponseTest.FullResponseHandler (s))) {
|
||||
HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
|
||||
req.Method = "GET";
|
||||
req.Timeout = 2000;
|
||||
@@ -912,9 +860,7 @@ namespace MonoTests.System.Net
|
||||
IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
|
||||
string url = "http://" + ep.ToString () + "/test/";
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (HttpWebResponseTest.FullResponseHandler))) {
|
||||
responder.Start ();
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, s => HttpWebResponseTest.FullResponseHandler (s))) {
|
||||
HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
|
||||
req.Method = "GET";
|
||||
req.Timeout = 2000;
|
||||
@@ -964,9 +910,7 @@ namespace MonoTests.System.Net
|
||||
IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
|
||||
string url = "http://" + ep.ToString () + "/test/";
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (HttpWebResponseTest.FullResponseHandler))) {
|
||||
responder.Start ();
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, s => HttpWebResponseTest.FullResponseHandler (s))) {
|
||||
HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
|
||||
req.Method = "GET";
|
||||
req.Timeout = 2000;
|
||||
@@ -1017,9 +961,7 @@ namespace MonoTests.System.Net
|
||||
IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
|
||||
string url = "http://" + ep.ToString () + "/test/";
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (HttpWebResponseTest.FullResponseHandler))) {
|
||||
responder.Start ();
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, s => HttpWebResponseTest.FullResponseHandler (s))) {
|
||||
HttpWebRequest req;
|
||||
|
||||
req = (HttpWebRequest) WebRequest.Create (url);
|
||||
@@ -1082,9 +1024,7 @@ namespace MonoTests.System.Net
|
||||
IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
|
||||
string url = "http://" + ep.ToString () + "/test/";
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (HttpWebResponseTest.FullResponseHandler))) {
|
||||
responder.Start ();
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, s => HttpWebResponseTest.FullResponseHandler (s))) {
|
||||
HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
|
||||
req.Method = "GET";
|
||||
req.Timeout = 2000;
|
||||
@@ -1111,9 +1051,7 @@ namespace MonoTests.System.Net
|
||||
IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
|
||||
string url = "http://" + ep.ToString () + "/test/";
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (HttpWebResponseTest.FullResponseHandler))) {
|
||||
responder.Start ();
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, s => HttpWebResponseTest.FullResponseHandler (s))) {
|
||||
HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
|
||||
req.Method = "GET";
|
||||
req.Timeout = 2000;
|
||||
@@ -1145,9 +1083,7 @@ namespace MonoTests.System.Net
|
||||
IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
|
||||
string url = "http://" + ep.ToString () + "/test/";
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (HttpWebResponseTest.FullResponseHandler))) {
|
||||
responder.Start ();
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, s => HttpWebResponseTest.FullResponseHandler (s))) {
|
||||
HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
|
||||
req.Method = "GET";
|
||||
req.Timeout = 2000;
|
||||
|
||||
@@ -160,7 +160,6 @@ public class IPAddressTest
|
||||
"20.65535", "20.0.255.255",
|
||||
"0313.027035210", "203.92.58.136", // bug #411920
|
||||
"0313.0134.035210", "203.92.58.136", // too
|
||||
"7848198702", "211.202.2.46", // too
|
||||
"1434328179", "85.126.28.115", // too
|
||||
"3397943208", "202.136.127.168", // too
|
||||
};
|
||||
@@ -186,9 +185,12 @@ public class IPAddressTest
|
||||
"12.",
|
||||
"12.1.2.",
|
||||
"12...",
|
||||
" "
|
||||
" ",
|
||||
"7848198702",
|
||||
};
|
||||
|
||||
static byte [] ipv4MappedIPv6Prefix = new byte [] { 0,0, 0,0, 0,0, 0,0, 0,0, 0xFF,0xFF };
|
||||
|
||||
[Test]
|
||||
public void PublicFields ()
|
||||
{
|
||||
@@ -613,7 +615,6 @@ public class IPAddressTest
|
||||
Assert.IsFalse (IPAddress.Parse ("FE00::1").IsIPv6Multicast, "#3");
|
||||
}
|
||||
|
||||
#if NET_4_0
|
||||
[Test]
|
||||
public void IsIPv6Teredo ()
|
||||
{
|
||||
@@ -640,7 +641,56 @@ public class IPAddressTest
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#if NET_4_5
|
||||
|
||||
[Test]
|
||||
public void MapToIPv6 ()
|
||||
{
|
||||
for (int i = 0; i < ipv4ParseOk.Length / 2; i++) {
|
||||
IPAddress v4 = IPAddress.Parse (ipv4ParseOk [i * 2]);
|
||||
byte [] v4bytes = v4.GetAddressBytes ();
|
||||
IPAddress v6 = v4.MapToIPv6 ();
|
||||
byte [] v6bytes = v6.GetAddressBytes ();
|
||||
IPAddress v4back = v6.MapToIPv4 ();
|
||||
|
||||
Assert.IsTrue (StartsWith (v6bytes, ipv4MappedIPv6Prefix), "MapToIPv6 #" + i + ".1");
|
||||
Assert.IsTrue (v6bytes [12] == v4bytes [0], "MapToIPv6 #" + i + ".2");
|
||||
Assert.IsTrue (v6bytes [13] == v4bytes [1], "MapToIPv6 #" + i + ".3");
|
||||
Assert.IsTrue (v6bytes [14] == v4bytes [2], "MapToIPv6 #" + i + ".4");
|
||||
Assert.IsTrue (v6bytes [15] == v4bytes [3], "MapToIPv6 #" + i + ".5");
|
||||
Assert.IsTrue (v4.Equals (v4back), "MapToIPv4 #" + i);
|
||||
}
|
||||
|
||||
//TODO: Test using MapToIPv4/6 with anything other than IPv4/6 addresses.
|
||||
//Currently it is not possible to do with the IPAddress implementation.
|
||||
}
|
||||
|
||||
static bool StartsWith (byte [] a, byte [] b)
|
||||
{
|
||||
if (a.Length < b.Length)
|
||||
return false;
|
||||
for (int i = 0; i < b.Length; i++)
|
||||
{
|
||||
if (a [i] != b [i])
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
[Test]
|
||||
public void EqualsFromBytes ()
|
||||
{
|
||||
for (int i = 0; i < ipv4ParseOk.Length / 2; i++) {
|
||||
IPAddress ip = IPAddress.Parse (ipv4ParseOk [i * 2]);
|
||||
IPAddress ipFromBytes = new IPAddress (ip.GetAddressBytes ());
|
||||
Assert.IsTrue (ip.Equals (ipFromBytes), "EqualsFromBytes #" + i);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ using System;
|
||||
using System.Collections;
|
||||
using System.IO;
|
||||
using System.Net;
|
||||
using System.Reflection;
|
||||
using System.Threading;
|
||||
|
||||
namespace MonoTests.System.Net
|
||||
@@ -205,6 +206,36 @@ public class ServicePointTest
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
[Test]
|
||||
public void DnsRefreshTimeout ()
|
||||
{
|
||||
const int dnsRefreshTimeout = 2000;
|
||||
|
||||
ServicePoint sp;
|
||||
IPHostEntry host0, host1, host2;
|
||||
Uri uri;
|
||||
PropertyInfo hostEntryProperty;
|
||||
|
||||
ServicePointManager.DnsRefreshTimeout = dnsRefreshTimeout;
|
||||
|
||||
uri = new Uri ("http://www.google.com/");
|
||||
sp = ServicePointManager.FindServicePoint (uri);
|
||||
|
||||
hostEntryProperty = typeof (ServicePoint).GetProperty ("HostEntry", BindingFlags.NonPublic | BindingFlags.Instance);
|
||||
|
||||
host0 = hostEntryProperty.GetValue (sp, null) as IPHostEntry;
|
||||
host1 = hostEntryProperty.GetValue (sp, null) as IPHostEntry;
|
||||
|
||||
Assert.AreSame (host0, host1, "HostEntry should result in the same IPHostEntry object.");
|
||||
|
||||
Thread.Sleep (dnsRefreshTimeout * 2);
|
||||
host2 = hostEntryProperty.GetValue (sp, null) as IPHostEntry;
|
||||
|
||||
Assert.AreNotSame(host0, host2, "HostEntry should result in a new IPHostEntry " +
|
||||
"object when DnsRefreshTimeout is reached.");
|
||||
}
|
||||
|
||||
// Debug code not used now, but could be useful later
|
||||
/*
|
||||
private void WriteServicePoint (string label, ServicePoint sp)
|
||||
|
||||
@@ -1,138 +0,0 @@
|
||||
//
|
||||
// SocketResponder.cs - Utility class for tests that require a listener
|
||||
//
|
||||
// Author:
|
||||
// Gert Driesen (drieseng@users.sourceforge.net)
|
||||
//
|
||||
// Copyright (C) 2007 Gert Driesen
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining
|
||||
// a copy of this software and associated documentation files (the
|
||||
// "Software"), to deal in the Software without restriction, including
|
||||
// without limitation the rights to use, copy, modify, merge, publish,
|
||||
// distribute, sublicense, and/or sell copies of the Software, and to
|
||||
// permit persons to whom the Software is furnished to do so, subject to
|
||||
// the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be
|
||||
// included in all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Net;
|
||||
using System.Net.Sockets;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
|
||||
namespace MonoTests.System.Net
|
||||
{
|
||||
public delegate byte [] SocketRequestHandler (Socket socket);
|
||||
|
||||
public class SocketResponder : IDisposable
|
||||
{
|
||||
private TcpListener tcpListener;
|
||||
private readonly IPEndPoint _localEndPoint;
|
||||
private Thread listenThread;
|
||||
private SocketRequestHandler _requestHandler;
|
||||
private bool _stopped = true;
|
||||
private readonly object _syncRoot = new object ();
|
||||
|
||||
private const int SOCKET_CLOSED = 10004;
|
||||
private const int SOCKET_INVALID_ARGS = 10022;
|
||||
|
||||
public SocketResponder (IPEndPoint localEP, SocketRequestHandler requestHandler)
|
||||
{
|
||||
_localEndPoint = localEP;
|
||||
_requestHandler = requestHandler;
|
||||
}
|
||||
|
||||
public IPEndPoint LocalEndPoint
|
||||
{
|
||||
get { return _localEndPoint; }
|
||||
}
|
||||
|
||||
public void Dispose ()
|
||||
{
|
||||
Stop ();
|
||||
}
|
||||
|
||||
public bool IsStopped
|
||||
{
|
||||
get
|
||||
{
|
||||
lock (_syncRoot) {
|
||||
return _stopped;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void Start ()
|
||||
{
|
||||
lock (_syncRoot) {
|
||||
if (!_stopped)
|
||||
return;
|
||||
_stopped = false;
|
||||
tcpListener = new TcpListener (LocalEndPoint);
|
||||
tcpListener.Start ();
|
||||
listenThread = new Thread (new ThreadStart (Listen));
|
||||
listenThread.Start ();
|
||||
}
|
||||
}
|
||||
|
||||
public void Stop ()
|
||||
{
|
||||
lock (_syncRoot) {
|
||||
if (_stopped)
|
||||
return;
|
||||
_stopped = true;
|
||||
if (tcpListener != null) {
|
||||
tcpListener.Stop ();
|
||||
tcpListener = null;
|
||||
Thread.Sleep (50);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void Listen ()
|
||||
{
|
||||
while (!_stopped) {
|
||||
Socket socket = null;
|
||||
try {
|
||||
socket = tcpListener.AcceptSocket ();
|
||||
socket.Send (_requestHandler (socket));
|
||||
try {
|
||||
socket.Shutdown (SocketShutdown.Receive);
|
||||
socket.Shutdown (SocketShutdown.Send);
|
||||
} catch {
|
||||
}
|
||||
} catch (SocketException ex) {
|
||||
// ignore interruption of blocking call
|
||||
if (ex.ErrorCode != SOCKET_CLOSED && ex.ErrorCode != SOCKET_INVALID_ARGS)
|
||||
throw;
|
||||
#if MOBILE
|
||||
} catch (InvalidOperationException ex) {
|
||||
// This breaks some tests running on Android. The problem is that the stack trace
|
||||
// doesn't point to where the exception is actually thrown from but the entire process
|
||||
// is aborted because of unhandled exception.
|
||||
Console.WriteLine ("SocketResponder.Listen failed:");
|
||||
Console.WriteLine (ex);
|
||||
#endif
|
||||
} finally {
|
||||
Thread.Sleep (500);
|
||||
if (socket != null)
|
||||
socket.Close ();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1423,9 +1423,7 @@ namespace MonoTests.System.Net
|
||||
IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint ();
|
||||
string url = "http://" + ep.ToString () + "/test/";
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (EchoRequestHandler))) {
|
||||
responder.Start ();
|
||||
|
||||
using (SocketResponder responder = new SocketResponder (ep, s => EchoRequestHandler (s))) {
|
||||
WebClient wc = new WebClient ();
|
||||
wc.Encoding = Encoding.ASCII;
|
||||
|
||||
@@ -1875,16 +1873,13 @@ namespace MonoTests.System.Net
|
||||
}
|
||||
#endif
|
||||
|
||||
#if NET_4_0
|
||||
public void UploadAsyncCancelEventTest (int port, Action<WebClient, Uri, EventWaitHandle> uploadAction)
|
||||
{
|
||||
var ep = NetworkHelpers.LocalEphemeralEndPoint ();
|
||||
string url = "http://" + ep.ToString() + "/test/";
|
||||
|
||||
using (var responder = new SocketResponder (ep, EchoRequestHandler))
|
||||
using (var responder = new SocketResponder (ep, s => EchoRequestHandler (s)))
|
||||
{
|
||||
responder.Start ();
|
||||
|
||||
var webClient = new WebClient ();
|
||||
|
||||
var cancellationTokenSource = new CancellationTokenSource ();
|
||||
@@ -1899,6 +1894,5 @@ namespace MonoTests.System.Net
|
||||
Assert.IsTrue (cancelEvent.WaitOne (1000));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@@ -203,6 +203,15 @@ namespace MonoTests.System.Net
|
||||
Assert.AreEqual (3, w.GetValues ("Accept").Length, "#17");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetValuesForMultipleHeaderManyLines ()
|
||||
{
|
||||
WebHeaderCollection w = new WebHeaderCollection ();
|
||||
w.Add ("Pragma", "H1, H2");
|
||||
w.Add ("Pragma", "H3");
|
||||
Assert.AreEqual (3, w.GetValues ("Pragma").Length, "#1");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Indexers ()
|
||||
{
|
||||
@@ -373,10 +382,8 @@ namespace MonoTests.System.Net
|
||||
0x49, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2c, 0x20, 0x56, 0x65,
|
||||
#if MOBILE
|
||||
0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3d, 0x32, 0x2e, 0x30, 0x2e, 0x35,
|
||||
#elif NET_4_0
|
||||
0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3d, 0x34, 0x2e, 0x30, 0x2e, 0x30,
|
||||
#else
|
||||
0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3d, 0x32, 0x2e, 0x30, 0x2e, 0x30,
|
||||
0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3d, 0x34, 0x2e, 0x30, 0x2e, 0x30,
|
||||
#endif
|
||||
0x2e, 0x30, 0x2c, 0x20, 0x43, 0x75, 0x6c, 0x74, 0x75, 0x72, 0x65,
|
||||
0x3d, 0x6e, 0x65, 0x75, 0x74, 0x72, 0x61, 0x6c, 0x2c, 0x20, 0x50,
|
||||
|
||||
@@ -45,7 +45,6 @@ namespace MonoTests.System.Net {
|
||||
[Test]
|
||||
public void Serialization ()
|
||||
{
|
||||
#if NET_4_0
|
||||
string result1 = "<IPermission class=\"System.Net.WebPermission, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\"\n" +
|
||||
"version=\"1\">\n" +
|
||||
"<ConnectAccess>\n" +
|
||||
@@ -59,21 +58,6 @@ namespace MonoTests.System.Net {
|
||||
"<URI uri=\"Hello\"/>\n" +
|
||||
"</AcceptAccess>\n" +
|
||||
"</IPermission>\n";
|
||||
#else
|
||||
string result1 = "<IPermission class=\"System.Net.WebPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\"\n" +
|
||||
"version=\"1\">\n" +
|
||||
"<ConnectAccess>\n" +
|
||||
"<URI uri=\"Hello\"/>\n" +
|
||||
"</ConnectAccess>\n" +
|
||||
"</IPermission>\n";
|
||||
|
||||
string result2 = "<IPermission class=\"System.Net.WebPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\"\n" +
|
||||
"version=\"1\">\n" +
|
||||
"<AcceptAccess>\n" +
|
||||
"<URI uri=\"Hello\"/>\n" +
|
||||
"</AcceptAccess>\n" +
|
||||
"</IPermission>\n";
|
||||
#endif
|
||||
WebPermission pp = new WebPermission (NetworkAccess.Connect, "Hello");
|
||||
Assert.AreEqual (result1, pp.ToXml ().ToString ().Replace ("\r", ""));
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
|
||||
#if NET_4_0 && !MOBILE
|
||||
#if !MOBILE
|
||||
|
||||
using System;
|
||||
using System.Text;
|
||||
|
||||
Reference in New Issue
Block a user