Author: gonzalo
Date: 2005-04-19 22:13:49 -0400 (Tue, 19 Apr 2005)
New Revision: 43306
Modified:
trunk/mcs/class/System.Web/System.Web/ChangeLog
trunk/mcs/class/System.Web/System.Web/HttpRequest.cs
trunk/mcs/class/System.Web/System.Web/ServerVariablesCollection.cs
Log:
2005-04-19 Gonzalo Paniagua Javier <[EMAIL PROTECTED]>
* ServerVariablesCollection.cs: shuffled variables, added missing ones
and call a method in HttpRequest to set the HTTP_ variables.
* HttpRequest.cs: new method to add HTTP_ variables to a collection.
Modified: trunk/mcs/class/System.Web/System.Web/ChangeLog
===================================================================
--- trunk/mcs/class/System.Web/System.Web/ChangeLog 2005-04-20 02:11:05 UTC
(rev 43305)
+++ trunk/mcs/class/System.Web/System.Web/ChangeLog 2005-04-20 02:13:49 UTC
(rev 43306)
@@ -1,5 +1,12 @@
2005-04-19 Gonzalo Paniagua Javier <[EMAIL PROTECTED]>
+ * ServerVariablesCollection.cs: shuffled variables, added missing ones
+ and call a method in HttpRequest to set the HTTP_ variables.
+
+ * HttpRequest.cs: new method to add HTTP_ variables to a collection.
+
+2005-04-19 Gonzalo Paniagua Javier <[EMAIL PROTECTED]>
+
* HttpRequest.cs: GetAllHeaders was returning the value twice instead
of 'name: value'. When HTTP_ is requested on the output, don't include
unknown headers.
Modified: trunk/mcs/class/System.Web/System.Web/HttpRequest.cs
===================================================================
--- trunk/mcs/class/System.Web/System.Web/HttpRequest.cs 2005-04-20
02:11:05 UTC (rev 43305)
+++ trunk/mcs/class/System.Web/System.Web/HttpRequest.cs 2005-04-20
02:13:49 UTC (rev 43306)
@@ -121,8 +121,33 @@
_iTotalBytes = -1;
}
- static private string MakeServerVariableFromHeader(string
header) {
- return "HTTP_" + header.ToUpper().Replace("-", "_");
+ internal void AddHeaderVariables (ServerVariablesCollection
coll)
+ {
+ if (null == _WorkerRequest)
+ return;
+
+ string hname;
+ string hvalue;
+
+ // Add all known headers
+ for (int i = 0; i <
HttpWorkerRequest.RequestHeaderMaximum; i++) {
+ hvalue = _WorkerRequest.GetKnownRequestHeader
(i);
+ if (null != hvalue && hvalue.Length > 0) {
+ hname =
HttpWorkerRequest.GetKnownRequestHeaderName (i);
+ if (null != hname && hname.Length > 0)
+ coll.Add ("HTTP_" +
hname.ToUpper ().Replace ('-', '_'), hvalue);
+ }
+ }
+
+ // Get all other headers
+ string [][] unknown =
_WorkerRequest.GetUnknownRequestHeaders ();
+ if (null != unknown) {
+ for (int i = 0; i < unknown.Length; i++) {
+ hname = unknown [i][0];
+ hvalue = unknown [i][1];
+ coll.Add ("HTTP_" + hname.ToUpper
().Replace ('-', '_'), hvalue);
+ }
+ }
}
internal string GetAllHeaders(bool raw) {
@@ -138,7 +163,7 @@
string sHeaderName;
int iCount = 0;
- // Add all know headers
+ // Add all known headers
for (; iCount !=
HttpWorkerRequest.RequestHeaderMaximum; iCount++) {
sHeaderValue =
_WorkerRequest.GetKnownRequestHeader(iCount);
if (null != sHeaderValue && sHeaderValue.Length
> 0) {
@@ -157,14 +182,17 @@
}
}
- if (!raw)
- return oData.ToString ();
-
// Get all other headers
string [][] arrUnknownHeaders =
_WorkerRequest.GetUnknownRequestHeaders();
if (null != arrUnknownHeaders) {
for (iCount = 0; iCount !=
arrUnknownHeaders.Length; iCount++) {
-
oData.Append(arrUnknownHeaders[iCount][0]);
+ string hname =
arrUnknownHeaders[iCount][0];
+ if (raw) {
+ oData.Append (hname);
+ } else {
+ oData.Append ("HTTP_");
+ oData.Append (hname.ToUpper
().Replace ('-', '_'));
+ }
oData.Append(": ");
oData.Append(arrUnknownHeaders[iCount][1]);
oData.Append("\r\n");
Modified: trunk/mcs/class/System.Web/System.Web/ServerVariablesCollection.cs
===================================================================
--- trunk/mcs/class/System.Web/System.Web/ServerVariablesCollection.cs
2005-04-20 02:11:05 UTC (rev 43305)
+++ trunk/mcs/class/System.Web/System.Web/ServerVariablesCollection.cs
2005-04-20 02:13:49 UTC (rev 43306)
@@ -39,7 +39,8 @@
{
private HttpRequest _request;
private bool _loaded = false;
- public ServerVariablesCollection(HttpRequest request):base()
+
+ public ServerVariablesCollection(HttpRequest request)
{
_request = request;
}
@@ -52,7 +53,19 @@
Add("ALL_HTTP", _request.GetAllHeaders(false));
Add("ALL_RAW", _request.GetAllHeaders(true));
Add("APPL_MD_PATH",
_request.WorkerRequest.GetServerVariable("APPL_MD_PATH"));
+ Add("APPL_PHYSICAL_PATH",
_request.WorkerRequest.GetServerVariable("APPL_PHYSICAL_PATH"));
+
+ if (null != _request.Context.User &&
_request.Context.User.Identity.IsAuthenticated) {
+ Add ("AUTH_TYPE",
_request.Context.User.Identity.AuthenticationType);
+ Add ("AUTH_USER",
_request.Context.User.Identity.Name);
+ } else {
+ Add ("AUTH_TYPE", "");
+ Add ("AUTH_USER", "");
+ }
+
Add("AUTH_PASSWORD",
_request.WorkerRequest.GetServerVariable("AUTH_PASSWORD"));
+ Add ("LOGON_USER",
_request.WorkerRequest.GetServerVariable("LOGON_USER"));
+ Add ("REMOTE_USER",
_request.WorkerRequest.GetServerVariable("REMOTE_USER"));
Add("CERT_COOKIE",
_request.WorkerRequest.GetServerVariable("CERT_COOKIE"));
Add("CERT_FLAGS",
_request.WorkerRequest.GetServerVariable("CERT_FLAGS"));
Add("CERT_ISSUER",
_request.WorkerRequest.GetServerVariable("CERT_ISSUER"));
@@ -62,48 +75,40 @@
Add("CERT_SERVER_ISSUER",
_request.WorkerRequest.GetServerVariable("CERT_SERVER_ISSUER"));
Add("CERT_SERVER_SUBJECT",
_request.WorkerRequest.GetServerVariable("CERT_SERVER_SUBJECT"));
Add("CERT_SUBJECT",
_request.WorkerRequest.GetServerVariable("CERT_SUBJECT"));
+
+ string sTmp =
_request.WorkerRequest.GetKnownRequestHeader(HttpWorkerRequest.HeaderContentLength);
+ if (null != sTmp)
+ Add ("CONTENT_LENGTH", sTmp);
+ Add ("CONTENT_TYPE", _request.ContentType);
+
Add("GATEWAY_INTERFACE",
_request.WorkerRequest.GetServerVariable("GATEWAY_INTERFACE"));
Add("HTTPS",
_request.WorkerRequest.GetServerVariable("HTTPS"));
Add("HTTPS_KEYSIZE",
_request.WorkerRequest.GetServerVariable("HTTPS_KEYSIZE"));
Add("HTTPS_SECRETKEYSIZE",
_request.WorkerRequest.GetServerVariable("HTTPS_SECRETKEYSIZE"));
- Add("CONTENT_TYPE", _request.ContentType);
Add("HTTPS_SERVER_ISSUER",
_request.WorkerRequest.GetServerVariable("HTTPS_SERVER_ISSUER"));
Add("HTTPS_SERVER_SUBJECT",
_request.WorkerRequest.GetServerVariable("HTTPS_SERVER_SUBJECT"));
Add("INSTANCE_ID",
_request.WorkerRequest.GetServerVariable("INSTANCE_ID"));
Add("INSTANCE_META_PATH",
_request.WorkerRequest.GetServerVariable("INSTANCE_META_PATH"));
Add("LOCAL_ADDR",
_request.WorkerRequest.GetLocalAddress());
+ Add("PATH_INFO", _request.PathInfo);
+ Add("PATH_TRANSLATED", _request.PhysicalPath);
+ Add("QUERY_STRING", _request.QueryStringRaw);
Add("REMOTE_ADDR", _request.UserHostAddress);
Add("REMOTE_HOST", _request.UserHostName);
Add("REMOTE_PORT", _request.WorkerRequest.GetRemotePort
().ToString ());
Add("REQUEST_METHOD", _request.HttpMethod);
+ Add("SCRIPT_NAME", _request.FilePath);
Add("SERVER_NAME",
_request.WorkerRequest.GetServerName());
Add("SERVER_PORT",
_request.WorkerRequest.GetLocalPort().ToString());
+ if (_request.WorkerRequest.IsSecure())
+ Add("SERVER_PORT_SECURE", "1");
+ else
+ Add("SERVER_PORT_SECURE", "0");
Add("SERVER_PROTOCOL",
_request.WorkerRequest.GetHttpVersion());
Add("SERVER_SOFTWARE",
_request.WorkerRequest.GetServerVariable("SERVER_SOFTWARE"));
- if (_request.WorkerRequest.IsSecure())
- Add("SERVER_PORT_SECURE", "1");
- else
- Add("SERVER_PORT_SECURE", "0");
+ Add ("URL", _request.Url.AbsolutePath);
- string sTmp =
_request.WorkerRequest.GetKnownRequestHeader(HttpWorkerRequest.HeaderContentLength);
- if (null != sTmp)
- Add("CONTENT_LENGTH", sTmp);
- // TODO: Should be dynamic
- if (null != _request.Context.User &&
_request.Context.User.Identity.IsAuthenticated)
- {
- Add("AUTH_TYPE",
_request.Context.User.Identity.AuthenticationType);
- Add("AUTH_USER",
_request.Context.User.Identity.Name);
- }
- else
- {
- Add("AUTH_TYPE", "");
- Add("AUTH_USER", "");
- }
-
- Add("PATH_INFO", _request.PathInfo);
- Add("PATH_TRANSLATED", _request.PhysicalPath);
- Add("QUERY_STRING", _request.QueryStringRaw);
- Add("SCRIPT_NAME", _request.FilePath);
+ _request.AddHeaderVariables (this);
MakeReadOnly();
_loaded = true;
}
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches