Empty XmlReader message caused failure on buffereed copy.
authorAtsushi Eno <atsushi@ximian.com>
Mon, 18 Apr 2011 08:20:22 +0000 (17:20 +0900)
committerAtsushi Eno <atsushi@ximian.com>
Mon, 18 Apr 2011 08:20:22 +0000 (17:20 +0900)
mcs/class/System.ServiceModel/System.ServiceModel.Channels/MessageImpl.cs
mcs/class/System.ServiceModel/System.ServiceModel.Channels/XmlReaderBodyWriter.cs

index b99365a3b550ae4e8a98a54fa05d82be4193157f..e3faf3e7db89f648c931c49c4434d21840aa9836 100644 (file)
@@ -106,7 +106,10 @@ namespace System.ServiceModel.Channels
                        ReadBodyStart ();
                        var headers = new MessageHeaders (Headers);
                        var props = new MessageProperties (Properties);
-                       return new DefaultMessageBuffer (maxBufferSize, headers, props, new XmlReaderBodyWriter (reader), IsFault, attributes);
+                       if (IsEmpty)
+                               return new DefaultMessageBuffer (headers, props, attributes);
+                       else
+                               return new DefaultMessageBuffer (maxBufferSize, headers, props, new XmlReaderBodyWriter (reader), IsFault, attributes);
                }
 
                protected override string OnGetBodyAttribute (
index 81ad6dd6dc8507a3526c70ed91491718a9c7d060..f619cda64d1fd24388649fd80b0e668496bb4f44 100644 (file)
@@ -58,6 +58,8 @@ namespace System.ServiceModel.Channels
                        : base (false)
                {
                        reader.MoveToContent ();
+                       if (reader.NodeType != XmlNodeType.Element)
+                               throw new InvalidOperationException ("Argument XmlReader is expected to be positioned at element");
                        this.reader = reader;
                }