Imported Upstream version 4.4.2.8

Former-commit-id: 35c92f977d4776b96adf6e2e2f8ebbe9c6724ef4
This commit is contained in:
Xamarin Public Jenkins (auto-signing)
2016-07-26 08:49:14 +00:00
parent 0b4a830db1
commit 42e38034c4
17 changed files with 99 additions and 36 deletions

View File

@ -214,6 +214,9 @@ namespace System.Web.Services.Protocols {
OutputMembersMapping = soapImporter.ImportMembersMapping (ResponseName, ResponseNamespace, out_members, hasWrappingElem, writeAccessors);
}
InputMembersMapping.SetKey(RequestName);
OutputMembersMapping.SetKey(ResponseName);
requestSerializerId = parent.RegisterSerializer (InputMembersMapping);
responseSerializerId = parent.RegisterSerializer (OutputMembersMapping);
@ -254,6 +257,8 @@ namespace System.Web.Services.Protocols {
else
InputHeaderMembersMapping = soapImporter.ImportMembersMapping ("", RequestNamespace, members, false, false);
InputHeaderMembersMapping.SetKey(RequestName + ":InHeaders");
requestHeadersSerializerId = parent.RegisterSerializer (InputHeaderMembersMapping);
}
@ -265,7 +270,9 @@ namespace System.Web.Services.Protocols {
OutputHeaderMembersMapping = xmlImporter.ImportMembersMapping ("", RequestNamespace, members, false);
else
OutputHeaderMembersMapping = soapImporter.ImportMembersMapping ("", RequestNamespace, members, false, false);
OutputHeaderMembersMapping.SetKey(ResponseName + ":OutHeaders");
responseHeadersSerializerId = parent.RegisterSerializer (OutputHeaderMembersMapping);
}

View File

@ -243,5 +243,44 @@ namespace MonoTests.System.Web.Services.Protocols
}
}
}
public class RequestHeader : SoapHeader
{
}
public class ResponseHeader : SoapHeader
{
}
[WebServiceBindingAttribute(Name = "ServiceWithHeaders", Namespace = "https://example.com")]
public class ServiceWithHeaders : SoapHttpClientProtocol
{
public RequestHeader RequestHeader { get; set; }
public ResponseHeader ResponseHeader { get; set; }
[SoapHeaderAttribute("ResponseHeader", Direction = SoapHeaderDirection.Out)]
[SoapHeaderAttribute("RequestHeader")]
[SoapDocumentMethodAttribute("", RequestNamespace = "https://example.com", ResponseNamespace = "https://example.com", Use = SoapBindingUse.Literal, ParameterStyle = SoapParameterStyle.Wrapped)]
public int method1()
{
return 0;
}
[SoapHeaderAttribute("ResponseHeader", Direction = SoapHeaderDirection.Out)]
[SoapHeaderAttribute("RequestHeader")]
[SoapDocumentMethodAttribute("", RequestNamespace = "https://example.com", ResponseNamespace = "https://example.com", Use = SoapBindingUse.Literal, ParameterStyle = SoapParameterStyle.Wrapped)]
public int method2()
{
return 0;
}
}
[Test] // Covers #41564
public void ServiceWithHeader () {
var service = new ServiceWithHeaders ();
Assert.IsNotNull (service);
// Should not throw an exception
// XAMMAC specific bug
}
}
}

View File

@ -144,13 +144,25 @@ namespace Mono.Net.Security
bool result;
#if MONODROID
result = AndroidPlatform.TrustEvaluateSsl (certs);
if (result) {
// chain.Build() + GetErrorsFromChain() (above) will ALWAYS fail on
// Android (there are no mozroots or preinstalled root certificates),
// thus `errors` will ALWAYS have RemoteCertificateChainErrors.
// Android just verified the chain; clear RemoteCertificateChainErrors.
errors &= ~SslPolicyErrors.RemoteCertificateChainErrors;
try {
result = AndroidPlatform.TrustEvaluateSsl (certs);
if (result) {
// FIXME: check whether this is still correct.
//
// chain.Build() + GetErrorsFromChain() (above) will ALWAYS fail on
// Android (there are no mozroots or preinstalled root certificates),
// thus `errors` will ALWAYS have RemoteCertificateChainErrors.
// Android just verified the chain; clear RemoteCertificateChainErrors.
errors &= ~SslPolicyErrors.RemoteCertificateChainErrors;
} else {
errors |= SslPolicyErrors.RemoteCertificateChainErrors;
status11 = unchecked((int)0x800B010B);
}
} catch {
result = false;
errors |= SslPolicyErrors.RemoteCertificateChainErrors;
status11 = unchecked((int)0x800B010B);
// Ignore
}
#else
if (is_macosx) {