Reset stream position before doing CopyToAsync.
authorMarcos Henrich <marcos.henrich@xamarin.com>
Tue, 23 Sep 2014 08:59:07 +0000 (09:59 +0100)
committerMarcos Henrich <marcos.henrich@xamarin.com>
Tue, 7 Oct 2014 08:53:01 +0000 (09:53 +0100)
CopyToAsync begins copying at the current position.

mcs/class/System/System.Net/WebClient.cs

index 3248b9d62f53c91d0bf90698eb2bbf0fb42f08f9..38415f05c5f7ca3043da0b464e3e8ac754960e29 100644 (file)
@@ -2044,7 +2044,9 @@ namespace System.Net
                                                        Path.GetFileName (fileName), fileCType);
                                                byte [] partHeadersBytes = Encoding.UTF8.GetBytes (partHeaders);
                                                ms.Write (partHeadersBytes, 0, partHeadersBytes.Length);
-                                               await ms.CopyToAsync (reqStream, (int)ms.Position, token).ConfigureAwait (false);
+                                               var msLength = (int)ms.Position;
+                                               ms.Seek (0, SeekOrigin.Begin);
+                                               await ms.CopyToAsync (reqStream, msLength, token).ConfigureAwait (false);
                                        }
                                }
                                int nread;
@@ -2086,7 +2088,9 @@ namespace System.Net
                                                ms.WriteByte ((byte) '-');
                                                ms.WriteByte ((byte) '\r');
                                                ms.WriteByte ((byte) '\n');
-                                               await ms.CopyToAsync (reqStream, (int)ms.Position, token).ConfigureAwait (false);
+                                               var msLength = (int)ms.Position;
+                                               ms.Seek (0, SeekOrigin.Begin);
+                                               await ms.CopyToAsync (reqStream, msLength, token).ConfigureAwait (false);
                                        }
                                }
                                reqStream.Close ();