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