2009-08-17 Atsushi Enomoto <atsushi@ximian.com>
authorAtsushi Eno <atsushieno@gmail.com>
Mon, 17 Aug 2009 13:38:25 +0000 (13:38 -0000)
committerAtsushi Eno <atsushieno@gmail.com>
Mon, 17 Aug 2009 13:38:25 +0000 (13:38 -0000)
* IPeerConnectorContract.cs : use wildcard for the actual message
  transfer operation.

* ServiceHostBase.cs : wildcard action support was not working
  for one-way channels.

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

mcs/class/System.ServiceModel/System.ServiceModel.PeerResolvers/ChangeLog
mcs/class/System.ServiceModel/System.ServiceModel.PeerResolvers/IPeerConnectorContract.cs
mcs/class/System.ServiceModel/System.ServiceModel/ChangeLog
mcs/class/System.ServiceModel/System.ServiceModel/ServiceHostBase.cs

index 45f55358c58d275f0e13a5f17751d50fc7f60edc..df8f77089ad6ee1fcf5fce85600860f25a93f656 100644 (file)
@@ -1,3 +1,8 @@
+2009-08-17  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * IPeerConnectorContract.cs : use wildcard for the actual message
+         transfer operation.
+
 2009-08-17  Atsushi Enomoto  <atsushi@ximian.com>
 
        * IPeerConnectorContract.cs : fix internal member name to get
index e740ffce4b3984ef06f8a53b9b7a3e97fc157934..562f6bbe6701c8f22afc027c3e7781f19d219af9 100644 (file)
@@ -33,7 +33,7 @@ namespace System.ServiceModel.PeerResolvers
                [OperationContract (Action = Consts.Namespace + "/Ping", IsOneWay = true)]
                void Ping ();
 
-               [OperationContract (IsOneWay = true)]
+               [OperationContract (Action = "*", IsOneWay = true)]
                void SendMessage (Message msg);
        }
 
index a8b949605265036b2b0f38c0dfc4ab0842f7769e..32ca9122552a6a7d63591a8253829df7dee985d1 100755 (executable)
@@ -1,3 +1,8 @@
+2009-08-17  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * ServiceHostBase.cs : wildcard action support was not working
+         for one-way channels.
+
 2009-08-17  Atsushi Enomoto  <atsushi@ximian.com>
 
        * ServiceHostBase.cs : set expected AddressFilter.
index ed5ba216cdc5a8f9e0513cd38a228d5dc1e35d8d..5add53257d0a5960505a1bd4546d649be9de7d99 100644 (file)
@@ -389,8 +389,8 @@ namespace System.ServiceModel
 
                }
 
-               internal ChannelDispatcher BuildChannelDispatcher (ServiceEndpoint se, BindingParameterCollection commonParams) {
-
+               internal ChannelDispatcher BuildChannelDispatcher (ServiceEndpoint se, BindingParameterCollection commonParams)
+               {
                        //User the binding parameters to build the channel listener and Dispatcher
                        IChannelListener lf = BuildListener (se, commonParams);
                        ChannelDispatcher cd = new ChannelDispatcher (
@@ -464,7 +464,7 @@ namespace System.ServiceModel
                                od.IsOneWay ?
                                new DispatchOperation (db, od.Name, reqA) :
                                new DispatchOperation (db, od.Name, reqA, resA);
-                       bool has_void_reply = false;
+                       bool no_serialized_reply = od.IsOneWay;
                        foreach (MessageDescription md in od.Messages) {
                                if (md.Direction == MessageDirection.Input &&
                                        md.Body.Parts.Count == 1 &&
@@ -475,7 +475,7 @@ namespace System.ServiceModel
                                        if (md.Body.ReturnValue.Type == typeof (Message))
                                                o.SerializeReply = false;
                                        else if (md.Body.ReturnValue.Type == typeof (void))
-                                               has_void_reply = true;
+                                               no_serialized_reply = true;
                                }
                        }
 
@@ -485,11 +485,11 @@ namespace System.ServiceModel
                        // Setup Formater
                        o.Formatter = BaseMessagesFormatter.Create (od);
 
-                       if (o.Action == "*" && o.ReplyAction == "*") {
+                       if (o.Action == "*" && (o.IsOneWay || o.ReplyAction == "*")) {
                                //Signature : Message  (Message)
                                //          : void  (Message)
                                //FIXME: void (IChannel)
-                               if (!o.DeserializeRequest && (!o.SerializeReply || has_void_reply))
+                               if (!o.DeserializeRequest && (!o.SerializeReply || no_serialized_reply)) // what is this double-ish check for?
                                        db.UnhandledDispatchOperation = o;
                        }