2010-01-20 Atsushi Enomoto <atsushi@ximian.com>
[mono.git] / mcs / class / System.ServiceModel / System.ServiceModel.Channels / ChangeLog
index fb8cfe43b309da8f4453c4f0c0b7a881c9ce017b..70dbf110deb0c529477df7800bcdecbd1ab69326 100755 (executable)
@@ -1,3 +1,494 @@
+2010-01-20  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * AddressHeader.cs : implement remaining bits.
+         Eliminate dependency on NetDataContractSerializer.
+
+2010-01-20  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * CommunicationObject.cs : in Fault(), do similar work as previous
+         change does.
+
+2010-01-19  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * CommunicationObject.cs : when process state changes, lock the
+         object to make sure the state transition is valid.
+         Change OnClosed/OnClosing to do the way OnOpened/OnOpening does.
+
+2010-01-13  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * MessageHeaders.cs : implement SetAction().
+
+2010-01-13  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * ChannelFactoryBase.cs : fix build.
+
+2010-01-13  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * ChannelBase.cs : cosmetic API fix for SL3.
+
+2010-01-13  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * ChannelFactoryBase.cs :
+         implement On{Begin/End}Close() on the generic type.
+
+2010-01-13  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * HttpChannelFactory.cs, TcpChannelFactory.cs,
+         ChannelFactoryBase.cs, NamedPipeChannelFactory.cs
+         PeerChannelFactory.cs, HttpRequestChannel.cs:
+         fix ChannelFactoryBase API; move On(Begin/End)Open() to internal
+         type and made required changes.
+
+2010-01-13  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * HttpCookieContainerBindingElement.cs : new.
+       * IHttpCookieContainer.cs : fix type name.
+       * HttpRequestChannel.cs, HttpChannelFactory.cs : support above.
+
+2010-01-07  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * TcpBinaryFrameManager.cs : treat EOF as interrupted stream too (it
+         does not happen when communicating with .NET client but happens with
+         mono). Seealso FIXME comment.
+       * TcpDuplexSessionChannel.cs : do not try to close session when it
+         failed to read sized message. The connection is already dead.
+
+         Fixed bug #567949.
+
+2010-01-07  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * TcpDuplexSessionChannel.cs :
+         Write EndRecord only when the connection is available.
+         Remove hack - do let ChannelDispatcher close the channel.
+       * TcpBinaryFrameManager.cs :
+         The socket may be disconnected when trying to read a sized message,
+         so check some socket exceptions.
+         In case the client silently shuts down without EndRecord and
+         reconnects to the server with preamble while expecting a sized
+         message (which is so lame, but that's what .NET often does), refresh
+         preamble and continue.
+
+         This fixes some cases of bug #567949 but not all.
+
+2010-01-06  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * BinaryMessageEncoder.cs : enable workaround buffering only when
+         the argument stream does *not* support seek. This fixes some
+         net.tcp connection problem.
+
+2009-12-26  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * TcpBinaryFrameManager.cs : If preamble byte is not available from
+         the client stream, detect it to close the reply or input channel.
+       * TcpRequestChannel.cs : send preamble at each request time.
+         It differentiates communication behavior on such cases that involve
+         single open and multiple requests.
+       * TcpReplyChannel.cs : close the channel only when the channel is
+         oeprated to close i.e. do not close the socket every time.
+         Process preambles on each request (the same as request channel).
+
+2009-12-26  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * TcpBinaryFrameManager.cs : unsized envelope record may have more
+         than one data block, so consume them accordingly. This should fix
+         large buffer consumption.
+
+2009-12-21  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * MessageFault.cs : support EnvelopeVersion.None as well, as almost
+         the same as SOAP12.
+
+2009-12-17  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * HttpRequestContext.cs : for DestinationUnreachable message, this
+         channel returns 400 in .NET.
+
+2009-12-16  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * BinaryMessageEncoder.cs : added workaround for strange stream
+         consumption error raised by HttpTransport + Binary encoder example.
+       * BinaryMessageEncodingBindingElement.cs:
+         only SOAP 1.2 is allowed for this encoder.
+
+2009-12-14  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * XmlReaderBodyWriter.cs : don't try to write empty xml.
+
+2009-12-10  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * HttpRequestChannel.cs : avoid adding duplicate headers. Basically
+         default WebHeaderCollection items are overwritten.
+
+2009-12-10  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * HttpRequestChannel.cs : when HTTP response was error, do not try
+         to read message but just raise an error.
+
+2009-12-10  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * MessageHeaders.cs : null can be set as a WS-Addressing header item.
+
+2009-12-10  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * HttpRequestChannel.cs : WebException.Response might be null.
+
+2009-12-04  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * ReplyChannelBase.cs : added listener property.
+       * SecurityChannelListener.cs : quick async impl, as ServiceHost has
+         been updated to prefer async by default, a while ago.
+
+2009-12-04  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * HttpTransportBindingElement.cs : finished all GetProperty() values.
+
+2009-12-04  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * HttpRequestChannel.cs : disabled carelessly added
+         "UseDefaultCredentials = false" line. It blocked basic auth.
+
+2009-12-04  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * HttpRequestChannel.cs, HttpChannelFactory.cs,
+         HttpChannelListener.cs, HttpListenerManager.cs :
+         implemented http client authentication and some of corresponding
+         service code. Only client works so far.
+
+2009-12-03  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * HttpsTransportBindingElement.cs, HttpChannelListener.cs :
+         added URI scheme check.
+
+2009-12-03  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * TransportSecurityBindingElement.cs : fix 2.1 build.
+
+2009-12-03  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * HttpsTransportBindingElement.cs :
+         RequireClientCertificate is false by default.
+         Remove extra #if NET_2_1.
+       * SecurityBindingElement.cs :
+         Implement some transport security factory methods.
+       * TransportSecurityBindingElement.cs :
+         It is not ISecurityCapabilities anymore.
+
+2009-11-25  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * MessageHeaders.cs
+         SecurityBindingElement.cs
+         LocalClientSecuritySettings.cs
+         TransportSecurityBindingElement.cs
+         FaultConverter.cs : They are now part of SL3 API.
+
+2009-11-17  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * BinaryMessageEncodingBindingElement.cs : changes for 2.1 build.
+
+2009-11-05  Geoff Norton  <gnorton@novell.com>
+
+       * HttpsTransportBindingElement.cs: Implement basic https transport
+       binding support for Moonlight and MonoTouch
+
+2009-10-22  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * HttpListenerManager.cs : remove CWLs.
+
+2009-10-22  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * SvcHttpHandler.cs : move back previous listener selector code in
+         ProcessRequest(). Unlike HttpListener, ASP.NET does not refine
+         and differentiate requests to deeper paths (such as /jsdebug), so
+         we need such refinement here.
+
+2009-10-22  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * HttpListenerManager.cs : dependent fix to ServiceMetadataExtension
+         changes.
+
+2009-10-22  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * SvcHttpHandler.cs, HttpReplyChannel.cs, AspNetReplyChannel.cs,
+         HttpChannelListener.cs, HttpListenerManager.cs :
+         Similar refactoring on ASP.NET side to the previous one.
+         Added ASP.NET implementation of HttpListenerManager and use some
+         part of it in SvcHttpHandler (ASP.NET stack does not fully make use
+         of the manager yet).
+         Rewrote AspNetReplyChannel to become almost the same as
+         HttpSimpleReplyChannel, to hopefully unify them later.
+         Now it dispatches requests to *.svc for wsdl, help and SOAP as long
+         as ServiceThrottle has MaxConcurrentSessions=1. Also REST calls
+         are still broken.
+
+2009-10-20  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * HttpReplyChannel.cs, HttpChannelListener.cs, HttpListenerManager.cs:
+         Refactoring on listener manager to correctly handle wsdl and help
+         requests for such case that they conflict in addressing. Now it
+         can correctly distinguish service calls, WSDL requests and help
+         requests when all of them point to "http://localhost/foo.svc"
+         (which is very common case that the user does not change Http*Url).
+
+2009-10-16  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * ChannelListenerBase.cs : add Properties property to add arbitrary
+         properties handy (only inside this assembly).
+
+2009-10-16  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * HttpReplyChannel.cs : fix warning.
+
+2009-10-15  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * HttpReplyChannel.cs, AspNetReplyChannel.cs : set Via property.
+
+2009-10-15  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * HttpReplyChannel.cs : make sure to release wait lock.
+       * HttpChannelListener.cs : session channels are not supported, so
+         remove relevant NIEs.
+
+2009-10-15  Sebastien Pouliot  <sebastien@ximian.com>
+
+       * HttpRequestChannel.cs (WaitEnd): Neither Moonlight nor MonoTouch
+       support contexts so we call the non-overloaded WaitOne method 
+       (which defaults to false).
+
+2009-10-13  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * SvcHttpHandler.cs, AspNetReplyChannel.cs, HttpChannelListener.cs:
+         significant rewrite to cooperate wcf handler and asp.net handler
+         to not mix multiple WCF listener within the asp.net handler.
+         So far it mostly works when 1) there are no ChannelDispatchers
+         that have an identical listen Uri and 2) MaxConcurrentSessions is
+         1 (must be explicitly set).
+
+2009-10-13  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * CommunicationObject.cs : give better state error description.
+
+2009-10-09  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * CommunicationObject.cs : OnOpening() and OnOpened() require calls
+         to base methods. This resulted in not a few changes everywhere.
+
+2009-10-07  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * IHttpCookieContainer.cs : new 2.1-only interface (no use).
+
+2009-10-06  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * SvcHttpHandler.cs : use file path given by the factory to
+         construct BaseAddresses. Requests to "test.svc/jsdebug" should
+         not be handled as request to "jsdebug" file, it's rather an
+         "argument" to "test.svc".
+
+2009-10-06  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * SvcHttpHandler.cs, HttpChannelListener.cs : some significant
+         rewrite to handle shutdown situation better. The listeners should
+         not close channels that it opened. Instead, just stop accepting
+         further requests. Removed blocking mutex on WaitForRequest().
+         Now xsp shuts down as expected.
+
+2009-10-06  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * HttpReplyChannel.cs : lock list when releasing its content contexts.
+       * AspNetReplyChannel.cs : send EndRequest() to handler when it is
+         closing.
+
+2009-10-06  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * SvcHttpHandlerFactory.cs : remove todo.
+       * ReplyChannelBase.cs : add comment.
+
+2009-10-02  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * HttpTransportBindingElement.cs, SvcHttpHandlerFactory.cs :
+         revert the change, to use internal asp.net state again.
+       * SvcHttpHandler.cs : add VirtualPathExtension.
+
+2009-10-02  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * HttpReplyChannel.cs, AspNetReplyChannel.cs, AspNetRequestContext.cs:
+         asp.net response was not written correctly.
+         Fill HttpRequestMessageProperty to get handle WSDL requests
+         processed in ServiceMetadataExtension without NRE.
+         Remove wrong HttpListenerContext iteration at Abort and Close in
+         common base class and move it to non-asp derived channel.
+
+2009-10-02  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * SvcHttpHandler.cs : remove unused code.
+
+2009-09-30  Jb Evain  <jbevain@novell.com>
+
+       * HttpRequestChannel.cs: When compiling for MonoTouch, avoid
+       to use any of the remoting features.
+
+2009-09-30  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * SvcHttpHandlerFactory.cs, HttpTransportBindingElement.cs :
+         use AspNetCompatibilityEnabled.
+       * SvcHttpHandler.cs : disable ApplyConfiguration(). It should be done
+         at ServiceHostBase.
+       * AspNetReplyChannel.cs : remove extra field.
+
+2009-09-29  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * HttpReplyChannel.cs : remove extra field.
+
+2009-09-29  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * AspNetRequestContext.cs : remove CWL.
+
+2009-09-29  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * AspNetReplyChannel.cs, AspNetRequestContext.cs : close HttpContext
+         only after AspNetRequestContext is closed. Do not close it
+         immediately after receiving the context. (HttpRuntime destructs it
+         and further uses then becomes impossible.)
+
+2009-09-29  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * AspNetReplyChannel.cs, HttpReplyChannel.cs : add some comments.
+       * SvcHttpHandlerFactory.cs, SvcHttpHandler.cs, HttpChannelListener.cs:
+         Make sure that AspNetChannelListener is bound to correct
+         SvcHttpHandler, regardless of specific request URI. It is required
+         for both WSDL requests and RESTful binding requests.
+
+2009-09-14  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * MessageProperties.cs : fix CopyProperties() behavior to not
+         clear existing items. Make all properties call this[name].
+
+2009-09-14  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * HttpTransportBindingElement.cs : fix 2.1 build.
+
+2009-09-14  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * TransportBindingElement.cs : another GetProperty fix, iterate
+         other binding elements.
+
+2009-09-14  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * HttpTransportBindingElement.cs, PeerTransportBindingElement.cs :
+         some GetProperty() implementation.
+
+2009-09-14  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * HttpListenerManager.cs : release HttpListener and avoid extra
+         close process more than once.
+
+2009-09-11  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * HttpChannelListener.cs : do not iterate channel list to close
+         channels which in turn removes them from the list while iteration.
+
+2009-09-06  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * HttpRequestChannel.cs : Fix message version member comparison.
+         Double-quote SOAPAction. Remove extra Exception.
+       * HttpReplyChannel.cs : ditto for version comparison. Unquote above.
+       * HttpRequestContext.cs : when addressing is None, remove action
+         from the message.
+
+2009-09-04  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * SvcHttpHandler.cs : set Uri property based on baseAddresses and
+         path, to pick those endpoints that are added at custom factories.
+
+2009-09-03  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * SvcHttpHandler.cs : apply configuration, and if there is still no
+         endpoint, then add default one.
+
+2009-09-03  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * SvcHttpHandler.cs : another URL to make relative.
+
+2009-09-03  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * SvcHttpHandlerFactory.cs : some GetHandler changes.
+       * SvcHttpHandler.cs : significant changes on receiver structure. Now
+         ProcessRequest() stores pending requests (this might be extraneous,
+         but maybe useful when it implements async handler). Also removed
+         reply_channel field as it may become to handle multiple requests.
+       * HttpChannelListener.cs : bind to corresponding SvcHttpHandler.
+       * AspNetReplyChannel.cs : make it receive requests like
+         HttpReplyChannel (for HttpListener) to make them consistent.
+
+2009-09-03  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * AspNetRequestContext.cs, HttpRequestContext.cs :
+         fix NRE on HttpListenerContext for AspNetRequestContext (mismatch)
+         by splitting HttpListener-based context out from common code base.
+
+2009-09-03  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * SvcHttpHandler.cs : use baseAddresses in ServiceHost and make URIs
+         relative or absolute. new Uri ("/foobar") doesn't work on non-unix
+         environment.
+
+2009-09-02  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * SvcHttpHandlerFactory.cs : make use of BuildManager aid. Now it
+         loads types from system assemblies appropriately.
+
+2009-09-02  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * XmlReaderBodyWriter.cs : implement OnCreateBufferedCopy()
+         for XmlReader input.
+
+2009-09-02  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * HttpRequestMessageProperty.cs : fix default values.
+
+2009-08-31  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * HttpChannelFactory.cs, HttpRequestChannel.cs,
+         ChannelFactoryBase.cs : fix to previous one; allow null Via uri.
+         Check ManualAddressing value and reject address-missing ones.
+
+2009-08-31  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * HttpChannelFactory.cs : reject URI mismatch cases when required.
+
+2009-08-26  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * PeerDuplexChannel.cs : When received Connect() from neighbor,
+         add the peer to its internal list.
+         Finally ChatApplication got working.
+
+2009-08-26  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * PeerDuplexChannel.cs : since the channel factory is per instance,
+         do not reuse factory that is tied to different callback instance.
+         It resolved the issue that mono callback client didn't receive
+         messages from the client itself.
+
+2009-08-26  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * PeerDuplexChannel.cs : in the Welcome response, return the NodeId
+         of the receiver, not the requestor. It resolved the issue that
+         .NET client didn't send further messages to mono server.
+
+2009-08-26  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * PeerDuplexChannel.cs : remove some comment on [MC-PRCH] behavior.
+       * TcpDuplexSessionChannel.cs, TcpBinaryFrameManager.cs,
+         TcpReplyChannel.cs, TcpRequestChannel.cs,
+         NamedPipeReplyChannel.cs, NamedPipeRequestChannel.cs:
+         rename EndRecord handling method to appropriate one.
+         Write EndRecord from recipient too.
+
+2009-08-24  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * PeerDuplexChannel.cs : add PeerFlooder header (see comment).
+         Process PeerTo header to upgrade Message To header. Now mono
+         service accepts mono client (somehow not true for .NET client).
+
 2009-08-24  Atsushi Enomoto  <atsushi@ximian.com>
 
        * TcpDuplexSessionChannel.cs, TcpRequestChannel.cs,