From 0593db2ff6438f0c259144822c6f0ada1f7b79df Mon Sep 17 00:00:00 2001 From: Benoit Foucher Date: Tue, 23 May 2017 18:47:34 +0200 Subject: Fixed ICE-7884 - TwowayOnlyException is now raised for twoway invocations on oneway proxies --- cpp/src/Glacier2Lib/SessionHelper.cpp | 4 ++++ cpp/src/Ice/Proxy.cpp | 16 +++++++++++++--- cpp/src/IceSSL/OpenSSLCertificateI.cpp | 4 ++++ cpp/src/IceSSL/SChannelCertificateI.cpp | 4 ++++ cpp/src/IceSSL/SecureTransportCertificateI.cpp | 4 ++++ 5 files changed, 29 insertions(+), 3 deletions(-) (limited to 'cpp/src') diff --git a/cpp/src/Glacier2Lib/SessionHelper.cpp b/cpp/src/Glacier2Lib/SessionHelper.cpp index 3891e31ab7f..b5d436c7503 100644 --- a/cpp/src/Glacier2Lib/SessionHelper.cpp +++ b/cpp/src/Glacier2Lib/SessionHelper.cpp @@ -1041,7 +1041,11 @@ Glacier2::SessionFactoryHelper::setProtocol(const string& protocol) protocol != "ws" && protocol != "wss") { +#ifdef ICE_CPP11_MAPPING + throw invalid_argument("Unknown protocol `" + protocol + "'"); +#else throw IceUtil::IllegalArgumentException(__FILE__, __LINE__, "Unknown protocol `" + protocol + "'"); +#endif } _protocol = protocol; } diff --git a/cpp/src/Ice/Proxy.cpp b/cpp/src/Ice/Proxy.cpp index b46545c35c1..7b7a7311fa6 100644 --- a/cpp/src/Ice/Proxy.cpp +++ b/cpp/src/Ice/Proxy.cpp @@ -239,9 +239,7 @@ Ice::ObjectPrx::_checkTwowayOnly(const string& name) const // if(!ice_isTwoway()) { - throw IceUtil::IllegalArgumentException(__FILE__, - __LINE__, - "`" + name + "' can only be called with a twoway proxy"); + throw Ice::TwowayOnlyException(__FILE__, __LINE__, name); } } @@ -852,7 +850,11 @@ ICE_OBJECT_PRX::ice_locatorCacheTimeout(Int newTimeout) const { ostringstream s; s << "invalid value passed to ice_locatorCacheTimeout: " << newTimeout; +#ifdef ICE_CPP11_MAPPING + throw invalid_argument(s.str()); +#else throw IceUtil::IllegalArgumentException(__FILE__, __LINE__, s.str()); +#endif } if(newTimeout == _reference->getLocatorCacheTimeout()) { @@ -1059,7 +1061,11 @@ ICE_OBJECT_PRX::ice_invocationTimeout(Int newTimeout) const { ostringstream s; s << "invalid value passed to ice_invocationTimeout: " << newTimeout; +#ifdef ICE_CPP11_MAPPING + throw invalid_argument(s.str()); +#else throw IceUtil::IllegalArgumentException(__FILE__, __LINE__, s.str()); +#endif } if(newTimeout == _reference->getInvocationTimeout()) { @@ -1201,7 +1207,11 @@ ICE_OBJECT_PRX::ice_timeout(int t) const { ostringstream s; s << "invalid value passed to ice_timeout: " << t; +#ifdef ICE_CPP11_MAPPING + throw invalid_argument(s.str()); +#else throw IceUtil::IllegalArgumentException(__FILE__, __LINE__, s.str()); +#endif } ReferencePtr ref = _reference->changeTimeout(t); if(ref == _reference) diff --git a/cpp/src/IceSSL/OpenSSLCertificateI.cpp b/cpp/src/IceSSL/OpenSSLCertificateI.cpp index 03c0d304d51..afdd6b7c815 100644 --- a/cpp/src/IceSSL/OpenSSLCertificateI.cpp +++ b/cpp/src/IceSSL/OpenSSLCertificateI.cpp @@ -349,7 +349,11 @@ OpenSSLCertificateI::OpenSSLCertificateI(x509_st* cert) : _cert(cert) { if(!_cert) { +#ifdef ICE_CPP11_MAPPING + throw invalid_argument("Invalid certificate reference"); +#else throw IceUtil::IllegalArgumentException(__FILE__, __LINE__, "Invalid certificate reference"); +#endif } } diff --git a/cpp/src/IceSSL/SChannelCertificateI.cpp b/cpp/src/IceSSL/SChannelCertificateI.cpp index c0a357fd63e..0767bd4efb9 100644 --- a/cpp/src/IceSSL/SChannelCertificateI.cpp +++ b/cpp/src/IceSSL/SChannelCertificateI.cpp @@ -312,7 +312,11 @@ SChannelCertificateI::SChannelCertificateI(CERT_SIGNED_CONTENT_INFO* cert) : { if(!_cert) { +#ifdef ICE_CPP11_MAPPING + throw invalid_argument("Invalid certificate reference"); +#else throw IceUtil::IllegalArgumentException(__FILE__, __LINE__, "Invalid certificate reference"); +#endif } try diff --git a/cpp/src/IceSSL/SecureTransportCertificateI.cpp b/cpp/src/IceSSL/SecureTransportCertificateI.cpp index 0e90b61ae00..00b60e1854b 100644 --- a/cpp/src/IceSSL/SecureTransportCertificateI.cpp +++ b/cpp/src/IceSSL/SecureTransportCertificateI.cpp @@ -409,7 +409,11 @@ SecureTransportCertificateI::SecureTransportCertificateI(SecCertificateRef cert) { if(!_cert) { +#ifdef ICE_CPP11_MAPPING + throw invalid_argument("Invalid certificate reference"); +#else throw IceUtil::IllegalArgumentException(__FILE__, __LINE__, "Invalid certificate reference"); +#endif } } -- cgit v1.2.3