https://bugzilla.novell.com/show_bug.cgi?id=688353
https://bugzilla.novell.com/show_bug.cgi?id=688353#c0 Summary: HttpListener returns HTTP 400 when wildcard is used for host name and path exists Classification: Mono Product: Mono: Class Libraries Version: unspecified Platform: Other OS/Version: Other Status: NEW Severity: Normal Priority: P5 - None Component: System AssignedTo: mono-bugs@lists.ximian.com ReportedBy: aenom...@novell.com QAContact: mono-bugs@lists.ximian.com Blocks: 687580 Found By: --- Blocker: --- The following HttpListener use case demonstrates that an HttpListener that is given as a prefix that is a wildcard host name, suffixed with a subpath (http://*:8080/foo). HTTP request to the server results in 400 (Bad Request). Wildcard prefix with path does not result in failure, but this example is reproducible. ---- server ---- using System; using System.IO; using System.Net; using System.Threading; using System.Xml; using System.ServiceModel; using System.ServiceModel.Channels; using System.ServiceModel.Description; public class Test { public static void Main () { for (int i = 0; i < 2; i++) { var l = new HttpListener (); l.Prefixes.Add ("http://*:8080/" + (i == 0 ? "foo/" : "bar/")); l.Start (); var ctx = l.GetContext (); using (var sr = new StreamReader (ctx.Request.InputStream)) Console.WriteLine (sr.ReadToEnd ()); ctx.Response.Headers ["SOAPAction"] = "urn:foo"; ctx.Response.KeepAlive = false; ctx.Response.ContentType = "text/xml; charset=utf-8"; ctx.Response.ContentLength64 = 86; using (var tw = new StreamWriter (ctx.Response.OutputStream)) tw.Write ("<s:Envelope xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'><s:Body/></s:Envelope>"); ctx.Response.Close (); l.Close (); Thread.Sleep (1000); // This sleep is required (even on .NET) to give some delay for something. } } } ---- client ---- using System; using System.IO; using System.Net; using System.ServiceModel; using System.ServiceModel.Channels; public class Test { public static void Main () { for (int i = 0; i < 2; i++) { var hr = (HttpWebRequest) WebRequest.Create (new Uri ("http://localhost:8080/" + (i == 0 ? "foo" : "bar"))); hr.Method = "POST"; hr.KeepAlive = false; hr.ContentType = "text/xml; charset=utf-8"; hr.Headers ["SOAPAction"] = "\"urn:foo\""; var rs = new StreamWriter (hr.GetRequestStream ()); rs.WriteLine (@"<s:Envelope xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'> <s:Header> </s:Header> <s:Body /> </s:Envelope>"); rs.Close (); var rr = new StreamReader (hr.GetResponse ().GetResponseStream ()); Console.WriteLine (rr.ReadToEnd ()); rr.Close (); } } } On .NET, two requests and replies are processed as expected. On Mono, first request fails. Some notes: - I (again) tried it on Windows, so it may work fine on other platforms. - The repro kind of replicates WCF BasicHttpBinding; there's couple of extraneous code I know. - Actually the loop (i<2) doesn't matter. It fails at the first request. - I set a blocker for bug #687580. That bug could be fixed by switching #if false to #if true in System.ServiceModel.Channels.Http/HttpListenerManager.cs line 113. -- Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the QA contact for the bug. You are the assignee for the bug. _______________________________________________ mono-bugs maillist - mono-bugs@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-bugs