2010-09-23  Sebastien Pouliot  <sebastien@ximian.com>

	* System.Net/WebRequest_2_1.cs: (Create) Find the prefix that is
	the closest match to the specified Uri and use it's associated
	creator. (RegisterPrefix) We cannot register 'http[s]:' even if
	registering 'http[s]' is possible (but does not work as expected)
	as are the (fully) valid 'http[s]:/[/]' values.

2010-09-23  Sebastien Pouliot  <sebastien@ximian.com>

	* System.Net/WebClient_2_1.cs: Throw a NotImplementedException
	from ResponseHeaders if the response does not support them. *
	System.Net/WebResponse_2_1.cs: Make Headers property smart to
	throw a NotImplementedException if SupportsHeaders return false.
	Add a new InternalHeaders property since the response headers are
	needed, internally (e.g. policies), even if not exposed to the
	outside world.

2010-09-02  Sebastien Pouliot  <sebastien@ximian.com>

	* mcs/class/System.Net/System.Net/WebClient_2_1.cs: Use
	sync_context to post the call to OnUploadProgressChanged

2010-08-31  Sebastien Pouliot  <sebastien@ximian.com>

	*
	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").

2010-08-25  Sebastien Pouliot  <sebastien@ximian.com>

	* HttpWebRequest_2_1.cs: Avoid using AllKeys (unneeded
	allocations) * WebClient_2_1.cs: Copy headers to WebRequest (some
	special cases are now considered) then clear them. Expose
	SecurityException (unwrapped) and closely match SL4 exceptions
	(including inner exceptions). * WebHeaderCollection_2_1.cs: Add
	missing validations on header names and values (from original
	WebHeaderCollection.cs + small fix)

2010-07-14  Sebastien Pouliot  <sebastien@ximian.com>

	* WebHeaderCollection_2_1.cs: Fix IEnumerable.GetEnumerator

2010-05-14  Sebastien Pouliot  <sebastien@ximian.com>

	* WebHeaderCollection_2_1.cs: Hide the internal Dictionary and 
	provide methods to use it properly.
	* HttpWebRequest_2_1.cs: Use internal Clear method

2010-04-21  Sebastien Pouliot  <sebastien@ximian.com>

	* HttpWebResponse_2_1.cs: Method, StatusCode and StatusDescription
	property getters are now virtual (instead of abstract) and throw
	NIE in SL4 (final) API.
	* WebRequest_2_1.cs: Added ContentLength (SL4) property to throw
	NIE. Implement (SL4) CreateHttp methods. Rework stack registration
	logic.
	* WebResponse_2_1.cs: default Headers getter throws NIE

2010-04-05  Sebastien Pouliot  <sebastien@ximian.com>

	* InternalWebResponseStreamWrapper.cs: Move back to 
	System.Windows.dll

2010-03-19  Sebastien Pouliot  <sebastien@ximian.com>

	* HttpWebRequest_2_1.cs: AllowWriteStreamBuffering getter/setter
	throws NIE by default (must be overridden). Revert Accept and
	ContentType behavior to SL2 (identical to SL4 but different from
	SL3). 
	* WebClient_2_1.cs: Initialize UseDefaultCredentials to true. Set
	the properties when creating a new WebRequest

2010-03-18  Sebastien Pouliot  <sebastien@ximian.com>

	* HttpWebRequest_2_1.cs: Add SL4 RC AllowWriteStreamBuffering and
	SupportsCookieContainer properties.
	* WebClient_2_1.cs: Add SL4 RC AllowWriteStreamBuffering and 
	UseDefaultCredentials properties.
	* WebHeaderCollection_2_1.cs: Authorization and Proxy-Authorization
	are valid (i.e. usable) headers in SL4 (in both stacks)

2010-03-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* WebRequest_2_1.cs: Added UseDefaultCredentials property.

2010-03-12  Sebastien Pouliot  <sebastien@ximian.com>

	* WebClient_2_1.cs: Directly set 'progress' delegate field
	* WebRequest_2_1.cs: Avoid using reflection (since it was not 
	really needed anyway)

