diff options
Diffstat (limited to 'mcs/class/System.Runtime.Remoting')
4 files changed, 36 insertions, 11 deletions
diff --git a/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels.Tcp/ChangeLog b/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels.Tcp/ChangeLog index 42d69cb17d6..a638962017f 100644 --- a/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels.Tcp/ChangeLog +++ b/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels.Tcp/ChangeLog @@ -1,3 +1,8 @@ +2004-07-15 Lluis Sanchez Gual <lluis@novell.com> + + * TcpServerChannel.cs: Set channel name from the provided properties. + This fixes bug #61592. + 2004-05-13 Lluis Sanchez Gual <lluis@ximian.com> * TcpChannel.cs: Made Init private. diff --git a/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels.Tcp/TcpServerChannel.cs b/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels.Tcp/TcpServerChannel.cs index 945dff1e278..6e3aba6f960 100644 --- a/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels.Tcp/TcpServerChannel.cs +++ b/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels.Tcp/TcpServerChannel.cs @@ -106,6 +106,9 @@ namespace System.Runtime.Remoting.Channels.Tcp {
switch((string)property.Key)
{
+ case "name": + name = property.Value.ToString(); + break; case "port":
port = Convert.ToInt32(property.Value); break;
diff --git a/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels/ChangeLog b/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels/ChangeLog index c2ea35962b2..47d41efa66e 100644 --- a/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels/ChangeLog +++ b/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels/ChangeLog @@ -1,3 +1,14 @@ +2004-07-26 Lluis Sanchez Gual <lluis@ximian.com> + + * SoapMessageFormater.cs: In BuildSoapMessageFromMethodResponse, add the + return value to the SoapMessage even if it is null. This fixes bug #61837. + +2004-07-06 Lluis Sanchez Gual <lluis@ximian.com> + + * SoapMessageFormatter.cs: In BuildMethodCallFromSoapMessage, set get the + parameters from the SoapMessage by position, not by name, since names + may be different. This fixes bug #60427. + 2004-06-16 Lluis Sanchez Gual <lluis@ximian.com> * SoapServerFormatterSink.cs: Removed unneded method. diff --git a/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels/SoapMessageFormatter.cs b/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels/SoapMessageFormatter.cs index e0508f1cb82..2de868c9bee 100644 --- a/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels/SoapMessageFormatter.cs +++ b/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels/SoapMessageFormatter.cs @@ -222,21 +222,21 @@ namespace System.Runtime.Remoting.Channels { // have to add them here
_methodCallParameters = _methodCallInfo.GetParameters();
object[] args = new object[_methodCallParameters.Length];
-
- foreach(ParameterInfo paramInfo in _methodCallParameters)
+ int sn = 0;
+ for (int n=0; n<_methodCallParameters.Length; n++)
{
+ ParameterInfo paramInfo = _methodCallParameters [n];
Type paramType = (paramInfo.ParameterType.IsByRef ? paramInfo.ParameterType.GetElementType() : paramInfo.ParameterType);
if (paramInfo.IsOut && paramInfo.ParameterType.IsByRef) {
- args [paramInfo.Position] = GetNullValue (paramType);
+ args [n] = GetNullValue (paramType);
}
else{
- int index = Array.IndexOf(soapMessage.ParamNames, paramInfo.Name);
- if(soapMessage.ParamValues[index] is IConvertible)
- soapMessage.ParamValues[index] = Convert.ChangeType(
- soapMessage.ParamValues[index],
- paramType);
- args [paramInfo.Position] = soapMessage.ParamValues[index];
+ object val = soapMessage.ParamValues[sn++];
+ if(val is IConvertible)
+ args [n] = Convert.ChangeType (val, paramType);
+ else
+ args [n] = val;
}
}
@@ -267,10 +267,16 @@ namespace System.Runtime.Remoting.Channels { ArrayList paramValues = new ArrayList();
ArrayList paramTypes = new ArrayList();
soapMessage.MethodName = mrm.MethodName+"Response";
- if(mrm.ReturnValue != null && mrm.ReturnValue.GetType() != typeof(void)) {
+
+ Type retType = ((MethodInfo)mrm.MethodBase).ReturnType;
+
+ if(retType != typeof(void)) {
paramNames.Add("return");
paramValues.Add(mrm.ReturnValue);
- paramTypes.Add(mrm.ReturnValue.GetType());
+ if (mrm.ReturnValue != null)
+ paramTypes.Add(mrm.ReturnValue.GetType());
+ else
+ paramTypes.Add(retType);
}
for(int i = 0; i < mrm.OutArgCount; i++){
|