Author: atsushi
Date: 2008-02-15 15:12:59 -0500 (Fri, 15 Feb 2008)
New Revision: 95818

Modified:
   trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/ChangeLog
   
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/HttpRequestContext.cs
Log:
2008-02-15  Atsushi Enomoto  <[EMAIL PROTECTED]>

        * HttpRequestContent.cs : consider HttpResponseMessageProperty.



Modified: 
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/ChangeLog
===================================================================
--- 
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/ChangeLog    
    2008-02-15 20:07:39 UTC (rev 95817)
+++ 
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/ChangeLog    
    2008-02-15 20:12:59 UTC (rev 95818)
@@ -1,5 +1,9 @@
 2008-02-15  Atsushi Enomoto  <[EMAIL PROTECTED]>
 
+       * HttpRequestContent.cs : consider HttpResponseMessageProperty.
+
+2008-02-15  Atsushi Enomoto  <[EMAIL PROTECTED]>
+
        * HttpRequestChannel.cs : pass response ContentType to ReadMessage().
 
 2008-02-15  Atsushi Enomoto  <[EMAIL PROTECTED]>

Modified: 
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/HttpRequestContext.cs
===================================================================
--- 
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/HttpRequestContext.cs
    2008-02-15 20:07:39 UTC (rev 95817)
+++ 
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/HttpRequestContext.cs
    2008-02-15 20:12:59 UTC (rev 95818)
@@ -169,9 +169,26 @@
                        MemoryStream ms = new MemoryStream ();
                        channel.Encoder.WriteMessage (msg, ms);
                        ctx.Response.ContentType = channel.Encoder.ContentType;
-                       ctx.Response.ContentLength64 = ms.Length;
-                       ctx.Response.OutputStream.Write (ms.GetBuffer (), 0, 
(int) ms.Length);
-                       ctx.Response.OutputStream.Flush ();
+
+                       string pname = HttpResponseMessageProperty.Name;
+                       bool suppressEntityBody = false;
+                       if (msg.Properties.ContainsKey (pname)) {
+                               HttpResponseMessageProperty hp = 
(HttpResponseMessageProperty) msg.Properties [pname];
+                               string contentType = hp.Headers 
["Content-Type"];
+                               if (contentType != null)
+                                       ctx.Response.ContentType = contentType;
+                               ctx.Response.Headers.Add (hp.Headers);
+                               if (hp.StatusCode != default (HttpStatusCode))
+                                       ctx.Response.StatusCode = (int) 
hp.StatusCode;
+                               ctx.Response.StatusDescription = 
hp.StatusDescription;
+                               if (hp.SuppressEntityBody)
+                                       suppressEntityBody = true;
+                       }
+                       if (!suppressEntityBody) {
+                               ctx.Response.ContentLength64 = ms.Length;
+                               ctx.Response.OutputStream.Write (ms.GetBuffer 
(), 0, (int) ms.Length);
+                               ctx.Response.OutputStream.Flush ();
+                       }
                }
 
                public override void Close ()

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to