HttpRequest.cs: IsLocal should return true for loopback addresses
[mono.git] / mcs / class / System.Web / System.Web / HeadersCollection.cs
1 using System;
2 using System.Collections.Specialized;
3 using System.Runtime.Serialization;
4
5 namespace System.Web
6 {
7         /// <summary>
8         /// Summary description for HeadersCollection.
9         /// </summary>
10         class HeadersCollection : BaseParamsCollection
11         {
12
13                 public HeadersCollection(HttpRequest request):base(request)
14                 {
15                 }
16
17                 protected override void InsertInfo()
18                 {
19                         HttpWorkerRequest worker_request = _request.WorkerRequest;
20                         if (null != worker_request) 
21                         {
22                                 for (int i = 0; i < HttpWorkerRequest.RequestHeaderMaximum; i++) {
23                                         string hval = worker_request.GetKnownRequestHeader (i);
24
25                                         if (hval == null || hval == "")
26                                                 continue;
27
28                                         Add (HttpWorkerRequest.GetKnownRequestHeaderName (i), hval);
29                                 }
30
31                                 string [] [] unknown = worker_request.GetUnknownRequestHeaders ();
32                                 if (unknown != null && unknown.GetUpperBound (0) != -1) {
33                                         int top = unknown.GetUpperBound (0) + 1;
34
35                                         for (int i = 0; i < top; i++) {
36                                                 // should check if unknown [i] is not null, but MS does not. 
37
38                                                 Add (unknown [i] [0], unknown [i] [1]);
39                                         }
40                                 }
41                                 Protect ();
42                         }
43                 }
44
45                 protected override string InternalGet(string name)
46                 {
47                         int headerIndex = HttpWorkerRequest.GetKnownRequestHeaderIndex(name);
48                         string headerValue = null;
49                         if (headerIndex >= 0)
50                                 headerValue = _request.WorkerRequest.GetKnownRequestHeader(headerIndex);
51                         if (headerValue == null)
52                                 headerValue = _request.WorkerRequest.GetUnknownRequestHeader(name);
53                         return headerValue;                     
54                 }
55         }
56 }