//
//
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
+// Copyright (C) 2005-2010 Novell, Inc (http://www.novell.com)
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
using System.Collections;
using System.Text;
using System.Web.Configuration;
+using System.Web.Util;
-namespace System.Web {
-
- internal abstract class BaseResponseHeader {
+namespace System.Web
+{
+ abstract class BaseResponseHeader
+ {
string headerValue;
public string Value {
get { return headerValue; }
- set { headerValue = EncodeHeader (value); }
+ set {
+ string hname, hvalue;
+ HttpEncoder.Current.HeaderNameValueEncode (null, value, out hname, out hvalue);
+ headerValue = hvalue;
+ }
}
-
+/*
static bool headerCheckingEnabled;
- static BaseResponseHeader () {
-#if NET_2_0
- HttpRuntimeSection section = WebConfigurationManager.GetWebApplicationSection ("system.web/httpRuntime") as HttpRuntimeSection;
-#else
- HttpRuntimeConfig section = HttpContext.GetAppConfig ("system.web/httpRuntime") as HttpRuntimeConfig;
-#endif
+ static BaseResponseHeader ()
+ {
+ HttpRuntimeSection section = HttpRuntime.Section;
headerCheckingEnabled = section == null || section.EnableHeaderChecking;
}
-
+*/
internal BaseResponseHeader (string val)
{
Value = val;
}
-
- string EncodeHeader (string value)
- {
- if (value == null || value.Length == 0)
- return value;
-
- if (headerCheckingEnabled) {
- StringBuilder ret = new StringBuilder ();
- int len = value.Length;
-
- for (int i = 0; i < len; i++) {
- switch (value [i]) {
- case '\r':
- ret.Append ("%0d");
- break;
-
- case '\n':
- ret.Append ("%0a");
- break;
-
- default:
- ret.Append (value [i]);
- break;
- }
- }
-
- return ret.ToString ();
- } else
- return value;
- }
internal abstract void SendContent (HttpWorkerRequest wr);
}
- internal sealed class KnownResponseHeader : BaseResponseHeader {
+ internal sealed class KnownResponseHeader : BaseResponseHeader
+ {
public int ID;
internal KnownResponseHeader (int ID, string val) : base (val)
}
}
- internal class UnknownResponseHeader : BaseResponseHeader {
- public string Name;
+ internal sealed class UnknownResponseHeader : BaseResponseHeader
+ {
+ string headerName;
+
+ public string Name {
+ get { return headerName; }
+ set {
+ string hname, hvalue;
+ HttpEncoder.Current.HeaderNameValueEncode (value, null, out hname, out hvalue);
+ headerName = hname;
+ }
+ }
+
public UnknownResponseHeader (string name, string val) : base (val)
{