Jonathan Pryor [Thu, 2 Sep 2010 18:34:39 +0000 (14:34 -0400)]
[mdoc-x-msitomsx] Additional <token/> replacement values.
Jonathan Pryor [Thu, 2 Sep 2010 18:32:10 +0000 (14:32 -0400)]
[mdoc-x-msitomsx] Support <embeddedLabel/>, additional <token/> values.
Jonathan Pryor [Thu, 2 Sep 2010 18:18:52 +0000 (14:18 -0400)]
[mdoc-x-msitomsx] Convert <notesForInheritors/> elements into <block/>s.
Jonathan Pryor [Thu, 2 Sep 2010 18:07:56 +0000 (14:07 -0400)]
[mdoc-x-msitomsx] Improve <example/> generation so it validates.
We were getting a <description/> element which should be skipped.
Jonathan Pryor [Thu, 2 Sep 2010 18:00:42 +0000 (14:00 -0400)]
Place ignored elements together for consistency.
Jonathan Pryor [Thu, 2 Sep 2010 17:59:25 +0000 (13:59 -0400)]
[mdoc-x-msitomsx] Ignore <internalOnly/>.
Jonathan Pryor [Thu, 2 Sep 2010 17:46:24 +0000 (13:46 -0400)]
[mdoc] Generate <threadsafe/> from <threadSafety/>.
We also need to update monodoc-ecma.xsd so that multiple <para/>s are valid
within <threadsafe/>; otherwise, we report validation errors on the
'mdoc x-msitomsx' output.
Jonathan Pryor [Thu, 2 Sep 2010 17:36:46 +0000 (13:36 -0400)]
[mdoc-x-msitomsx] Add support for converting <list/>s.
Jonathan Pryor [Thu, 2 Sep 2010 17:32:19 +0000 (13:32 -0400)]
[mdoc-x-msitomsx] Import <notesForImplementers/> and <notesForCallers/>.
In the original XML, these are sibling elements to <remarks/>, but they need
to be imported as children of <remarks/> as <block/> is the closest matching
element, and <block/> is a child of <remarks/>.
Jonathan Pryor [Thu, 2 Sep 2010 17:16:47 +0000 (13:16 -0400)]
[mdoc-x-msitomsx] Ignore <clsCompliantAlternative/> elements.
Jonathan Pryor [Thu, 2 Sep 2010 17:15:06 +0000 (13:15 -0400)]
[mdoc-x-msitomsx] Replace <token/> with literal text.
Jonathan Pryor [Thu, 2 Sep 2010 17:05:30 +0000 (13:05 -0400)]
[mdoc-x-msitomsx] Mutate <permission/> elements.
Jonathan Pryor [Thu, 2 Sep 2010 17:01:56 +0000 (13:01 -0400)]
[mdoc-x-msitomsx] Generate <block/> from <alert/>.
Jonathan Pryor [Thu, 2 Sep 2010 16:26:50 +0000 (12:26 -0400)]
[mdoc-x-msitomsx] Generate <typeparam/> from <genericParameters/>.
Jonathan Pryor [Thu, 2 Sep 2010 16:23:47 +0000 (12:23 -0400)]
Make sure that Resources/msitomsx.xsl is distributed.
Jonathan Pryor [Thu, 2 Sep 2010 16:18:00 +0000 (12:18 -0400)]
[mdoc-validate] Add support for validating 'csc /doc' XML.
This will help in determining which elements I'm not converting within
'mdoc x-msitomsx'.
Jonathan Pryor [Thu, 2 Sep 2010 16:02:21 +0000 (12:02 -0400)]
[mdoc-x-msitomsx] Ignore <changeHistory/>, <relatedTopics/>.
Jonathan Pryor [Thu, 2 Sep 2010 15:06:21 +0000 (11:06 -0400)]
[mdoc-x-msitomsx] Map <codeInline/> to <c/>, <codeReference/> to <code/>.
Jonathan Pryor [Thu, 2 Sep 2010 14:52:53 +0000 (10:52 -0400)]
[mdoc-x-msitomsx] Generate <seealso/> from <equivalentCodeEntity/>.
Jonathan Pryor [Thu, 2 Sep 2010 14:46:56 +0000 (10:46 -0400)]
[mdoc-x-msitomsx] Add <table/> conversion support.
Jonathan Pryor [Thu, 2 Sep 2010 14:16:31 +0000 (10:16 -0400)]
[mdoc-x-msitomsx] Generate a /doc/assembly/name attribute.
This is so our generated XML files more closely match 'csc /doc' format.
Jonathan Pryor [Thu, 2 Sep 2010 14:10:21 +0000 (10:10 -0400)]
[mdoc-update] Add --library=VALUE option.
This is so that we can share response files between 'mdoc x-msitomsx',
'mdoc update', and 'mdoc update-ecma-xml', thus ensuring that only
the types we care about are imported and processed.
Jonathan Pryor [Thu, 2 Sep 2010 13:48:51 +0000 (09:48 -0400)]
[mdoc-x-msitomsx] Flush --help documentation.
Jonathan Pryor [Thu, 2 Sep 2010 03:12:03 +0000 (23:12 -0400)]
[mdoc] Add "internal" 'mdoc x-msitomsx' command.
The 'mdoc x-msitomsx' command converts a Microsoft internal XML dialect into
Microsoft XML Documentation format (e.g. what 'mdoc export-msxdoc' generates).
The 'mdoc x-msitomsx' command is internal, i.e. 'mdoc help' won't list it,
as this format is completely internal to Microsoft (and likely subject to
change without notice); this command only exists to help facilitate the ECMA
standardization process, converting Microsoft's existing (internal)
documentation into a format usable by the ECMA committee.
Jonathan Pryor [Wed, 1 Sep 2010 19:56:14 +0000 (15:56 -0400)]
[mdoc-update] Refactor out Microsoft XML Documentation import.
Another side effect of having the DocumentationImporter abstraction is that
we're no longer limited to importing from either ECMA XML, Microsoft XML, or
both; we can now import from arbitrarily many Microsoft XML sources.
(Arbitrarily many ECMA XML sources likely won't work, at present, since the
ECMA XML file controls type + member enumeration, but I don't think this will
be needed any time soon...)
Jonathan Pryor [Wed, 1 Sep 2010 18:00:45 +0000 (14:00 -0400)]
[mdoc-update] Refactor out ECMA XML import into EcmaDocumentationImporter.
Victory for less spaghetti code...
Gonzalo Paniagua Javier [Thu, 2 Sep 2010 21:21:37 +0000 (17:21 -0400)]
Return IPv6 addresses
We were not returning IPv6 addresses if there was no IPv6 configured
interface. Now we will return those addresses if ipv6 is enabled by
configuration.
Fixes bug #636517.
Sebastien Pouliot [Thu, 2 Sep 2010 20:16:13 +0000 (16:16 -0400)]
Ensure OnUploadProgressChanged is called on the right thread
* mcs/class/System.Net/System.Net/WebClient_2_1.cs: Use sync_context to
post the call to OnUploadProgressChanged
Rodrigo Kumpera [Wed, 1 Sep 2010 20:13:03 +0000 (17:13 -0300)]
During inlining, verify the method before producing locals.
* method-to-ir.c (inline_method): We verify the inlined method
before variables are created for locals since this can assert.
Some check on locals are only done by the IL verifier so it's
not enough to just check if the header decoded fine.
* mini.c (mini_method_verify): Add parameter telling if we
should fail the compile or not.
* mini.c (mono_compile_is_broken): Pass the method explicitly
as it now can be diferent than cfg->method.
* mini.h: Export mono_compile_is_broken instead of
mini_method_verify.
Fixes #560200
Rodrigo Kumpera [Wed, 1 Sep 2010 20:11:29 +0000 (17:11 -0300)]
Verify locals when checking a method header.
* metadata-verify.c (mono_verifier_verify_method_header): If
the header has a locals token, verify the corresponding row
in the standalonesig table.
Atsushi Eno [Thu, 2 Sep 2010 16:48:27 +0000 (01:48 +0900)]
Repeat UDP message sending, and do not process duplicate messages received. Makes UDP transmit robust.
Sebastien Pouliot [Thu, 2 Sep 2010 15:11:19 +0000 (11:11 -0400)]
Do not set the exception to NotSupportedException for denied headers
* mcs/class/System.Net/System.Net.Policy/ClientAccessPolicy.cs: Do not
throw a NotSupportedException here since it regress some DRT (like 656).
The (hopefully) correct fix (for DRT3001) will be committed inside moon
Jb Evain [Thu, 2 Sep 2010 13:59:58 +0000 (15:59 +0200)]
[Fix] fix regression in Delegate.CreateDelegate
2ec0ab59fe4aecf5507a81846a66de1a658bbfd2 caused a regression in
Create.Delegate where the overload which doesn't take a firstArgument
could be used to create closed over null delegates while this
overload doesn't allow it.
Jb Evain [Thu, 2 Sep 2010 13:58:20 +0000 (15:58 +0200)]
Add a test for the regression to Delegate.CreateDelegate triggered by
2ec0ab59fe4aecf5507a81846a66de1a658bbfd2
Atsushi Eno [Thu, 2 Sep 2010 12:53:09 +0000 (21:53 +0900)]
moonlight build workaround: smcs somehow rejects to compile this code.
Zoltan Varga [Thu, 2 Sep 2010 12:06:11 +0000 (14:06 +0200)]
Add some comments about the current state of the precise stack scanning code.
Jérémie Laval [Thu, 2 Sep 2010 10:11:50 +0000 (11:11 +0100)]
[Plinq] Force strict parallelism in all PLinq unit tests
Jérémie Laval [Thu, 2 Sep 2010 10:11:26 +0000 (11:11 +0100)]
[PLinq] Check ExecutionMode before executing sequentially
Jérémie Laval [Thu, 2 Sep 2010 09:35:08 +0000 (10:35 +0100)]
[PLinq] Add automatic sequential processing of query
Jérémie Laval [Thu, 2 Sep 2010 09:21:25 +0000 (10:21 +0100)]
[PLinq] Add the plumbery for checking source data size when possible and setting ShouldBeSequential appropriately
Jérémie Laval [Thu, 2 Sep 2010 09:20:08 +0000 (10:20 +0100)]
[PLinq] Sanitize QueryOptions to use property everywhere and add ShouldBeSequential option.
Jérémie Laval [Wed, 1 Sep 2010 13:47:18 +0000 (14:47 +0100)]
Revert "[PLinq] Honor WithDegreeOfParallelism if present"
This reverts commit
59260b1df7d7ddfeb38cd616b883755d49e150c2.
The degree of parallelism value was actually already registered somewhere else.
Atsushi Eno [Thu, 2 Sep 2010 09:24:51 +0000 (18:24 +0900)]
Close AnnouncementService in the test cases. Assert that relevant ports become available.
Atsushi Eno [Thu, 2 Sep 2010 03:04:29 +0000 (12:04 +0900)]
Throw EndpointNotFoundException when it cannot connect to the remote server.
Zoltan Varga [Wed, 1 Sep 2010 22:43:20 +0000 (00:43 +0200)]
Enable system aot by default only on x86/amd64 linux.
Gonzalo Paniagua Javier [Wed, 1 Sep 2010 21:56:06 +0000 (17:56 -0400)]
Remove Content-Length header when not needed
If we are redirecting to a GET from a POST, the Content-Length header
might have stale data and it will be sent. Some servers, instead of
ignoring it, keep waiting for the data to be sent (for a GET!).
Fixes bug #636219.
Ankit Jain [Wed, 1 Sep 2010 21:18:42 +0000 (02:48 +0530)]
[xbuild] Update man page to add "/tv:" option.
Add option to specify toolsversion from the command line,
to the man page.
Gonzalo Paniagua Javier [Wed, 1 Sep 2010 20:31:11 +0000 (16:31 -0400)]
Add missing DT format
The datetime format having a numeric timezone after the milliseconds
was missing.
Fixes bug #479061.
Gonzalo Paniagua Javier [Wed, 1 Sep 2010 19:30:31 +0000 (15:30 -0400)]
Avoid sending data in the challenge phase of NTLM
If there's a POST/PUT request that gets a NTLM 401, we save the data
and don't send it again until after the challenge phase. Ie, instead of
sending all the data 3 times, we only send it at most twice.
Gonzalo Paniagua Javier [Wed, 1 Sep 2010 19:06:56 +0000 (15:06 -0400)]
Use the request itself as the key for the cache.
We were usign teh URL, but that might not be unique among several
requests that need to be authenticated using NTLM. This led to
different requests sharing the same authentication session which fails
miserably.
Bug #631315 fixed.
Ankit Jain [Wed, 1 Sep 2010 18:30:53 +0000 (00:00 +0530)]
[xbuild] Unsubscribe events on ConsoleLogger.Shutdown ()
Reported by Lluis Sanchez.
Geoff Norton [Wed, 1 Sep 2010 18:09:38 +0000 (14:09 -0400)]
Fix build of mono-basic on ppc64
OP_BREAK can take up to 40 bytes on ppc64
Atsushi Eno [Wed, 1 Sep 2010 17:22:04 +0000 (02:22 +0900)]
Fill Duration value. Got managed mode use case working.
Atsushi Eno [Wed, 1 Sep 2010 17:21:00 +0000 (02:21 +0900)]
Fix parameter order for TempAsyncResult.
Jb Evain [Wed, 1 Sep 2010 16:27:39 +0000 (18:27 +0200)]
Add NotWorking test for bugs #635349 and #605936
Jonathan Pryor [Wed, 1 Sep 2010 15:05:57 +0000 (11:05 -0400)]
[mdoc-update] Only check for duplicate elements, not duplicate nodes.
The duplicate-element checking algorithm wasn't restricted to just elements;
consequently, an 'invalid token' exception was generated from XPath because we
were trying to call XmlNode.SelectNodes("#text"), and '#' isn't valid. Oops.
Fixes building gendarme from mono-tools.
Jonathan Pryor [Wed, 1 Sep 2010 04:04:41 +0000 (00:04 -0400)]
[mdoc-update] Refactor type+member traversal algorithm.
ECMA wants to import some Microsoft documentation for use in the next version
of the ECMA standard (hence mdoc-update-ecma-xml).
Unfortunately, Microsoft doesn't use the Microsoft XML Documentation format
for their internal class library documentation. They use some other XML
dialect (which looks similar yet different from "msxdoc").
So to make life easier for ECMA, mdoc-update of needs to support yet another
import format. Yay?
Unfortunately:
- The current import logic uses no abstractions; we have "separate" code
paths when importing msxdoc's vs. ECMA docs. We need a sane abstraction
if we're going to add a third import format.
- Additionally, the ECMA doc import logic is a mass of spaghetti code, as
ECMA import also controls type+member enumeration order.
Start trying to bring some sanity to this by adding a DocumentationEnumerator
abstraction so that some of the XmlReader maintenance for importing/processing
ECMA documentation can be split out.
Atsushi Eno [Wed, 1 Sep 2010 15:03:24 +0000 (00:03 +0900)]
Couple of fixes in FindCriteria and relevant contract types for Find operation.
Atsushi Eno [Wed, 1 Sep 2010 15:01:00 +0000 (00:01 +0900)]
Add another roundtrip case.
Atsushi Eno [Wed, 1 Sep 2010 14:59:50 +0000 (23:59 +0900)]
Use CollectionDataContractAttribute.ItemName for collection item serialization.
Atsushi Eno [Wed, 1 Sep 2010 14:56:57 +0000 (23:56 +0900)]
Allow empty element in ReadElementContent*() e.g. for empty list.
Jb Evain [Wed, 1 Sep 2010 13:58:23 +0000 (15:58 +0200)]
Fix the NET_2_1 build of System.Json
Jb Evain [Wed, 1 Sep 2010 13:28:04 +0000 (15:28 +0200)]
Fix the System.Core build for the monotouch profile
Jb Evain [Wed, 1 Sep 2010 13:27:37 +0000 (15:27 +0200)]
Fix the monotouch build
Jérémie Laval [Wed, 1 Sep 2010 13:26:42 +0000 (14:26 +0100)]
Allow recursive Write + n * Read lock pattern for ReaderWriterLockSlim and add corresponding unit test
Jérémie Laval [Wed, 1 Sep 2010 12:58:58 +0000 (13:58 +0100)]
Check Recursive counts for ReaderWriterLockSlim in unit tests
Jérémie Laval [Wed, 1 Sep 2010 12:56:11 +0000 (13:56 +0100)]
Generalize ThreadLockState to include recursive count informations and update them accordingly in the different Enter/Exit methods
Jérémie Laval [Wed, 1 Sep 2010 11:05:00 +0000 (12:05 +0100)]
[PLinq] Honor WithDegreeOfParallelism if present
Jérémie Laval [Wed, 1 Sep 2010 10:08:03 +0000 (11:08 +0100)]
Change the key of the inner dictionary to an int id instead of the instance itself
It prevents object references to the rwlslim to be kept and thus not GC'ed
Jérémie Laval [Wed, 1 Sep 2010 10:05:59 +0000 (11:05 +0100)]
Split ReaderWriterLockSlim helper classes into their own files
Atsushi Eno [Wed, 1 Sep 2010 09:55:11 +0000 (18:55 +0900)]
Add a bunch of missing configuration members etc. based on corcompare results.
Atsushi Eno [Wed, 1 Sep 2010 09:53:46 +0000 (18:53 +0900)]
Add IdentityElement implementation and some supplemental extension methods for discovery.
Marek Safar [Wed, 1 Sep 2010 09:30:38 +0000 (10:30 +0100)]
Add ctor block to field initializers to avoid member lookup at wrong block
Gonzalo Paniagua Javier [Tue, 31 Aug 2010 23:56:47 +0000 (19:56 -0400)]
Handle WAIT_IO_TIMEOUT in WaitAny call
WaitForMultipleObjectsEx might return WAIT_IO_COMPLETION if an APC is queued.
Fixes bug #549807.
Andrew Jorgensen [Tue, 31 Aug 2010 21:40:47 +0000 (15:40 -0600)]
aot-compiler was not getting included in dist
dist-local: dist-default fixes dist of this dir
Zoltan Varga [Tue, 31 Aug 2010 20:16:13 +0000 (22:16 +0200)]
Reenable system AOT on x86/amd64 which accidently got disabled.
Zoltan Varga [Tue, 31 Aug 2010 19:49:25 +0000 (19:49 +0000)]
Merge branch 'master' of github.com:mono/mono
Zoltan Varga [Tue, 31 Aug 2010 19:48:51 +0000 (19:48 +0000)]
Align structures on the stack to 4/8 bytes on ppc.
Zoltan Varga [Tue, 31 Aug 2010 19:05:18 +0000 (21:05 +0200)]
Really disable AOT on platforms which doesn't support it.
Jonathan Pryor [Tue, 31 Aug 2010 18:25:01 +0000 (14:25 -0400)]
[mdoc-update-ecma-xml] Sort libraries and types.
This should help with any comparison tools as we ensure that libraries and
types are in a consistent order.
Jonathan Pryor [Tue, 31 Aug 2010 18:01:14 +0000 (14:01 -0400)]
Remove unused code.
Jonathan Pryor [Tue, 31 Aug 2010 17:44:43 +0000 (13:44 -0400)]
[mdoc-update-ecma-xml] Do updates in-memory before writing.
Previously, in a (misguided) effort to reduce memory requirements, I loaded
the source document into an XDocument, then wrote it piecemeal to an output
XmlWriter.
- Pro: only one document needed to be kept in memory, and additional
memory was only needed to write replacement //Type nodes.
- Con: since the output document isn't kept in memory, we can't do any
post-processing before writing.
Unfortunately, post-processing is what I want to do: I want to order the
//Type elements by //Type/@Name, which means I need the entire document in
memory _anyway_.
Sorting //Type elements is for the next patch; this just migrates to the "do
everything in-memory" logic.
Jonathan Pryor [Tue, 31 Aug 2010 03:59:48 +0000 (23:59 -0400)]
[mdoc-update-ecma-xml] Generate additional //Type/AssemblyInfo data.
Generate the //Type/AssemblyInfo/AssemblyPublicKey and
//Type/AssemblyInfo/AssemblyCulture elements based on the values stored in
the index.xml file (which is why we updated mdoc-update to store this).
If index.xml doesn't contain the //AssemblyCulture element, input a default
<AssemblyCulture>neutral</AssemblyCulture> element.
Jonathan Pryor [Mon, 30 Aug 2010 23:53:43 +0000 (19:53 -0400)]
[mdoc] Enhance monodoc-ecma.xsd to support XML used by .NET inline docs.
With these changes, we can import the .NET 4.0 reference assembly
documentation and validate the output w/o getting any errors.
Yes, this means we now accept several elements that aren't part of the ECMA
standard, but at least the primary source of information for ECMA will sanely
validate...
Jonathan Pryor [Mon, 30 Aug 2010 21:17:16 +0000 (17:17 -0400)]
[mdoc-update] Support importing //returns & // value for "void" methods.
Screwy docs be screwy, but crashing is worse than importing odd docs.
Jonathan Pryor [Mon, 30 Aug 2010 20:58:14 +0000 (16:58 -0400)]
[mdoc-update] Fix location of //Member/Attributes on properties, events.
The //Member/Attributes element would "move" from after //Member/AssemblyInfo
to the last element within //Member when updating properties and events. This
would result in overly large diff's when no other changes occurred, and
results in 'mdoc validate' stating that the file is invalid.
Jonathan Pryor [Mon, 30 Aug 2010 19:40:15 +0000 (15:40 -0400)]
[mdoc-update] Normalize //returns and //value when importing XML docs.
Some source XML documentation uses //returns when it should use //value, so
normalize these values on import so we don't get both by mistake.
Jonathan Pryor [Mon, 30 Aug 2010 19:31:57 +0000 (15:31 -0400)]
[mdoc-update] Try to avoid importing the same element multiple times.
This way if we import the same documentation file multiple times we won't get
duplicate elements into the XML files.
Jonathan Pryor [Mon, 30 Aug 2010 17:58:43 +0000 (13:58 -0400)]
[mdoc-update] Don't generate //AssemblyCulture if it's neutral.
This prevents a file format change for most use cases, and reduces file size
diffs when updating assemblies.
Jonathan Pryor [Mon, 30 Aug 2010 17:47:44 +0000 (13:47 -0400)]
[mdoc-update] Generate //AssemblyPublicKey && //AssemblyCulture in index.xml.
This is so that `mdoc update-ecma-xml` can use this information when
generating the /Library/Types/Type elements, as //AssemblyPublicKey and
//AssemblyCulture are currently missing from `mdoc update-ecma-xml` output.
Jonathan Pryor [Sun, 29 Aug 2010 02:33:03 +0000 (22:33 -0400)]
[update-ecma-xml] Generate //Type/MemberOfLibrary and //Type/TypeExcluded.
These elements are needed for some ECMA processes.
Jonathan Pryor [Sat, 28 Aug 2010 03:14:27 +0000 (23:14 -0400)]
[update-ecma-xml] Generate the //Type/@FullNameSP attribute if not present.
This is required by the ECMA DTD.
Rodrigo Kumpera [Tue, 31 Aug 2010 18:35:52 +0000 (15:35 -0300)]
Fix AOT under x86.
* method-to-ir.c (emit_write_barrier): If aot-compiling on
an arch with OP_CARD_TABLE_WBARRIER support, fallback to
the IR based cardtable barrier instead of going with the
remset one.
David Stone [Mon, 30 Aug 2010 22:37:07 +0000 (15:37 -0700)]
Add System.ComponentModel.DisplayAttribute
Rodrigo Kumpera [Tue, 31 Aug 2010 17:37:13 +0000 (14:37 -0300)]
Fix corlib self referencing bug.
In mcs/class/corlib/System.Reflection.Emit:
* TypeBuilder.cs (DefineDefaultConstructor): If the resolved
type is either typeof (object) or typeof (ValueType) we backout
to the non resolved type as it might be one of the corlib's
typebuilders.
In mcs/mcs:
* rootcontext.cs (CloseTypes): Only apply the enum hack for
corlib here.
* rootcontext.cs (EmitCode): Do the corlib basic type hack
here before types are emitted. This is required since EmitType
produce type initializers, which derive from ValueType and must
be able to see the TypeBuilder version of it.
Zoltan Varga [Tue, 31 Aug 2010 17:27:20 +0000 (19:27 +0200)]
Disable system aot on darwin.
Zoltan Varga [Tue, 31 Aug 2010 16:40:16 +0000 (18:40 +0200)]
Enable aot-ing of mscorlib+gmcs on all architectures where AOT is supported.
Atsushi Eno [Tue, 31 Aug 2010 17:20:26 +0000 (02:20 +0900)]
implement Find operation in request-reply contract in Discovery Service, using FindRequestContext.
Marek Safar [Tue, 31 Aug 2010 17:16:42 +0000 (18:16 +0100)]
Add support for indirect pointer type constants.
Sebastien Pouliot [Tue, 31 Aug 2010 17:16:21 +0000 (13:16 -0400)]
Multiple fixes for WebClient (from NCL tests)
* mcs/class/System.Net/System.Net/InternalWebRequestStreamWrapper.cs:
Ensure WebClient.WriteStreamClosedCallback is never called more than
once (even if the stream was closed by the caller). Supply the length
of the data that was written to the stream to WebClient.
* mcs/class/System.Net/System.Net/WebClient_2_1.cs: Keep an Uri of
BaseAddress handy since we'll need it later. Ensure OnWriteStreamClosed
is at least called once (inside finally). Emit UploadProgressChanged
(instead of Download*) when uploading.
* mcs/class/System.Net/System.Net/WebRequest_2_1.cs: Change text for
InvalidOperationException when the URI is not absolute (some MS tests
check for, case-sensitive, "URI").