[Mono-dev] HttpWebRequest method patch

Gert Driesen gert.driesen at telenet.be
Mon Jan 29 04:48:43 EST 2007


Hi Atushi,

I noticed something similar for FileWebRequest, where methods are handled 
case-insensitive too.

I'd suggest adding unit tests which verify the MS behavior, and modify our 
HttpWebRequest accordingly.

We could then still report it as an issue to MS (using 
connect.microsoft.com), and the unit test would alert us if/when MS changes 
their (broken) behavior (but this is unlikely to happen, as it could break 
existing code).

I'll take care of the unit tests (later), if you want to.

Gert

----- Original Message ----- 
From: "Atsushi Eno" <atsushi at ximian.com>
To: <mono-devel-list at lists.ximian.com>
Sent: Monday, January 29, 2007 12:46 AM
Subject: [Mono-dev] HttpWebRequest method patch


> Hi,
>
> I have a patch for HttpWebRequest.cs which might be problematic.
>
> HttpWebRequest differentiates request/response stream processing
> based on the method (POST/PUT etc.). .NET actually handles things
> like "post" as POST and thus with such methods it uses POST-style
> processing.
>
> The attached patch makes HttpWebRequest to work along that way,
> but to me it looks like HTTP RFC (2616) violation.
>
> (I noticed this issue when trying to get Lingr API .NET wrapper ==
> http://www.legendes.jp/lingr/api.net/ . The source will be fixed
> anyways.)
>
> Atsushi Eno
>


--------------------------------------------------------------------------------


> Index: System.Net/HttpWebRequest.cs
> ===================================================================
> --- System.Net/HttpWebRequest.cs (revision 71778)
> +++ System.Net/HttpWebRequest.cs (working copy)
> @@ -372,7 +372,23 @@
>  if (value == null || value.Trim () == "")
>  throw new ArgumentException ("not a valid method");
>
> - method = value;
> + // LAMESPEC: This class is not really case
> + // sensitive for those methods here, which
> + // would violate RFC 2616 (5.1.1).
> + string upper = value.ToUpperInvariant ();
> + switch (value.ToUpperInvariant ()) {
> + case "GET":
> + case "POST":
> + case "PUT":
> + case "HEAD":
> + case "CONNECT":
> + case "MKCOL":
> + method = upper; // case sensitive
> + break;
> + default:
> + method = value; // case insensitive
> + break;
> + }
>  }
>  }
>
>


--------------------------------------------------------------------------------


> _______________________________________________
> Mono-devel-list mailing list
> Mono-devel-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-devel-list
> 




More information about the Mono-devel-list mailing list