Support RemoteEndpointMessageProperty.
authorAtsushi Eno <atsushi@ximian.com>
Fri, 3 Jun 2011 10:46:01 +0000 (19:46 +0900)
committerAtsushi Eno <atsushi@ximian.com>
Fri, 3 Jun 2011 10:46:01 +0000 (19:46 +0900)
mcs/class/System.ServiceModel/System.ServiceModel.Channels.Http/HttpContextInfo.cs
mcs/class/System.ServiceModel/System.ServiceModel.Channels.Http/HttpReplyChannel.cs

index 6dad9d9e807e7fd29f566aa7c2ea25d7d1bef6b6..e43f91565a689ccd468cd44b6daf7cc89b3ec382 100644 (file)
@@ -164,6 +164,8 @@ namespace System.ServiceModel.Channels.Http
                public abstract string ContentType { get; }
                public abstract string HttpMethod { get; }
                public abstract Stream InputStream { get; }
+               public abstract string ClientIPAddress { get; }
+               public abstract int ClientPort { get; }
        }
 
        class HttpStandaloneRequestInfo : HttpRequestInfo
@@ -196,6 +198,12 @@ namespace System.ServiceModel.Channels.Http
                public override Stream InputStream {
                        get { return req.InputStream; }
                }
+               public override string ClientIPAddress {
+                       get { return req.RemoteEndPoint.Address.ToString (); }
+               }
+               public override int ClientPort {
+                       get { return req.RemoteEndPoint.Port; }
+               }
        }
 
        class AspNetHttpRequestInfo : HttpRequestInfo
@@ -228,6 +236,12 @@ namespace System.ServiceModel.Channels.Http
                public override Stream InputStream {
                        get { return req.InputStream; }
                }
+               public override string ClientIPAddress {
+                       get { return req.UserHostAddress; }
+               }
+               public override int ClientPort {
+                       get { return -1; } // cannot retrieve
+               }
        }
        
        // Response
index aded4c6b8f748fd29ca1c3e23a9cd30d50961b01..5bc1c4dc3b38c8fedb1b2eefe43514b9f840572e 100644 (file)
@@ -239,6 +239,7 @@ namespace System.ServiceModel.Channels.Http
                                        msg.Headers.Action = action;
                                }
                        }
+                       msg.Properties.Add (RemoteEndpointMessageProperty.Name, new RemoteEndpointMessageProperty (ctxi.Request.ClientIPAddress, ctxi.Request.ClientPort));
 
                        return msg;
                }