2009-05-18 Atsushi Enomoto <atsushi@ximian.com>
authorAtsushi Eno <atsushieno@gmail.com>
Mon, 18 May 2009 13:29:28 +0000 (13:29 -0000)
committerAtsushi Eno <atsushieno@gmail.com>
Mon, 18 May 2009 13:29:28 +0000 (13:29 -0000)
* ErrorProcessingHandler.cs, InputOrReplyRequestProcessor.cs :
  they also premise request-reply channel and broke duplex channels.

svn path=/trunk/mcs/; revision=134319

mcs/class/System.ServiceModel/System.ServiceModel.Dispatcher/ChangeLog
mcs/class/System.ServiceModel/System.ServiceModel.Dispatcher/ErrorProcessingHandler.cs
mcs/class/System.ServiceModel/System.ServiceModel.Dispatcher/InputOrReplyRequestProcessor.cs

index 1fb86364c0b791efac729a873eefbb5d7dd43171..1430f59390eaa61825192abc9e9c7d595ef4faf7 100644 (file)
@@ -1,3 +1,8 @@
+2009-05-18  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * ErrorProcessingHandler.cs, InputOrReplyRequestProcessor.cs :
+         they also premise request-reply channel and broke duplex channels.
+
 2009-05-13  Atsushi Enomoto  <atsushi@ximian.com>
 
        * ChannelDispatcher.cs : open channel before using it.
index 7241975536e3eaec1a8750045f326c782d0f7d99..18439d545a287a98e76a2cef6f2bc6a230cfb62c 100644 (file)
@@ -8,6 +8,13 @@ namespace System.ServiceModel.Dispatcher
 {\r
        internal class ErrorProcessingHandler : BaseRequestProcessorHandler\r
        {\r
+               public ErrorProcessingHandler (IChannel channel)\r
+               {\r
+                       duplex = channel as IDuplexChannel;\r
+               }\r
+\r
+               IDuplexChannel duplex;\r
+\r
                protected override bool ProcessRequest (MessageProcessingContext mrc)\r
                {\r
                        Exception ex = mrc.ProcessingException;\r
@@ -24,7 +31,10 @@ namespace System.ServiceModel.Dispatcher
                        if (!fc.TryCreateFaultMessage (ex, out res))\r
                                throw ex;\r
                        mrc.ReplyMessage = res;\r
-                       mrc.Reply (true);\r
+                       if (duplex != null)\r
+                               mrc.Reply (duplex, true);\r
+                       else\r
+                               mrc.Reply (true);\r
                        return false;\r
                }               \r
        }\r
index 82ecc28d32e08440bafc1947f0f2c160f060c145..9a3f528eb33a9323f28e2438d307ea8c20de905d 100644 (file)
@@ -27,7 +27,7 @@ namespace System.ServiceModel.Dispatcher
                                                        AddHandler(new ReplyHandler (replyOrInput));\r
 \r
                        //errors\r
-                       ErrorChain.AddHandler (new ErrorProcessingHandler ());\r
+                       ErrorChain.AddHandler (new ErrorProcessingHandler (replyOrInput));\r
 \r
                        //finalize\r
                        FinalizationChain.AddHandler (new FinalizeProcessingHandler ());\r