When the callback contract type is the same as the contract, do not block replies.
[mono.git] / mcs / class / System.ServiceModel / System.ServiceModel / DuplexClientRuntimeChannel.cs
index b5767541517cfe0247907c64fd8193905da807d0..66c0e79df4bf1ff633a1cef30c92ac41bc034b92 100644 (file)
@@ -157,7 +157,7 @@ namespace System.ServiceModel.MonoInternal
 
                void ProcessInputCore (IInputChannel input, Message message)
                {
-                               bool isReply = message != null && Contract.Operations.Any (od => !od.InCallbackContract && od.Messages.Any (md => md.Action == message.Headers.Action));
+                               bool isReply = message != null && Contract.Operations.Any (od => (od.DeclaringContract.CallbackContractType == od.DeclaringContract.ContractType || !od.InCallbackContract) && od.Messages.Any (md => md.Action == message.Headers.Action));
                                if (isReply) {
                                        if (ReplyHandlerQueue.Count > 0) {
                                                if (isReply) {