From 3d135ccba12081d3039978d0bfa8dea70de8b130 Mon Sep 17 00:00:00 2001 From: Atsushi Eno Date: Tue, 30 Mar 2010 07:35:56 +0000 Subject: [PATCH] 2010-03-30 Atsushi Enomoto * ChannelDispatcher.cs : for faults, use fault namespace, not that of ReplyAction. Added FIXME comment regarding dispatcher. svn path=/trunk/mcs/; revision=154427 --- .../System.ServiceModel.Dispatcher/ChangeLog | 5 +++++ .../System.ServiceModel.Dispatcher/ChannelDispatcher.cs | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Dispatcher/ChangeLog b/mcs/class/System.ServiceModel/System.ServiceModel.Dispatcher/ChangeLog index 2fd02d25e0d..aa592ba3ec6 100644 --- a/mcs/class/System.ServiceModel/System.ServiceModel.Dispatcher/ChangeLog +++ b/mcs/class/System.ServiceModel/System.ServiceModel.Dispatcher/ChangeLog @@ -1,3 +1,8 @@ +2010-03-30 Atsushi Enomoto + + * ChannelDispatcher.cs : for faults, use fault namespace, not that of + ReplyAction. Added FIXME comment regarding dispatcher. + 2010-03-25 Atsushi Enomoto * OperationInvokerHandler.cs : removed unused code. diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Dispatcher/ChannelDispatcher.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Dispatcher/ChannelDispatcher.cs index 9066a29d4e2..a24563681e3 100644 --- a/mcs/class/System.ServiceModel/System.ServiceModel.Dispatcher/ChannelDispatcher.cs +++ b/mcs/class/System.ServiceModel/System.ServiceModel.Dispatcher/ChannelDispatcher.cs @@ -571,7 +571,7 @@ namespace System.ServiceModel.Dispatcher MessageVersion version = rc.RequestMessage.Version; FaultCode fc = new FaultCode ("DestinationUnreachable", version.Addressing.Namespace); - Message res = Message.CreateMessage (version, fc, ex.Message, rc.RequestMessage.Headers.Action); + Message res = Message.CreateMessage (version, fc, ex.Message, rc.RequestMessage.Version.Addressing.FaultNamespace); rc.Reply (res); } catch (Exception e) { // FIXME: log it @@ -633,6 +633,9 @@ namespace System.ServiceModel.Dispatcher return candidate; } + // FIXME: this part needs refactoring. + // First, Endpoint must be identified, or return EndpointNotFound fault in case address filter didn't match anything. + // Then, contract filter must be applied to identify a dispatch operation, or return ActionNotSupported fault in case contract filter didn't match anything. bool MessageMatchesEndpointDispatcher (Message req, EndpointDispatcher endpoint) { // FIXME: handle AddressFilterMode.Prefix too. -- 2.25.1