2010-03-03  Andreia Gaita  <avidigal@novell.com>

	* InternalWebRequestStreamWrapper.cs: don't add a newline to the
	request data, whatever uses the data should be the one adding
	newlines if they need it (i.e., moon's ff bridge needs it, the
	curl bridge doesn't)

2010-02-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* WebClient_2_1.cs: Emit DownloadProgressChanged events on the correct
	thread too.

2010-02-23  Sebastien Pouliot  <sebastien@ximian.com>

	* HttpWebRequest_2_1.cs: Accept and ContentType properties do not
	behave like Silverlight 2.0 (not related to browser/client stacks)
	* WebHeaderCollection_2_1.cs: Range is now accepted in SL3 (not
	related to browser/client stacks)
	* WebRequest_2_1.cs: Fix registration to work on domains (new) 
	and scheme (more correctly wrt new unit tests).

2010-02-16  Sebastien Pouliot  <sebastien@ximian.com>

	* WebClient_2_1.cs: Keep a copy of 'userToken' since we need to
	supply it when calling OnDownloadProgressChanged
	* WebRequest_2_1.cs (SetupProgressDelegate): Simplify signature

2010-01-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* WebClient_2_1.cs: Ensure the WriteStreamClosed event is emitted on
	the correct thread (by using the stored SynchronizationContext).

	* InternalWebRequestStreamWrapper.cs: Add a WebClientData field which
	is passed to the WriteStreamClosedCallback.

2010-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* WebClient_2_1.cs: The async events must be invoked on a threadpool
	thread if the async method wasn't executed on the main thread, so save
	the synchronization context when the async method is called, and post
	the event to that synchronization context when done. This is also
	required when the async methods are executed on the main thread, since
	HttpWebRequest callbacks are now always executed on a threadpool thread.

2010-01-25  Sebastien Pouliot  <sebastien@ximian.com>

	* UdpAnySourceMulticastClient.cs: New. Stub for SL4
	* UdpSingleSourceMulticastClient.cs: New. Stub for SL4

2010-01-13  Sebastien Pouliot  <sebastien@ximian.com>

	* HttpWebRequest_2_1.cs: Throw for CookieContainer. It is 
	implemented only in the client http stack (and for a limited
	time in the browser stack too ;-)
	* InternalWebRequestStreamWrapper.cs: Keep the MemoryStream data
	available after closing/disposing (by user) since our own code
	will need it later (e.g. when posting like DRT287)
	* WebHeaderCollection_2_1.cs: Provide an argument to 
	ArgumentException. Found by Gendarme's ArgumentException
	InstantiateArgumentExceptionCorrectlyRule

2010-01-12  Sebastien Pouliot  <sebastien@ximian.com>

	* WebRequest_2_1.cs: Rework registration wrt the two, browser
	and client, stacks offered in SL3. Only global works now.

2010-01-11  Sebastien Pouliot  <sebastien@ximian.com>

	* InternalWebRequestStreamWrapper.cs: New. Moved (and adapted) 
	from Moonlight System.Windows.Browser assembly.
	* InternalWebResponseStreamWrapper.cs: New. Moved (and adapted) 
	from Moonlight System.Windows.Browser assembly.
	* WebClient_2_1.cs: Remove custom delegate declaration (Gendarme's
	AvoidDeclaringCustomDelegatesRule). Remove locking over a variable
	(Gendarme's ReviewLockUsedOnlyForOperationsOnVariablesRule). 
	Avoid potential race with event handlers (Gendarme's 
	ProtectCallsToEventDelegatesRule). Implement OnWriteStreamClosed
	* WebRequest_2_1.cs: Signature change from delegate to 
	Action<long,long,object>. Found using Gendarme's
	AvoidDeclaringCustomDelegatesRule

2009-12-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* WebClient_2_1.cs: When creating the request we need to copy over
	any headers the user set on us. We also need to wrap
	InvalidOperationExceptions in WebExceptions.

2009-12-04  Sebastien Pouliot  <sebastien@ximian.com> 

	* HttpStatusCode_2_1.cs: Remove. SL3 provides all status code 
	since they are used for the client stack
	* WebClient_2_1.cs: Add Credentials property and change
	ResponseHeaders property to public
	* WebRequest_2_1.cs: Add Credentials property

2009-12-04  Sebastien Pouliot  <sebastien@ximian.com>

	* DnsEndPoint_2_1.cs: Moved to System.dll since it's also part
	of .net 4.0

2009-12-04  Sebastien Pouliot  <sebastien@ximian.com> 

	* HttpWebRequest_2_1.cs: Add CookieCollection, need to be 
	implemented in the client stack
	* HttpWebResponse_2_1.cs: CookieContainer is virtual. Add FIXME
	to move (a real) implementation into the client stack
	* WebRequest_2_1.cs: Add Create(string) overload (SL3)

2009-09-24  Sebastien Pouliot  <sebastien@ximian.com> 

	* Dns_2_1.cs: New. Smaller version of Dns.cs that offers just
	enough for DnsEndPoint support

2009-09-24  Sebastien Pouliot  <sebastien@ximian.com>

	* DnsEndPoint_2_1.cs: Remove (now) unneeded method

2009-07-16  Sebastien Pouliot  <sebastien@ximian.com>

	* WebHeaderCollection_2_1.cs: Seal type.

2009-06-17  Sebastien Pouliot  <sebastien@ximian.com>

	* WebClient_2_1.cs: Fix BaseAddress and remove dual base[Address|
	String] variables.

2009-06-05  Sebastien Pouliot  <sebastien@ximian.com>

	* WebClient_2_1.cs: Make sure *CompletedEventArgs gets called 
	even in case an exception occurs before the BeginGetResponse 
	call. Adjust API for OpenReadCompletedEventArgs.

2009-06-04  Sebastien Pouliot  <sebastien@ximian.com>

	* WebClient_2_1.cs: Remove the creation of threads and use the
	async methods provided by WebRequest (and its friends). Use an
	internal object to lock on (not this). Remove comments from the
	original (mono) WebClient since the code has diverged so much.
	Fix DRT#326 (hopefully others too or at least more than it breaks)

2009-06-01  Sebastien Pouliot  <sebastien@ximian.com>

	* HttpWebRequest_2_1.cs: Avoid possible NRE while settings a
	complete collection.
	* WebResponse_2_1.cs: Use StringComparer.OrdinalIgnoreCase on 
	the prefix Dictionary

2009-05-26  Sebastien Pouliot  <sebastien@ximian.com>

	* WebClient_2_1.cs: Add internal WebHeaderCollection. Change
	signature for OpenPolicyReadAsync to take an addtional object
	* WebResponse_2_1.cs: Add internal WebHeaderCollection

2009-05-22  Sebastien Pouliot  <sebastien@ximian.com>

	* WebClient_2_1.cs: Add an internal OpenPolicyReadAsync. Check 
	result in ProcessResponse and throw if not Ok (200).
	* WebRequest_2_1.cs: Add an internal overload to BeginGetResponse
	from where we can handle downloading the policy.

2009-05-14  Sebastien Pouliot  <sebastien@ximian.com>

	* DnsEndPoint_2_1.cs: Add method to return an IPEndPoint from a
	DnsEndPoint that match the requested AddressFamily

2009-05-12  Sebastien Pouliot  <sebastien@ximian.com>

	* WebHeaderCollection_2_1.cs: Headers are case insensitive but we
	must keep them in their original form since AllKeys property will
	report them that way and user code (like DRT#288) can depends on
	this behavior.

2009-05-11  Sebastien Pouliot  <sebastien@ximian.com>

	* WebHeaderCollection_2_1.cs: Headers are removed only in special
	cases and never when the "this" property is used. Call ToLower
	in SetHeader too in order to avoid typos.

2009-05-11  Sebastien Pouliot  <sebastien@ximian.com>

	* HttpWebRequest_2_1.cs: Fix Accept and ContentType properties
	to use, with special care, the Headers property
	* WebHeaderCollection_2_1.cs (SetHeader): Add or remove header.

2009-05-10  Sebastien Pouliot  <sebastien@ximian.com>

	* HttpWebRequest_2_1.cs: Move Headers property logic here (as 
	shown by adding more unit tests)
	* WebClient_2_1.cs: Add comment that Headers are not validated
	there, but later.
	* WebHeaderCollection_2_1.cs: Add a SetHeader method that can 
	work around the normal validations that the "this" property
	needs to do.

2009-05-09  Sebastien Pouliot  <sebastien@ximian.com>

	* WebHeaderCollection_2_1.cs: When associated with a WebRequest 
	the header collection items needs to be validated since not all
	headers will be valid. Part of fix for DRT#532

2009-04-16  Sebastien Pouliot  <sebastien@ximian.com> 

	* HttpWebRequest_2_1.cs: Rework the throwing of NIE so gui-compare
	does not report them (since they are the "right" behavior)
	* WebClient_2_1.cs: Fix BaseAddress property to return the URI to 
	the XAP file. Implement protected GetWebRequest which will make an
	absolute URI from a relative one (using BaseAddress). That remove
	the need of the previous hack.
	* WebRequest_2_1.cs: Remove previous hack

2009-04-11  Sebastien Pouliot  <sebastien@ximian.com> 

	* WebClient_2_1.cs: WebClient allows relative URI...
	* WebRequest_2_1.cs: ...while WebRequest does not by default. 
	Also uncomment a few checks for new test cases

2009-04-11  Sebastien Pouliot  <sebastien@ximian.com>

	* DnsEndPoint_2_1.cs: Adjust exceptions wrt unit tests
	* HttpWebRequest_2_1.cs: Fix Headers property wrt unit tests: 
	* WebClient_2_1.cs: Fix some properties
	* WebHeaderCollection_2_1.cs: Adjust exceptions wrt unit tests
	* WebRequest_2_1.cs: Add RegisterPrefix functionality and add
	missing checks (fix unit tests)

2009-04-09  Sebastien Pouliot  <sebastien@ximian.com>

	* DnsEndPoint_2_1.cs: Fix header.
	* HttpStatusCode_2_1.cs: New. SL2 (short) version of the enum
	* HttpWebRequest_2_1.cs: Add missing members
	* WebExceptionStatus_2_1.cs: New. SL2 (short) version of the enum
	* WebHeaderCollection_2_1.cs: Implement S.C.IEnumerable

2009-03-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* WebClient_2_1.cs: OnOpenReadCompleted and OnDownloadStringCompleted:
	make sure we don't pass any exceptions back to native code.

2009-03-04  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* WebClient_2_1.cs: Stub out missing methods.
	* WriteStreamClosedEventArgs_2_1.cs: 
	* WriteStreamClosedEventHandler_2_1.cs: Added.

2009-02-05  Geoff Norton  <gnorton@novell.com>

	* WebClient_2_1.cs: Use g_timeout_add instead of g_idle_add here until
	SyncContext is ready, as its less prone to starvation.

2009-02-05  Geoff Norton  <gnorton@novell.com>

	* WebClient_2_1.cs: CancelAsync calls Thread.Interrupt so needs to be
	SecuritySafeCritical for now.

2009-01-26  Rolf Bjarne Kvinge  <rkvinge@novell.com>

	* WebClient_2_1.cs: Ensure we don't let exceptions go to native code.
	* HttpWebRequest_2_1.cs: Add AllowReadStreamBuffering.

2009-01-21  Geoff Norton  <gnorton@novell.com>

	* WebClient_2_1.cs: Make the ManualResetEvent local to the callback
	because a WebClient can be reused causing a wait-handle race here
	allowing a delegate to get collected causing a crash.

2009-01-21  Chris Toshok  <toshok@ximian.com>

	* WebClient_2_1.cs: add 1 method back in, CancelAsync.

2009-01-12  Geoff Norton  <gnorton@novell.com>

	* WebClient_2.1.cs: SL2 webclient supports BaseAddress.

2008-10-16  Jb Evain  <jbevain@novell.com>

	* WebHeaderCollection_2_1.cs: update to SL2 api.

2008-10-16  Jb Evain  <jbevain@novell.com>

	* WebResponse_2_1.cs: update API to SL2.

2008-08-21  Stephane Delcroix  <sdelcroix@novell.com>

	* WebClient_2_1.cs: set the address on OpenReadCompletedEventArgs
	ctor.

2008-08-21  Stephane Delcroix  <sdelcroix@novell.com>

	* WebClient_2_1.cs: enable the DownloadStringAsync code

2008-08-19  Geoff Norton  <gnorton@novell.com>

	* WebClient_2_1.cs: Keep a reference to the tick callback until its completed.

2008-08-18  Geoff Norton  <gnorton@novell.com>

	* WebRequest_2_1.cs: Set a delegate callback for BrowserHttpWebRequest
	to update progress.
	* WebClient_2_1.cs: Refactor the OnDownloadedChanged method, as its already
	emitting on the right thread.  Clean up the OnOpenReadCompleted method.
	Set a delegate callback for BrowserHttpWebRequest to updated Progress.

2008-08-17  Geoff Norton  <gnorton@novell.com>

	* WebRequest_2_1.cs: We support relative URI's now.

2008-08-14  Geoff Norton  <gnorton@novell.com>

	* WebClient_2_1.cs: A dirty hack to emit the events on the proper thread
	until we can figure out exactly how to leverage Dispatcher over here.

2008-06-18  Stephane Delcroix  <sdelcroix@novell.com>

	* WebRequest_2_1.cs: Load BrowserHttpWebRequest from the right assembly

2008-06-10  Stephane Delcroix  <sdelcroix@novell.com>

	* DnsEndPoint_2_1.cs: embed an IPAddress and rely on IPEndPoint
	for serialization.

2008-06-04  Stephane Delcroix  <sdelcroix@novell.com>

	* DnsEndPoint_2_1.cs: new DnsEndPoint class for SL2b1

2008-04-13  Jb Evain  <jbevain@novell.com>

	* *_2_1.cs: move the specific 2.1 System.Net code to the
	assembly System.Net.
