zeroc-ice 3.6b1 → 3.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/{ext/ice/BZIP_LICENSE → BZIP2_LICENSE} +0 -0
- data/ICE_LICENSE +8 -14
- data/LICENSE +2 -1
- data/{ext/ice/MCPP_LICENSE → MCPP_LICENSE} +2 -9
- data/bin/slice2rb +1 -1
- data/ext/Communicator.cpp +1 -1
- data/ext/Communicator.h +1 -1
- data/ext/Config.h +1 -22
- data/ext/Connection.cpp +125 -13
- data/ext/Connection.h +1 -1
- data/ext/Endpoint.cpp +62 -3
- data/ext/Endpoint.h +1 -1
- data/ext/ImplicitContext.cpp +1 -1
- data/ext/ImplicitContext.h +1 -1
- data/ext/Init.cpp +8 -1
- data/ext/Logger.cpp +1 -1
- data/ext/Logger.h +1 -1
- data/ext/ObjectFactory.cpp +1 -1
- data/ext/ObjectFactory.h +1 -1
- data/ext/Operation.cpp +1 -1
- data/ext/Operation.h +1 -1
- data/ext/Properties.cpp +1 -1
- data/ext/Properties.h +1 -1
- data/ext/Proxy.cpp +1 -1
- data/ext/Proxy.h +1 -1
- data/ext/Slice.cpp +1 -1
- data/ext/Slice.h +1 -1
- data/ext/Types.cpp +65 -17
- data/ext/Types.h +4 -1
- data/ext/Util.cpp +49 -58
- data/ext/Util.h +1 -1
- data/ext/extconf.rb +17 -15
- data/ext/ice/cpp/include/Ice/ACMF.h +1 -1
- data/ext/ice/cpp/include/Ice/Application.h +1 -1
- data/ext/ice/cpp/include/Ice/AsyncResult.h +1 -1
- data/ext/ice/cpp/include/Ice/AsyncResultF.h +1 -1
- data/ext/ice/cpp/include/Ice/BasicStream.h +1 -1
- data/ext/ice/cpp/include/Ice/BatchRequestInterceptor.h +52 -0
- data/ext/ice/cpp/include/Ice/BatchRequestQueueF.h +25 -0
- data/ext/ice/cpp/include/Ice/Buffer.h +1 -1
- data/ext/ice/cpp/include/Ice/BuiltinSequences.h +12 -4
- data/ext/ice/cpp/include/Ice/Communicator.h +12 -4
- data/ext/ice/cpp/include/Ice/CommunicatorAsync.h +1 -1
- data/ext/ice/cpp/include/Ice/CommunicatorF.h +12 -4
- data/ext/ice/cpp/include/Ice/Config.h +13 -8
- data/ext/ice/cpp/include/Ice/Connection.h +41 -16
- data/ext/ice/cpp/include/Ice/ConnectionAsync.h +1 -1
- data/ext/ice/cpp/include/Ice/ConnectionF.h +12 -4
- data/ext/ice/cpp/include/Ice/ConnectionFactoryF.h +1 -1
- data/ext/ice/cpp/include/Ice/ConnectionIF.h +1 -1
- data/ext/ice/cpp/include/Ice/Current.h +12 -4
- data/ext/ice/cpp/include/Ice/DefaultObjectFactory.h +1 -1
- data/ext/ice/cpp/include/Ice/DeprecatedStringConverter.h +1 -1
- data/ext/ice/cpp/include/Ice/DispatchInterceptor.h +1 -1
- data/ext/ice/cpp/include/Ice/Dispatcher.h +1 -1
- data/ext/ice/cpp/include/Ice/DynamicLibrary.h +1 -1
- data/ext/ice/cpp/include/Ice/DynamicLibraryF.h +1 -1
- data/ext/ice/cpp/include/Ice/Endpoint.h +16 -6
- data/ext/ice/cpp/include/Ice/EndpointF.h +12 -4
- data/ext/ice/cpp/include/Ice/EndpointTypes.h +12 -4
- data/ext/ice/cpp/include/Ice/Exception.h +3 -3
- data/ext/ice/cpp/include/Ice/FacetMap.h +12 -4
- data/ext/ice/cpp/include/Ice/FactoryTable.h +1 -1
- data/ext/ice/cpp/include/Ice/FactoryTableInit.h +1 -1
- data/ext/ice/cpp/include/Ice/Format.h +1 -1
- data/ext/ice/cpp/include/Ice/Functional.h +1 -1
- data/ext/ice/cpp/include/Ice/GCObject.h +5 -1
- data/ext/ice/cpp/include/Ice/Handle.h +1 -1
- data/ext/ice/cpp/include/Ice/Ice.h +4 -3
- data/ext/ice/cpp/include/Ice/Identity.h +13 -5
- data/ext/ice/cpp/include/Ice/ImplicitContext.h +12 -4
- data/ext/ice/cpp/include/Ice/ImplicitContextF.h +12 -4
- data/ext/ice/cpp/include/Ice/Incoming.h +1 -1
- data/ext/ice/cpp/include/Ice/IncomingAsync.h +1 -1
- data/ext/ice/cpp/include/Ice/IncomingAsyncF.h +1 -1
- data/ext/ice/cpp/include/Ice/Initialize.h +4 -2
- data/ext/ice/cpp/include/Ice/InstanceF.h +1 -1
- data/ext/ice/cpp/include/Ice/Instrumentation.h +12 -4
- data/ext/ice/cpp/include/Ice/InstrumentationF.h +12 -4
- data/ext/ice/cpp/include/Ice/LocalException.h +12 -4
- data/ext/ice/cpp/include/Ice/LocalObject.h +1 -1
- data/ext/ice/cpp/include/Ice/LocalObjectF.h +1 -1
- data/ext/ice/cpp/include/Ice/Locator.h +137 -129
- data/ext/ice/cpp/include/Ice/LocatorF.h +12 -4
- data/ext/ice/cpp/include/Ice/Logger.h +12 -4
- data/ext/ice/cpp/include/Ice/LoggerF.h +12 -4
- data/ext/ice/cpp/include/Ice/LoggerUtil.h +1 -1
- data/ext/ice/cpp/include/Ice/Metrics.h +144 -136
- data/ext/ice/cpp/include/Ice/MetricsAdminI.h +1 -1
- data/ext/ice/cpp/include/Ice/MetricsFunctional.h +1 -1
- data/ext/ice/cpp/include/Ice/MetricsObserverI.h +35 -26
- data/ext/ice/cpp/include/Ice/NativePropertiesAdmin.h +1 -1
- data/ext/ice/cpp/include/Ice/Object.h +1 -1
- data/ext/ice/cpp/include/Ice/ObjectAdapter.h +12 -4
- data/ext/ice/cpp/include/Ice/ObjectAdapterF.h +12 -4
- data/ext/ice/cpp/include/Ice/ObjectAdapterFactoryF.h +1 -1
- data/ext/ice/cpp/include/Ice/ObjectF.h +1 -1
- data/ext/ice/cpp/include/Ice/ObjectFactory.h +12 -4
- data/ext/ice/cpp/include/Ice/ObjectFactoryF.h +12 -4
- data/ext/ice/cpp/include/Ice/ObjectFactoryManagerF.h +1 -1
- data/ext/ice/cpp/include/Ice/ObserverHelper.h +1 -1
- data/ext/ice/cpp/include/Ice/Outgoing.h +67 -39
- data/ext/ice/cpp/include/Ice/OutgoingAsync.h +31 -34
- data/ext/ice/cpp/include/Ice/OutgoingAsyncF.h +4 -4
- data/ext/ice/cpp/include/Ice/Plugin.h +12 -4
- data/ext/ice/cpp/include/Ice/PluginF.h +12 -4
- data/ext/ice/cpp/include/Ice/Process.h +36 -28
- data/ext/ice/cpp/include/Ice/ProcessF.h +12 -4
- data/ext/ice/cpp/include/Ice/Properties.h +12 -4
- data/ext/ice/cpp/include/Ice/PropertiesAdmin.h +86 -78
- data/ext/ice/cpp/include/Ice/PropertiesF.h +12 -4
- data/ext/ice/cpp/include/Ice/Protocol.h +1 -1
- data/ext/ice/cpp/include/Ice/Proxy.h +6 -2
- data/ext/ice/cpp/include/Ice/ProxyF.h +1 -1
- data/ext/ice/cpp/include/Ice/ProxyFactoryF.h +1 -1
- data/ext/ice/cpp/include/Ice/ProxyHandle.h +1 -1
- data/ext/ice/cpp/include/Ice/ReferenceF.h +1 -1
- data/ext/ice/cpp/include/Ice/RemoteLogger.h +137 -129
- data/ext/ice/cpp/include/Ice/RequestHandlerF.h +1 -1
- data/ext/ice/cpp/include/Ice/ResponseHandlerF.h +1 -1
- data/ext/ice/cpp/include/Ice/Router.h +37 -29
- data/ext/ice/cpp/include/Ice/RouterF.h +12 -4
- data/ext/ice/cpp/include/Ice/ServantLocator.h +12 -4
- data/ext/ice/cpp/include/Ice/ServantLocatorF.h +12 -4
- data/ext/ice/cpp/include/Ice/ServantManagerF.h +1 -1
- data/ext/ice/cpp/include/Ice/Service.h +1 -1
- data/ext/ice/cpp/include/Ice/SliceChecksumDict.h +12 -4
- data/ext/ice/cpp/include/Ice/SliceChecksums.h +1 -1
- data/ext/ice/cpp/include/Ice/SlicedData.h +1 -6
- data/ext/ice/cpp/include/Ice/SlicedDataF.h +1 -1
- data/ext/ice/cpp/include/Ice/Stream.h +3 -5
- data/ext/ice/cpp/include/Ice/StreamF.h +1 -1
- data/ext/ice/cpp/include/Ice/StreamHelpers.h +1 -1
- data/ext/ice/cpp/include/Ice/ThreadPoolF.h +1 -1
- data/ext/ice/cpp/include/Ice/UserExceptionFactory.h +1 -1
- data/ext/ice/cpp/include/Ice/Version.h +14 -6
- data/ext/ice/cpp/include/IceSSL/Config.h +19 -1
- data/ext/ice/cpp/include/IceSSL/ConnectionInfo.h +61 -7
- data/ext/ice/cpp/include/IceSSL/EndpointInfo.h +52 -5
- data/ext/ice/cpp/include/IceSSL/IceSSL.h +2 -2
- data/ext/ice/cpp/include/IceSSL/Plugin.h +32 -26
- data/ext/ice/cpp/include/IceUtil/AbstractMutex.h +1 -1
- data/ext/ice/cpp/include/IceUtil/Atomic.h +186 -0
- data/ext/ice/cpp/include/IceUtil/Cache.h +1 -1
- data/ext/ice/cpp/include/IceUtil/Cond.h +1 -1
- data/ext/ice/cpp/include/IceUtil/Config.h +31 -20
- data/ext/ice/cpp/include/IceUtil/CountDownLatch.h +1 -1
- data/ext/ice/cpp/include/IceUtil/CtrlCHandler.h +1 -1
- data/ext/ice/cpp/include/IceUtil/DisableWarnings.h +9 -2
- data/ext/ice/cpp/include/IceUtil/Exception.h +4 -3
- data/ext/ice/cpp/include/IceUtil/Functional.h +1 -1
- data/ext/ice/cpp/include/IceUtil/Handle.h +1 -1
- data/ext/ice/cpp/include/IceUtil/IceUtil.h +2 -2
- data/ext/ice/cpp/include/IceUtil/IconvStringConverter.h +1 -1
- data/ext/ice/cpp/include/IceUtil/InputUtil.h +1 -1
- data/ext/ice/cpp/include/IceUtil/Iterator.h +1 -1
- data/ext/ice/cpp/include/IceUtil/Lock.h +1 -1
- data/ext/ice/cpp/include/IceUtil/Monitor.h +1 -1
- data/ext/ice/cpp/include/IceUtil/Mutex.h +1 -1
- data/ext/ice/cpp/include/IceUtil/MutexProtocol.h +1 -1
- data/ext/ice/cpp/include/IceUtil/MutexPtrLock.h +1 -1
- data/ext/ice/cpp/include/IceUtil/MutexPtrTryLock.h +1 -1
- data/ext/ice/cpp/include/IceUtil/Optional.h +1 -1
- data/ext/ice/cpp/include/IceUtil/Options.h +1 -1
- data/ext/ice/cpp/include/IceUtil/OutputUtil.h +8 -11
- data/ext/ice/cpp/include/IceUtil/PopDisableWarnings.h +1 -1
- data/ext/ice/cpp/include/IceUtil/PushDisableWarnings.h +5 -1
- data/ext/ice/cpp/include/IceUtil/Random.h +1 -1
- data/ext/ice/cpp/include/IceUtil/RecMutex.h +1 -1
- data/ext/ice/cpp/include/IceUtil/SHA1.h +8 -26
- data/ext/ice/cpp/include/IceUtil/ScannerConfig.h +5 -5
- data/ext/ice/cpp/include/IceUtil/ScopedArray.h +1 -1
- data/ext/ice/cpp/include/IceUtil/Shared.h +3 -37
- data/ext/ice/cpp/include/IceUtil/StringUtil.h +1 -1
- data/ext/ice/cpp/include/IceUtil/Thread.h +1 -1
- data/ext/ice/cpp/include/IceUtil/ThreadException.h +1 -1
- data/ext/ice/cpp/include/IceUtil/Time.h +1 -1
- data/ext/ice/cpp/include/IceUtil/Timer.h +1 -1
- data/ext/ice/cpp/include/IceUtil/UUID.h +1 -1
- data/ext/ice/cpp/include/IceUtil/UndefSysMacros.h +1 -1
- data/ext/ice/cpp/include/IceUtil/UniquePtr.h +1 -1
- data/ext/ice/cpp/include/Slice/CPlusPlusUtil.h +7 -6
- data/ext/ice/cpp/include/Slice/Checksum.h +1 -1
- data/ext/ice/cpp/include/Slice/CsUtil.h +1 -1
- data/ext/ice/cpp/include/Slice/DotNetNames.h +1 -1
- data/ext/ice/cpp/include/Slice/FileTracker.h +1 -1
- data/ext/ice/cpp/include/Slice/JavaUtil.h +3 -1
- data/ext/ice/cpp/include/Slice/ObjCUtil.h +127 -0
- data/ext/ice/cpp/include/Slice/PHPUtil.h +1 -1
- data/ext/ice/cpp/include/Slice/Parser.h +18 -12
- data/ext/ice/cpp/include/Slice/Preprocessor.h +6 -4
- data/ext/ice/cpp/include/Slice/PythonUtil.h +1 -1
- data/ext/ice/cpp/include/Slice/RubyUtil.h +1 -1
- data/ext/ice/cpp/include/Slice/Util.h +20 -2
- data/ext/ice/cpp/src/Ice/ACM.cpp +1 -1
- data/ext/ice/cpp/src/Ice/ACM.h +1 -1
- data/ext/ice/cpp/src/Ice/Acceptor.cpp +1 -1
- data/ext/ice/cpp/src/Ice/Acceptor.h +1 -1
- data/ext/ice/cpp/src/Ice/AcceptorF.h +1 -1
- data/ext/ice/cpp/src/Ice/AsyncResult.cpp +1 -1
- data/ext/ice/cpp/src/Ice/Base64.cpp +1 -1
- data/ext/ice/cpp/src/Ice/Base64.h +1 -1
- data/ext/ice/cpp/src/Ice/BasicStream.cpp +7 -5
- data/ext/ice/cpp/src/Ice/BatchRequestQueue.cpp +227 -0
- data/ext/ice/cpp/src/Ice/BatchRequestQueue.h +59 -0
- data/ext/ice/cpp/src/Ice/Buffer.cpp +3 -3
- data/ext/ice/cpp/src/Ice/BuiltinSequences.cpp +10 -4
- data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.cpp +82 -282
- data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.h +8 -21
- data/ext/ice/cpp/src/Ice/Communicator.cpp +11 -5
- data/ext/ice/cpp/src/Ice/CommunicatorF.cpp +10 -4
- data/ext/ice/cpp/src/Ice/CommunicatorI.cpp +6 -6
- data/ext/ice/cpp/src/Ice/CommunicatorI.h +1 -1
- data/ext/ice/cpp/src/Ice/ConnectRequestHandler.cpp +42 -180
- data/ext/ice/cpp/src/Ice/ConnectRequestHandler.h +10 -19
- data/ext/ice/cpp/src/Ice/ConnectRequestHandlerF.h +25 -0
- data/ext/ice/cpp/src/Ice/Connection.cpp +17 -11
- data/ext/ice/cpp/src/Ice/ConnectionF.cpp +10 -4
- data/ext/ice/cpp/src/Ice/ConnectionFactory.cpp +137 -51
- data/ext/ice/cpp/src/Ice/ConnectionFactory.h +18 -8
- data/ext/ice/cpp/src/Ice/ConnectionI.cpp +105 -391
- data/ext/ice/cpp/src/Ice/ConnectionI.h +25 -23
- data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.cpp +5 -29
- data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.h +3 -8
- data/ext/ice/cpp/src/Ice/Connector.cpp +1 -1
- data/ext/ice/cpp/src/Ice/Connector.h +1 -1
- data/ext/ice/cpp/src/Ice/ConnectorF.h +1 -1
- data/ext/ice/cpp/src/Ice/Current.cpp +10 -4
- data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.cpp +1 -1
- data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.h +1 -1
- data/ext/ice/cpp/src/Ice/DefaultsAndOverridesF.h +1 -1
- data/ext/ice/cpp/src/Ice/DeprecatedStringConverter.cpp +1 -1
- data/ext/ice/cpp/src/Ice/DispatchInterceptor.cpp +1 -1
- data/ext/ice/cpp/src/Ice/DynamicLibrary.cpp +1 -1
- data/ext/ice/cpp/src/Ice/Endpoint.cpp +17 -11
- data/ext/ice/cpp/src/Ice/EndpointF.cpp +10 -4
- data/ext/ice/cpp/src/Ice/EndpointFactory.cpp +19 -1
- data/ext/ice/cpp/src/Ice/EndpointFactory.h +13 -1
- data/ext/ice/cpp/src/Ice/EndpointFactoryF.h +1 -1
- data/ext/ice/cpp/src/Ice/EndpointFactoryManager.cpp +1 -1
- data/ext/ice/cpp/src/Ice/EndpointFactoryManager.h +1 -1
- data/ext/ice/cpp/src/Ice/EndpointFactoryManagerF.h +1 -1
- data/ext/ice/cpp/src/Ice/EndpointI.cpp +1 -1
- data/ext/ice/cpp/src/Ice/EndpointI.h +33 -1
- data/ext/ice/cpp/src/Ice/EndpointIF.h +1 -1
- data/ext/ice/cpp/src/Ice/EndpointTypes.cpp +10 -4
- data/ext/ice/cpp/src/Ice/EventHandler.cpp +1 -1
- data/ext/ice/cpp/src/Ice/EventHandler.h +4 -1
- data/ext/ice/cpp/src/Ice/EventHandlerF.h +1 -1
- data/ext/ice/cpp/src/Ice/Exception.cpp +20 -11
- data/ext/ice/cpp/src/Ice/FacetMap.cpp +10 -4
- data/ext/ice/cpp/src/Ice/FactoryTable.cpp +1 -1
- data/ext/ice/cpp/src/Ice/FactoryTableInit.cpp +2 -2
- data/ext/ice/cpp/src/Ice/GCObject.cpp +1 -1
- data/ext/ice/cpp/src/Ice/HashUtil.h +1 -1
- data/ext/ice/cpp/src/Ice/HttpParser.cpp +27 -15
- data/ext/ice/cpp/src/Ice/HttpParser.h +4 -6
- data/ext/ice/cpp/src/Ice/IPEndpointI.cpp +7 -1
- data/ext/ice/cpp/src/Ice/IPEndpointI.h +2 -1
- data/ext/ice/cpp/src/Ice/IPEndpointIF.h +1 -1
- data/ext/ice/cpp/src/Ice/Identity.cpp +11 -5
- data/ext/ice/cpp/src/Ice/ImplicitContext.cpp +11 -5
- data/ext/ice/cpp/src/Ice/ImplicitContextF.cpp +10 -4
- data/ext/ice/cpp/src/Ice/ImplicitContextI.cpp +1 -1
- data/ext/ice/cpp/src/Ice/ImplicitContextI.h +1 -1
- data/ext/ice/cpp/src/Ice/Incoming.cpp +22 -20
- data/ext/ice/cpp/src/Ice/IncomingAsync.cpp +1 -1
- data/ext/ice/cpp/src/Ice/IncomingRequest.h +1 -1
- data/ext/ice/cpp/src/Ice/Initialize.cpp +31 -5
- data/ext/ice/cpp/src/Ice/Instance.cpp +102 -59
- data/ext/ice/cpp/src/Ice/Instance.h +28 -2
- data/ext/ice/cpp/src/Ice/Instrumentation.cpp +20 -14
- data/ext/ice/cpp/src/Ice/InstrumentationF.cpp +10 -4
- data/ext/ice/cpp/src/Ice/InstrumentationI.cpp +1 -1
- data/ext/ice/cpp/src/Ice/InstrumentationI.h +1 -1
- data/ext/ice/cpp/src/Ice/LocalException.cpp +10 -4
- data/ext/ice/cpp/src/Ice/LocalObject.cpp +1 -1
- data/ext/ice/cpp/src/Ice/Locator.cpp +83 -77
- data/ext/ice/cpp/src/Ice/LocatorF.cpp +10 -4
- data/ext/ice/cpp/src/Ice/LocatorInfo.cpp +77 -69
- data/ext/ice/cpp/src/Ice/LocatorInfo.h +1 -1
- data/ext/ice/cpp/src/Ice/LocatorInfoF.h +1 -1
- data/ext/ice/cpp/src/Ice/Logger.cpp +11 -5
- data/ext/ice/cpp/src/Ice/LoggerAdminI.cpp +1 -1
- data/ext/ice/cpp/src/Ice/LoggerAdminI.h +1 -1
- data/ext/ice/cpp/src/Ice/LoggerF.cpp +10 -4
- data/ext/ice/cpp/src/Ice/LoggerI.cpp +10 -8
- data/ext/ice/cpp/src/Ice/LoggerI.h +1 -1
- data/ext/ice/cpp/src/Ice/LoggerUtil.cpp +2 -2
- data/ext/ice/cpp/src/Ice/Metrics.cpp +122 -116
- data/ext/ice/cpp/src/Ice/MetricsAdminI.cpp +1 -1
- data/ext/ice/cpp/src/Ice/MetricsObserverI.cpp +1 -1
- data/ext/ice/cpp/src/Ice/Network.cpp +63 -19
- data/ext/ice/cpp/src/Ice/Network.h +10 -3
- data/ext/ice/cpp/src/Ice/NetworkF.h +1 -1
- data/ext/ice/cpp/src/Ice/NetworkProxy.cpp +1 -1
- data/ext/ice/cpp/src/Ice/NetworkProxy.h +1 -1
- data/ext/ice/cpp/src/Ice/NetworkProxyF.h +1 -1
- data/ext/ice/cpp/src/Ice/Object.cpp +1 -1
- data/ext/ice/cpp/src/Ice/ObjectAdapter.cpp +11 -5
- data/ext/ice/cpp/src/Ice/ObjectAdapterF.cpp +10 -4
- data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.cpp +9 -9
- data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.h +2 -2
- data/ext/ice/cpp/src/Ice/ObjectAdapterI.cpp +3 -3
- data/ext/ice/cpp/src/Ice/ObjectAdapterI.h +5 -5
- data/ext/ice/cpp/src/Ice/ObjectFactory.cpp +11 -5
- data/ext/ice/cpp/src/Ice/ObjectFactoryF.cpp +10 -4
- data/ext/ice/cpp/src/Ice/ObjectFactoryManager.cpp +9 -10
- data/ext/ice/cpp/src/Ice/ObjectFactoryManager.h +1 -1
- data/ext/ice/cpp/src/Ice/ObserverHelper.cpp +1 -1
- data/ext/ice/cpp/src/Ice/OpaqueEndpointI.cpp +6 -5
- data/ext/ice/cpp/src/Ice/OpaqueEndpointI.h +1 -1
- data/ext/ice/cpp/src/Ice/Outgoing.cpp +209 -254
- data/ext/ice/cpp/src/Ice/OutgoingAsync.cpp +120 -106
- data/ext/ice/cpp/src/Ice/Plugin.cpp +12 -6
- data/ext/ice/cpp/src/Ice/PluginF.cpp +10 -4
- data/ext/ice/cpp/src/Ice/PluginManagerI.cpp +21 -2
- data/ext/ice/cpp/src/Ice/Process.cpp +25 -19
- data/ext/ice/cpp/src/Ice/ProcessF.cpp +10 -4
- data/ext/ice/cpp/src/Ice/Properties.cpp +11 -5
- data/ext/ice/cpp/src/Ice/PropertiesAdmin.cpp +39 -33
- data/ext/ice/cpp/src/Ice/PropertiesAdminI.cpp +1 -1
- data/ext/ice/cpp/src/Ice/PropertiesAdminI.h +1 -1
- data/ext/ice/cpp/src/Ice/PropertiesF.cpp +10 -4
- data/ext/ice/cpp/src/Ice/PropertiesI.cpp +1 -1
- data/ext/ice/cpp/src/Ice/PropertiesI.h +1 -1
- data/ext/ice/cpp/src/Ice/PropertyNames.cpp +12 -8
- data/ext/ice/cpp/src/Ice/PropertyNames.h +2 -2
- data/ext/ice/cpp/src/Ice/Protocol.cpp +7 -7
- data/ext/ice/cpp/src/Ice/ProtocolInstance.cpp +9 -6
- data/ext/ice/cpp/src/Ice/ProtocolInstance.h +25 -7
- data/ext/ice/cpp/src/Ice/ProtocolInstanceF.h +1 -1
- data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.cpp +1 -1
- data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.h +1 -1
- data/ext/ice/cpp/src/Ice/ProtocolPluginFacadeF.h +1 -1
- data/ext/ice/cpp/src/Ice/Proxy.cpp +32 -13
- data/ext/ice/cpp/src/Ice/ProxyFactory.cpp +1 -1
- data/ext/ice/cpp/src/Ice/ProxyFactory.h +1 -1
- data/ext/ice/cpp/src/Ice/Reference.cpp +101 -86
- data/ext/ice/cpp/src/Ice/Reference.h +16 -9
- data/ext/ice/cpp/src/Ice/ReferenceFactory.cpp +1 -1
- data/ext/ice/cpp/src/Ice/ReferenceFactory.h +1 -1
- data/ext/ice/cpp/src/Ice/ReferenceFactoryF.h +1 -1
- data/ext/ice/cpp/src/Ice/RegisterPlugins.cpp +28 -0
- data/ext/ice/cpp/src/Ice/RegisterPlugins.h +25 -0
- data/ext/ice/cpp/src/Ice/RemoteLogger.cpp +92 -86
- data/ext/ice/cpp/src/Ice/ReplyStatus.h +1 -1
- data/ext/ice/cpp/src/Ice/RequestHandler.cpp +1 -1
- data/ext/ice/cpp/src/Ice/RequestHandler.h +4 -8
- data/ext/ice/cpp/src/Ice/RequestHandlerFactory.cpp +24 -16
- data/ext/ice/cpp/src/Ice/RequestHandlerFactory.h +5 -4
- data/ext/ice/cpp/src/Ice/ResponseHandler.cpp +1 -1
- data/ext/ice/cpp/src/Ice/ResponseHandler.h +3 -3
- data/ext/ice/cpp/src/Ice/RetryQueue.cpp +16 -5
- data/ext/ice/cpp/src/Ice/RetryQueue.h +3 -2
- data/ext/ice/cpp/src/Ice/RetryQueueF.h +1 -1
- data/ext/ice/cpp/src/Ice/Router.cpp +27 -21
- data/ext/ice/cpp/src/Ice/RouterF.cpp +10 -4
- data/ext/ice/cpp/src/Ice/RouterInfo.cpp +1 -1
- data/ext/ice/cpp/src/Ice/RouterInfo.h +1 -1
- data/ext/ice/cpp/src/Ice/RouterInfoF.h +1 -1
- data/ext/ice/cpp/src/Ice/Selector.cpp +480 -1
- data/ext/ice/cpp/src/Ice/Selector.h +130 -1
- data/ext/ice/cpp/src/Ice/ServantLocator.cpp +11 -5
- data/ext/ice/cpp/src/Ice/ServantLocatorF.cpp +10 -4
- data/ext/ice/cpp/src/Ice/ServantManager.cpp +29 -23
- data/ext/ice/cpp/src/Ice/ServantManager.h +1 -1
- data/ext/ice/cpp/src/Ice/SharedContext.h +1 -1
- data/ext/ice/cpp/src/Ice/SliceChecksumDict.cpp +10 -4
- data/ext/ice/cpp/src/Ice/SliceChecksums.cpp +1 -1
- data/ext/ice/cpp/src/Ice/SlicedData.cpp +1 -1
- data/ext/ice/cpp/src/Ice/Stream.cpp +1 -1
- data/ext/ice/cpp/src/Ice/StreamI.cpp +1 -1
- data/ext/ice/cpp/src/Ice/StreamI.h +1 -1
- data/ext/ice/cpp/src/Ice/StreamSocket.cpp +30 -22
- data/ext/ice/cpp/src/Ice/StreamSocket.h +7 -4
- data/ext/ice/cpp/src/Ice/StringConverterPlugin.cpp +1 -1
- data/ext/ice/cpp/src/Ice/SysLoggerI.cpp +1 -1
- data/ext/ice/cpp/src/Ice/SysLoggerI.h +1 -1
- data/ext/ice/cpp/src/Ice/TcpAcceptor.cpp +8 -8
- data/ext/ice/cpp/src/Ice/TcpAcceptor.h +1 -1
- data/ext/ice/cpp/src/Ice/TcpConnector.cpp +1 -1
- data/ext/ice/cpp/src/Ice/TcpConnector.h +1 -1
- data/ext/ice/cpp/src/Ice/TcpEndpointI.cpp +21 -38
- data/ext/ice/cpp/src/Ice/TcpEndpointI.h +5 -6
- data/ext/ice/cpp/src/Ice/TcpTransceiver.cpp +29 -4
- data/ext/ice/cpp/src/Ice/TcpTransceiver.h +7 -2
- data/ext/ice/cpp/src/Ice/ThreadPool.cpp +2 -2
- data/ext/ice/cpp/src/Ice/ThreadPool.h +1 -1
- data/ext/ice/cpp/src/Ice/TraceLevels.cpp +2 -2
- data/ext/ice/cpp/src/Ice/TraceLevels.h +1 -1
- data/ext/ice/cpp/src/Ice/TraceLevelsF.h +1 -1
- data/ext/ice/cpp/src/Ice/TraceUtil.cpp +16 -7
- data/ext/ice/cpp/src/Ice/TraceUtil.h +1 -1
- data/ext/ice/cpp/src/Ice/Transceiver.cpp +1 -1
- data/ext/ice/cpp/src/Ice/Transceiver.h +2 -1
- data/ext/ice/cpp/src/Ice/TransceiverF.h +1 -1
- data/ext/ice/cpp/src/Ice/UdpConnector.cpp +1 -1
- data/ext/ice/cpp/src/Ice/UdpConnector.h +1 -1
- data/ext/ice/cpp/src/Ice/UdpEndpointI.cpp +13 -39
- data/ext/ice/cpp/src/Ice/UdpEndpointI.h +2 -5
- data/ext/ice/cpp/src/Ice/UdpTransceiver.cpp +46 -10
- data/ext/ice/cpp/src/Ice/UdpTransceiver.h +3 -2
- data/ext/ice/cpp/src/Ice/Version.cpp +12 -6
- data/ext/ice/cpp/src/Ice/WSAcceptor.cpp +1 -1
- data/ext/ice/cpp/src/Ice/WSAcceptor.h +1 -1
- data/ext/ice/cpp/src/Ice/WSConnector.cpp +1 -1
- data/ext/ice/cpp/src/Ice/WSConnector.h +1 -1
- data/ext/ice/cpp/src/Ice/WSEndpoint.cpp +6 -38
- data/ext/ice/cpp/src/Ice/WSEndpoint.h +12 -1
- data/ext/ice/cpp/src/Ice/WSTransceiver.cpp +31 -35
- data/ext/ice/cpp/src/Ice/WSTransceiver.h +13 -1
- data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.cpp +66 -60
- data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.h +106 -100
- data/ext/ice/cpp/src/IceDiscovery/LocatorI.cpp +1 -1
- data/ext/ice/cpp/src/IceDiscovery/LocatorI.h +1 -1
- data/ext/ice/cpp/src/IceDiscovery/LookupI.cpp +76 -36
- data/ext/ice/cpp/src/IceDiscovery/LookupI.h +1 -1
- data/ext/ice/cpp/src/IceDiscovery/PluginI.cpp +19 -6
- data/ext/ice/cpp/src/IceDiscovery/PluginI.h +1 -1
- data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.cpp +452 -0
- data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.h +732 -0
- data/ext/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +520 -0
- data/ext/ice/cpp/src/IceLocatorDiscovery/PluginI.h +36 -0
- data/ext/ice/cpp/src/IceSSL/AcceptorI.cpp +8 -8
- data/ext/ice/cpp/src/IceSSL/AcceptorI.h +1 -1
- data/ext/ice/cpp/src/IceSSL/Certificate.cpp +49 -47
- data/ext/ice/cpp/src/IceSSL/ConnectionInfo.cpp +13 -5
- data/ext/ice/cpp/src/IceSSL/ConnectorI.cpp +1 -1
- data/ext/ice/cpp/src/IceSSL/ConnectorI.h +1 -1
- data/ext/ice/cpp/src/IceSSL/EndpointI.cpp +10 -38
- data/ext/ice/cpp/src/IceSSL/EndpointI.h +4 -3
- data/ext/ice/cpp/src/IceSSL/EndpointInfo.cpp +13 -5
- data/ext/ice/cpp/src/IceSSL/Instance.cpp +2 -2
- data/ext/ice/cpp/src/IceSSL/Instance.h +1 -1
- data/ext/ice/cpp/src/IceSSL/InstanceF.h +1 -1
- data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +107 -111
- data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +130 -47
- data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.h +11 -3
- data/ext/ice/cpp/src/IceSSL/PluginI.cpp +8 -14
- data/ext/ice/cpp/src/IceSSL/PluginI.h +1 -1
- data/ext/ice/cpp/src/IceSSL/RFC2253.cpp +1 -1
- data/ext/ice/cpp/src/IceSSL/RFC2253.h +1 -1
- data/ext/ice/cpp/src/IceSSL/SChannelEngine.cpp +238 -156
- data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.cpp +93 -66
- data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.h +7 -3
- data/ext/ice/cpp/src/IceSSL/SSLEngine.cpp +2 -2
- data/ext/ice/cpp/src/IceSSL/SSLEngine.h +32 -35
- data/ext/ice/cpp/src/IceSSL/SSLEngineF.h +1 -1
- data/ext/ice/cpp/src/IceSSL/SecureTransportEngine.cpp +244 -360
- data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +59 -29
- data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.h +8 -4
- data/ext/ice/cpp/src/IceSSL/TrustManager.cpp +1 -1
- data/ext/ice/cpp/src/IceSSL/TrustManager.h +1 -1
- data/ext/ice/cpp/src/IceSSL/TrustManagerF.h +1 -1
- data/ext/ice/cpp/src/IceSSL/Util.cpp +427 -620
- data/ext/ice/cpp/src/IceSSL/Util.h +72 -15
- data/ext/ice/cpp/src/IceUtil/ArgVector.cpp +1 -1
- data/ext/ice/cpp/src/IceUtil/ArgVector.h +1 -1
- data/ext/ice/cpp/src/IceUtil/Cond.cpp +1 -1
- data/ext/ice/cpp/src/IceUtil/ConvertUTF.cpp +1 -1
- data/ext/ice/cpp/src/IceUtil/ConvertUTF.h +1 -1
- data/ext/ice/cpp/src/IceUtil/CountDownLatch.cpp +1 -1
- data/ext/ice/cpp/src/IceUtil/CtrlCHandler.cpp +1 -1
- data/ext/ice/cpp/src/IceUtil/Exception.cpp +105 -96
- data/ext/ice/cpp/src/IceUtil/FileUtil.cpp +2 -1
- data/ext/ice/cpp/src/IceUtil/FileUtil.h +9 -1
- data/ext/ice/cpp/src/IceUtil/InputUtil.cpp +1 -1
- data/ext/ice/cpp/src/IceUtil/MutexProtocol.cpp +1 -1
- data/ext/ice/cpp/src/IceUtil/Options.cpp +1 -1
- data/ext/ice/cpp/src/IceUtil/OutputUtil.cpp +12 -25
- data/ext/ice/cpp/src/IceUtil/Random.cpp +1 -1
- data/ext/ice/cpp/src/IceUtil/RecMutex.cpp +1 -1
- data/ext/ice/cpp/src/IceUtil/SHA1.cpp +72 -10
- data/ext/ice/cpp/src/IceUtil/Shared.cpp +3 -132
- data/ext/ice/cpp/src/IceUtil/StopWatch.h +1 -1
- data/ext/ice/cpp/src/IceUtil/StringConverter.cpp +1 -1
- data/ext/ice/cpp/src/IceUtil/StringUtil.cpp +1 -1
- data/ext/ice/cpp/src/IceUtil/Thread.cpp +16 -1
- data/ext/ice/cpp/src/IceUtil/ThreadException.cpp +1 -1
- data/ext/ice/cpp/src/IceUtil/Time.cpp +1 -1
- data/ext/ice/cpp/src/IceUtil/Timer.cpp +1 -1
- data/ext/ice/cpp/src/IceUtil/UUID.cpp +1 -1
- data/ext/ice/cpp/src/IceUtil/Unicode.cpp +1 -1
- data/ext/ice/cpp/src/IceUtil/Unicode.h +1 -1
- data/ext/ice/cpp/src/Slice/CPlusPlusUtil.cpp +62 -55
- data/ext/ice/cpp/src/Slice/Checksum.cpp +1 -1
- data/ext/ice/cpp/src/Slice/CsUtil.cpp +8 -29
- data/ext/ice/cpp/src/Slice/DotNetNames.cpp +1 -1
- data/ext/ice/cpp/src/Slice/FileTracker.cpp +1 -1
- data/ext/ice/cpp/src/Slice/Grammar.cpp +1 -1
- data/ext/ice/cpp/src/Slice/GrammarUtil.h +1 -1
- data/ext/ice/cpp/src/Slice/JavaUtil.cpp +145 -172
- data/ext/ice/cpp/src/Slice/MD5.cpp +1 -1
- data/ext/ice/cpp/src/Slice/MD5.h +1 -1
- data/ext/ice/cpp/src/Slice/ObjCUtil.cpp +1310 -0
- data/ext/ice/cpp/src/Slice/PHPUtil.cpp +1 -1
- data/ext/ice/cpp/src/Slice/Parser.cpp +65 -187
- data/ext/ice/cpp/src/Slice/Preprocessor.cpp +61 -9
- data/ext/ice/cpp/src/Slice/Python.cpp +36 -3
- data/ext/ice/cpp/src/Slice/PythonUtil.cpp +10 -10
- data/ext/ice/cpp/src/Slice/Ruby.cpp +34 -3
- data/ext/ice/cpp/src/Slice/RubyUtil.cpp +8 -7
- data/ext/ice/cpp/src/Slice/Scanner.cpp +1 -1
- data/ext/ice/cpp/src/Slice/Util.cpp +137 -30
- data/ext/ice/mcpp/LICENSE +29 -0
- data/ext/ice/mcpp/Makefile +60 -0
- data/ext/ice/mcpp/Makefile.mak +46 -0
- data/ext/ice/mcpp/README.md +30 -0
- data/ext/ice/mcpp/config.h +89 -0
- data/ext/ice/mcpp/configed.H +1 -146
- data/ext/ice/mcpp/directive.c +115 -410
- data/ext/ice/mcpp/eval.c +38 -377
- data/ext/ice/mcpp/expand.c +155 -852
- data/ext/ice/mcpp/internal.H +10 -44
- data/ext/ice/mcpp/main.c +6 -345
- data/ext/ice/mcpp/mbchar.c +17 -654
- data/ext/ice/mcpp/mcpp.gyp +62 -0
- data/ext/ice/mcpp/support.c +116 -943
- data/ext/ice/mcpp/system.H +0 -23
- data/ext/ice/mcpp/system.c +81 -2321
- data/ice.gemspec +3 -4
- data/lib/Glacier2.rb +1 -1
- data/lib/Glacier2/Metrics.rb +2 -2
- data/lib/Glacier2/PermissionsVerifier.rb +2 -2
- data/lib/Glacier2/PermissionsVerifierF.rb +2 -2
- data/lib/Glacier2/Router.rb +2 -2
- data/lib/Glacier2/RouterF.rb +2 -2
- data/lib/Glacier2/SSLInfo.rb +2 -2
- data/lib/Glacier2/Session.rb +2 -2
- data/lib/Ice.rb +1 -1
- data/lib/Ice/BuiltinSequences.rb +2 -2
- data/lib/Ice/Communicator.rb +2 -2
- data/lib/Ice/CommunicatorF.rb +2 -2
- data/lib/Ice/Connection.rb +26 -14
- data/lib/Ice/ConnectionF.rb +2 -2
- data/lib/Ice/Current.rb +2 -2
- data/lib/Ice/Endpoint.rb +4 -2
- data/lib/Ice/EndpointF.rb +2 -2
- data/lib/Ice/EndpointTypes.rb +2 -2
- data/lib/Ice/FacetMap.rb +2 -2
- data/lib/Ice/Identity.rb +2 -2
- data/lib/Ice/ImplicitContext.rb +2 -2
- data/lib/Ice/ImplicitContextF.rb +2 -2
- data/lib/Ice/Instrumentation.rb +2 -2
- data/lib/Ice/InstrumentationF.rb +2 -2
- data/lib/Ice/LocalException.rb +2 -2
- data/lib/Ice/Locator.rb +2 -2
- data/lib/Ice/LocatorF.rb +2 -2
- data/lib/Ice/Logger.rb +2 -2
- data/lib/Ice/LoggerF.rb +2 -2
- data/lib/Ice/Metrics.rb +2 -2
- data/lib/Ice/ObjectAdapterF.rb +2 -2
- data/lib/Ice/ObjectFactory.rb +2 -2
- data/lib/Ice/ObjectFactoryF.rb +2 -2
- data/lib/Ice/Plugin.rb +2 -2
- data/lib/Ice/PluginF.rb +2 -2
- data/lib/Ice/Process.rb +2 -2
- data/lib/Ice/ProcessF.rb +2 -2
- data/lib/Ice/Properties.rb +2 -2
- data/lib/Ice/PropertiesAdmin.rb +2 -2
- data/lib/Ice/PropertiesF.rb +2 -2
- data/lib/Ice/Router.rb +2 -2
- data/lib/Ice/RouterF.rb +2 -2
- data/lib/Ice/SliceChecksumDict.rb +2 -2
- data/lib/Ice/Version.rb +2 -2
- data/lib/IceBox.rb +1 -1
- data/lib/IceBox/IceBox.rb +2 -2
- data/lib/IceGrid.rb +1 -1
- data/lib/IceGrid/Admin.rb +2 -2
- data/lib/IceGrid/Descriptor.rb +2 -2
- data/lib/IceGrid/Exception.rb +2 -2
- data/lib/IceGrid/FileParser.rb +2 -2
- data/lib/IceGrid/Locator.rb +2 -2
- data/lib/IceGrid/Observer.rb +2 -2
- data/lib/IceGrid/Query.rb +2 -2
- data/lib/IceGrid/Registry.rb +2 -2
- data/lib/IceGrid/Session.rb +2 -2
- data/lib/IceGrid/UserAccountMapper.rb +2 -2
- data/lib/IcePatch2.rb +1 -1
- data/lib/IcePatch2/FileInfo.rb +52 -2
- data/lib/IcePatch2/FileServer.rb +33 -4
- data/lib/IceStorm.rb +1 -1
- data/lib/IceStorm/IceStorm.rb +2 -2
- data/lib/IceStorm/Metrics.rb +2 -2
- data/slice/Freeze/BackgroundSaveEvictor.ice +2 -2
- data/slice/Freeze/CatalogData.ice +2 -2
- data/slice/Freeze/Connection.ice +2 -2
- data/slice/Freeze/ConnectionF.ice +2 -2
- data/slice/Freeze/DB.ice +2 -2
- data/slice/Freeze/Evictor.ice +2 -2
- data/slice/Freeze/EvictorF.ice +2 -2
- data/slice/Freeze/EvictorStorage.ice +2 -2
- data/slice/Freeze/Exception.ice +2 -2
- data/slice/Freeze/Transaction.ice +2 -2
- data/slice/Freeze/TransactionalEvictor.ice +2 -2
- data/slice/Glacier2/Metrics.ice +7 -6
- data/slice/Glacier2/PermissionsVerifier.ice +4 -3
- data/slice/Glacier2/PermissionsVerifierF.ice +3 -2
- data/slice/Glacier2/Router.ice +4 -3
- data/slice/Glacier2/RouterF.ice +3 -2
- data/slice/Glacier2/SSLInfo.ice +3 -2
- data/slice/Glacier2/Session.ice +12 -11
- data/slice/Ice/BuiltinSequences.ice +4 -3
- data/slice/Ice/Communicator.ice +22 -25
- data/slice/Ice/CommunicatorF.ice +3 -2
- data/slice/Ice/Connection.ice +39 -11
- data/slice/Ice/ConnectionF.ice +3 -2
- data/slice/Ice/Current.ice +4 -3
- data/slice/Ice/Endpoint.ice +11 -3
- data/slice/Ice/EndpointF.ice +3 -2
- data/slice/Ice/EndpointTypes.ice +3 -2
- data/slice/Ice/FacetMap.ice +3 -2
- data/slice/Ice/Identity.ice +3 -2
- data/slice/Ice/ImplicitContext.ice +3 -2
- data/slice/Ice/ImplicitContextF.ice +3 -2
- data/slice/Ice/Instrumentation.ice +4 -2
- data/slice/Ice/InstrumentationF.ice +4 -2
- data/slice/Ice/LocalException.ice +29 -10
- data/slice/Ice/Locator.ice +5 -3
- data/slice/Ice/LocatorF.ice +3 -2
- data/slice/Ice/Logger.ice +3 -2
- data/slice/Ice/LoggerF.ice +3 -2
- data/slice/Ice/Metrics.ice +15 -14
- data/slice/Ice/ObjectAdapter.ice +5 -4
- data/slice/Ice/ObjectAdapterF.ice +3 -2
- data/slice/Ice/ObjectFactory.ice +3 -2
- data/slice/Ice/ObjectFactoryF.ice +3 -2
- data/slice/Ice/Plugin.ice +3 -2
- data/slice/Ice/PluginF.ice +3 -2
- data/slice/Ice/Process.ice +3 -2
- data/slice/Ice/ProcessF.ice +3 -2
- data/slice/Ice/Properties.ice +3 -2
- data/slice/Ice/PropertiesAdmin.ice +3 -2
- data/slice/Ice/PropertiesF.ice +3 -2
- data/slice/Ice/RemoteLogger.ice +3 -2
- data/slice/Ice/Router.ice +3 -2
- data/slice/Ice/RouterF.ice +3 -2
- data/slice/Ice/ServantLocator.ice +3 -2
- data/slice/Ice/ServantLocatorF.ice +3 -2
- data/slice/Ice/SliceChecksumDict.ice +3 -2
- data/slice/Ice/Version.ice +3 -2
- data/slice/IceBox/IceBox.ice +2 -2
- data/slice/IceDiscovery/IceDiscovery.ice +2 -2
- data/slice/IceGrid/Admin.ice +49 -48
- data/slice/IceGrid/Descriptor.ice +3 -2
- data/slice/IceGrid/Exception.ice +6 -5
- data/slice/IceGrid/FileParser.ice +4 -3
- data/slice/IceGrid/Locator.ice +4 -3
- data/slice/IceGrid/Observer.ice +28 -27
- data/slice/IceGrid/PluginFacade.ice +3 -2
- data/slice/IceGrid/Query.ice +3 -2
- data/slice/IceGrid/Registry.ice +4 -3
- data/slice/IceGrid/Session.ice +9 -8
- data/slice/IceGrid/UserAccountMapper.ice +4 -3
- data/slice/{IceGrid/Discovery.ice → IceLocatorDiscovery/IceLocatorDiscovery.ice} +12 -14
- data/slice/IcePatch2/FileInfo.ice +31 -2
- data/slice/IcePatch2/FileServer.ice +63 -5
- data/slice/IceSSL/ConnectionInfo.ice +17 -2
- data/slice/IceSSL/EndpointInfo.ice +21 -3
- data/slice/IceStorm/IceStorm.ice +3 -2
- data/slice/IceStorm/Metrics.ice +4 -3
- metadata +27 -23
- data/ext/ice/cpp/include/Ice/Makefile +0 -26
- data/ext/ice/cpp/include/IceSSL/Makefile +0 -26
- data/ext/ice/cpp/include/IceUtil/Makefile +0 -26
- data/ext/ice/cpp/include/Slice/Makefile +0 -26
- data/ext/ice/cpp/src/Ice/Application.cpp +0 -760
- data/ext/ice/cpp/src/Ice/EventLoggerMsg.h +0 -53
- data/ext/ice/cpp/src/Ice/Makefile +0 -190
- data/ext/ice/cpp/src/Ice/Service.cpp +0 -1897
- data/ext/ice/cpp/src/IceDiscovery/Makefile +0 -61
- data/ext/ice/cpp/src/IceSSL/Makefile +0 -82
- data/ext/ice/cpp/src/IceUtil/Makefile +0 -68
- data/ext/ice/cpp/src/Slice/Makefile +0 -65
- data/ext/ice/mcpp/config.h.Darwin +0 -227
- data/ext/ice/mcpp/config.h.Linux +0 -227
- data/ext/ice/mcpp/config.h.MINGW +0 -7
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// **********************************************************************
|
|
2
2
|
//
|
|
3
|
-
// Copyright (c) 2003-
|
|
3
|
+
// Copyright (c) 2003-2015 ZeroC, Inc. All rights reserved.
|
|
4
4
|
//
|
|
5
5
|
// This copy of Ice is licensed to you under the terms described in the
|
|
6
6
|
// ICE_LICENSE file included in this distribution.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// **********************************************************************
|
|
2
2
|
//
|
|
3
|
-
// Copyright (c) 2003-
|
|
3
|
+
// Copyright (c) 2003-2015 ZeroC, Inc. All rights reserved.
|
|
4
4
|
//
|
|
5
5
|
// This copy of Ice is licensed to you under the terms described in the
|
|
6
6
|
// ICE_LICENSE file included in this distribution.
|
|
@@ -58,13 +58,13 @@ Init init;
|
|
|
58
58
|
class RegExp : public IceUtil::Shared
|
|
59
59
|
{
|
|
60
60
|
public:
|
|
61
|
-
|
|
61
|
+
|
|
62
62
|
RegExp(const string&);
|
|
63
63
|
~RegExp();
|
|
64
64
|
bool match(const string&);
|
|
65
|
-
|
|
65
|
+
|
|
66
66
|
private:
|
|
67
|
-
|
|
67
|
+
|
|
68
68
|
regex_t _preg;
|
|
69
69
|
};
|
|
70
70
|
typedef IceUtil::Handle<RegExp> RegExpPtr;
|
|
@@ -99,14 +99,14 @@ struct CipherExpression
|
|
|
99
99
|
class CiphersHelper
|
|
100
100
|
{
|
|
101
101
|
public:
|
|
102
|
-
|
|
102
|
+
|
|
103
103
|
static void initialize();
|
|
104
104
|
static SSLCipherSuite cipherForName(const string& name);
|
|
105
105
|
static string cipherName(SSLCipherSuite cipher);
|
|
106
106
|
static map<string, SSLCipherSuite> ciphers();
|
|
107
107
|
|
|
108
108
|
private:
|
|
109
|
-
|
|
109
|
+
|
|
110
110
|
static map<string, SSLCipherSuite> _ciphers;
|
|
111
111
|
};
|
|
112
112
|
|
|
@@ -237,7 +237,7 @@ CiphersHelper::initialize()
|
|
|
237
237
|
//_ciphers["DH_anon_WITH_3DES_EDE_CBC_SHA"] = TLS_DH_anon_WITH_3DES_EDE_CBC_SHA;
|
|
238
238
|
_ciphers["DH_anon_WITH_AES_128_CBC_SHA256"] = TLS_DH_anon_WITH_AES_128_CBC_SHA256;
|
|
239
239
|
_ciphers["DH_anon_WITH_AES_256_CBC_SHA256"] = TLS_DH_anon_WITH_AES_256_CBC_SHA256;
|
|
240
|
-
|
|
240
|
+
|
|
241
241
|
//
|
|
242
242
|
// Addendum from RFC 4279, TLS PSK
|
|
243
243
|
//
|
|
@@ -286,17 +286,17 @@ CiphersHelper::initialize()
|
|
|
286
286
|
_ciphers["DHE_PSK_WITH_AES_256_GCM_SHA384"] = TLS_DHE_PSK_WITH_AES_256_GCM_SHA384;
|
|
287
287
|
_ciphers["RSA_PSK_WITH_AES_128_GCM_SHA256"] = TLS_RSA_PSK_WITH_AES_128_GCM_SHA256;
|
|
288
288
|
_ciphers["RSA_PSK_WITH_AES_256_GCM_SHA384"] = TLS_RSA_PSK_WITH_AES_256_GCM_SHA384;
|
|
289
|
-
|
|
289
|
+
|
|
290
290
|
_ciphers["PSK_WITH_AES_128_CBC_SHA256"] = TLS_PSK_WITH_AES_128_CBC_SHA256;
|
|
291
291
|
_ciphers["PSK_WITH_AES_256_CBC_SHA384"] = TLS_PSK_WITH_AES_256_CBC_SHA384;
|
|
292
292
|
_ciphers["PSK_WITH_NULL_SHA256"] = TLS_PSK_WITH_NULL_SHA256;
|
|
293
293
|
_ciphers["PSK_WITH_NULL_SHA384"] = TLS_PSK_WITH_NULL_SHA384;
|
|
294
|
-
|
|
294
|
+
|
|
295
295
|
_ciphers["DHE_PSK_WITH_AES_128_CBC_SHA256"] = TLS_DHE_PSK_WITH_AES_128_CBC_SHA256;
|
|
296
296
|
_ciphers["DHE_PSK_WITH_AES_256_CBC_SHA384"] = TLS_DHE_PSK_WITH_AES_256_CBC_SHA384;
|
|
297
297
|
_ciphers["DHE_PSK_WITH_NULL_SHA256"] = TLS_DHE_PSK_WITH_NULL_SHA256;
|
|
298
298
|
_ciphers["DHE_PSK_WITH_NULL_SHA384"] = TLS_DHE_PSK_WITH_NULL_SHA384;
|
|
299
|
-
|
|
299
|
+
|
|
300
300
|
_ciphers["RSA_PSK_WITH_AES_128_CBC_SHA256"] = TLS_RSA_PSK_WITH_AES_128_CBC_SHA256;
|
|
301
301
|
_ciphers["RSA_PSK_WITH_AES_256_CBC_SHA384"] = TLS_RSA_PSK_WITH_AES_256_CBC_SHA384;
|
|
302
302
|
_ciphers["RSA_PSK_WITH_NULL_SHA256"] = TLS_RSA_PSK_WITH_NULL_SHA256;
|
|
@@ -358,23 +358,23 @@ CiphersHelper::cipherForName(const string& name)
|
|
|
358
358
|
// protocol ciphers, for example SSL_RSA_WITH_RC4_128_MD5/TLS_RSA_WITH_RC4_128_MD5
|
|
359
359
|
// are represeted by the same SSLCipherSuite value, the names return by this method
|
|
360
360
|
// doesn't include a protocol prefix.
|
|
361
|
-
//
|
|
361
|
+
//
|
|
362
362
|
string
|
|
363
363
|
CiphersHelper::cipherName(SSLCipherSuite cipher)
|
|
364
364
|
{
|
|
365
365
|
switch(cipher)
|
|
366
366
|
{
|
|
367
|
-
case SSL_NULL_WITH_NULL_NULL:
|
|
367
|
+
case SSL_NULL_WITH_NULL_NULL:
|
|
368
368
|
return "NULL_WITH_NULL_NULL";
|
|
369
369
|
case SSL_RSA_WITH_NULL_MD5:
|
|
370
370
|
return "RSA_WITH_NULL_MD5";
|
|
371
371
|
case SSL_RSA_WITH_NULL_SHA:
|
|
372
372
|
return "RSA_WITH_NULL_SHA";
|
|
373
|
-
case SSL_RSA_EXPORT_WITH_RC4_40_MD5:
|
|
373
|
+
case SSL_RSA_EXPORT_WITH_RC4_40_MD5:
|
|
374
374
|
return "RSA_EXPORT_WITH_RC4_40_MD5";
|
|
375
|
-
case SSL_RSA_WITH_RC4_128_MD5:
|
|
375
|
+
case SSL_RSA_WITH_RC4_128_MD5:
|
|
376
376
|
return "RSA_WITH_RC4_128_MD5";
|
|
377
|
-
case SSL_RSA_WITH_RC4_128_SHA:
|
|
377
|
+
case SSL_RSA_WITH_RC4_128_SHA:
|
|
378
378
|
return "RSA_WITH_RC4_128_SHA";
|
|
379
379
|
case SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5:
|
|
380
380
|
return "RSA_EXPORT_WITH_RC2_CBC_40_MD5";
|
|
@@ -382,7 +382,7 @@ CiphersHelper::cipherName(SSLCipherSuite cipher)
|
|
|
382
382
|
return "RSA_WITH_IDEA_CBC_SHA";
|
|
383
383
|
case SSL_RSA_EXPORT_WITH_DES40_CBC_SHA:
|
|
384
384
|
return "RSA_EXPORT_WITH_DES40_CBC_SHA";
|
|
385
|
-
case SSL_RSA_WITH_DES_CBC_SHA:
|
|
385
|
+
case SSL_RSA_WITH_DES_CBC_SHA:
|
|
386
386
|
return "RSA_WITH_DES_CBC_SHA";
|
|
387
387
|
case SSL_RSA_WITH_3DES_EDE_CBC_SHA:
|
|
388
388
|
return "RSA_WITH_3DES_EDE_CBC_SHA";
|
|
@@ -796,6 +796,7 @@ IceSSL::SecureTransportEngine::initialized() const
|
|
|
796
796
|
IceUtil::Mutex::Lock lock(_mutex);
|
|
797
797
|
return _initialized;
|
|
798
798
|
}
|
|
799
|
+
|
|
799
800
|
//
|
|
800
801
|
// Setup the engine.
|
|
801
802
|
//
|
|
@@ -807,385 +808,279 @@ IceSSL::SecureTransportEngine::initialize()
|
|
|
807
808
|
{
|
|
808
809
|
return;
|
|
809
810
|
}
|
|
810
|
-
|
|
811
|
+
|
|
811
812
|
SSLEngine::initialize();
|
|
812
|
-
|
|
813
|
-
const string propPrefix = "IceSSL.";
|
|
813
|
+
|
|
814
814
|
const PropertiesPtr properties = communicator()->getProperties();
|
|
815
|
-
|
|
815
|
+
|
|
816
816
|
//
|
|
817
817
|
// Check for a default directory. We look in this directory for
|
|
818
818
|
// files mentioned in the configuration.
|
|
819
819
|
//
|
|
820
|
-
string defaultDir = properties->getProperty(
|
|
821
|
-
|
|
820
|
+
const string defaultDir = properties->getProperty("IceSSL.DefaultDir");
|
|
821
|
+
|
|
822
822
|
//
|
|
823
823
|
// Open the application KeyChain or create it if the keychain doesn't exists
|
|
824
824
|
//
|
|
825
825
|
string keychainPath = properties->getProperty("IceSSL.Keychain");
|
|
826
826
|
string keychainPassword = properties->getProperty("IceSSL.KeychainPassword");
|
|
827
|
-
|
|
828
|
-
bool usePassword = !keychainPassword.empty();
|
|
829
|
-
size_t size = keychainPassword.size();
|
|
830
|
-
const char* password = usePassword ? keychainPassword.c_str() : 0;
|
|
831
|
-
|
|
832
|
-
CFDataRef hash = 0;
|
|
827
|
+
|
|
833
828
|
SecKeychainRef keychain = 0;
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
SecIdentityRef identity = 0;
|
|
837
|
-
|
|
838
|
-
try
|
|
829
|
+
OSStatus err = 0;
|
|
830
|
+
if(keychainPath.empty())
|
|
839
831
|
{
|
|
840
|
-
|
|
841
|
-
if(keychainPath.empty())
|
|
832
|
+
if((err = SecKeychainCopyDefault(&keychain)))
|
|
842
833
|
{
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
throw PluginInitializationException(__FILE__, __LINE__,
|
|
846
|
-
"IceSSL: unable to retrieve default keychain:\n" + errorToString(err));
|
|
847
|
-
}
|
|
834
|
+
throw PluginInitializationException(__FILE__, __LINE__,
|
|
835
|
+
"IceSSL: unable to retrieve default keychain:\n" + errorToString(err));
|
|
848
836
|
}
|
|
849
|
-
|
|
837
|
+
}
|
|
838
|
+
else
|
|
839
|
+
{
|
|
840
|
+
//
|
|
841
|
+
// KeyChain path is relative to the current working directory.
|
|
842
|
+
//
|
|
843
|
+
if(!IceUtilInternal::isAbsolutePath(keychainPath))
|
|
850
844
|
{
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
//
|
|
854
|
-
if(!IceUtilInternal::isAbsolutePath(keychainPath))
|
|
855
|
-
{
|
|
856
|
-
string cwd;
|
|
857
|
-
if(IceUtilInternal::getcwd(cwd) == 0)
|
|
858
|
-
{
|
|
859
|
-
keychainPath = string(cwd) + '/' + keychainPath;
|
|
860
|
-
}
|
|
861
|
-
}
|
|
862
|
-
|
|
863
|
-
if((err = SecKeychainOpen(keychainPath.c_str(), &keychain)))
|
|
845
|
+
string cwd;
|
|
846
|
+
if(IceUtilInternal::getcwd(cwd) == 0)
|
|
864
847
|
{
|
|
865
|
-
|
|
866
|
-
keychainPath + "'\n" + errorToString(err));
|
|
848
|
+
keychainPath = string(cwd) + '/' + keychainPath;
|
|
867
849
|
}
|
|
868
850
|
}
|
|
869
|
-
|
|
870
|
-
SecKeychainStatus status;
|
|
871
|
-
err = SecKeychainGetStatus(keychain, &status);
|
|
872
851
|
|
|
873
|
-
if(err
|
|
852
|
+
if((err = SecKeychainOpen(keychainPath.c_str(), &keychain)))
|
|
874
853
|
{
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
throw PluginInitializationException(__FILE__, __LINE__,
|
|
878
|
-
"IceSSL: unable to unlock keychain:\n" + errorToString(err));
|
|
879
|
-
}
|
|
854
|
+
throw PluginInitializationException(__FILE__, __LINE__, "IceSSL: unable to open keychain: `" +
|
|
855
|
+
keychainPath + "'\n" + errorToString(err));
|
|
880
856
|
}
|
|
881
|
-
|
|
857
|
+
}
|
|
858
|
+
|
|
859
|
+
UniqueRef<SecKeychainRef> k(keychain);
|
|
860
|
+
|
|
861
|
+
SecKeychainStatus status;
|
|
862
|
+
err = SecKeychainGetStatus(keychain, &status);
|
|
863
|
+
if(err == noErr)
|
|
864
|
+
{
|
|
865
|
+
const char* pass = keychainPassword.empty() ? 0 : keychainPassword.c_str();
|
|
866
|
+
if((err = SecKeychainUnlock(keychain, keychainPassword.size(), pass, pass != 0)))
|
|
882
867
|
{
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
throw PluginInitializationException(__FILE__, __LINE__,
|
|
886
|
-
"IceSSL: unable to create keychain:\n" + errorToString(err));
|
|
887
|
-
}
|
|
868
|
+
throw PluginInitializationException(__FILE__, __LINE__,
|
|
869
|
+
"IceSSL: unable to unlock keychain:\n" + errorToString(err));
|
|
888
870
|
}
|
|
889
|
-
|
|
871
|
+
}
|
|
872
|
+
else if(err == errSecNoSuchKeychain)
|
|
873
|
+
{
|
|
874
|
+
const char* pass = keychainPassword.empty() ? 0 : keychainPassword.c_str();
|
|
875
|
+
if((err = SecKeychainCreate(keychainPath.c_str(), keychainPassword.size(), pass, pass == 0, 0, &keychain)))
|
|
890
876
|
{
|
|
891
|
-
throw PluginInitializationException(__FILE__, __LINE__,
|
|
892
|
-
"IceSSL: unable to
|
|
877
|
+
throw PluginInitializationException(__FILE__, __LINE__,
|
|
878
|
+
"IceSSL: unable to create keychain:\n" + errorToString(err));
|
|
893
879
|
}
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
880
|
+
k.reset(keychain);
|
|
881
|
+
}
|
|
882
|
+
else
|
|
883
|
+
{
|
|
884
|
+
throw PluginInitializationException(__FILE__, __LINE__,
|
|
885
|
+
"IceSSL: unable to open keychain:\n" + errorToString(err));
|
|
886
|
+
}
|
|
887
|
+
|
|
888
|
+
//
|
|
889
|
+
// Set keychain settings to avoid keychain lock.
|
|
890
|
+
//
|
|
891
|
+
SecKeychainSettings settings;
|
|
892
|
+
settings.version = SEC_KEYCHAIN_SETTINGS_VERS1;
|
|
893
|
+
settings.lockOnSleep = FALSE;
|
|
894
|
+
settings.useLockInterval = FALSE;
|
|
895
|
+
settings.lockInterval = INT_MAX;
|
|
896
|
+
if((err = SecKeychainSetSettings(keychain, &settings)))
|
|
897
|
+
{
|
|
898
|
+
throw PluginInitializationException(__FILE__, __LINE__,
|
|
899
|
+
"IceSSL: error setting keychain settings:\n" + errorToString(err));
|
|
900
|
+
}
|
|
901
|
+
|
|
902
|
+
//
|
|
903
|
+
// Load the CA certificates used to authenticate peers into
|
|
904
|
+
// _certificateAuthorities array.
|
|
905
|
+
//
|
|
906
|
+
try
|
|
907
|
+
{
|
|
908
|
+
string caFile = properties->getProperty("IceSSL.CAs");
|
|
909
|
+
if(caFile.empty())
|
|
905
910
|
{
|
|
906
|
-
|
|
907
|
-
"IceSSL: error setting keychain settings:\n" + errorToString(err));
|
|
911
|
+
caFile = properties->getProperty("IceSSL.CertAuthFile");
|
|
908
912
|
}
|
|
909
|
-
|
|
910
|
-
int passwordRetryMax = properties->getPropertyAsIntWithDefault(propPrefix + "PasswordRetryMax", 3);
|
|
911
|
-
PasswordPromptPtr passwordPrompt = getPasswordPrompt();
|
|
912
|
-
|
|
913
|
-
//
|
|
914
|
-
// Load the CA certificates used to authenticate peers into
|
|
915
|
-
// _certificateAuthorities array.
|
|
916
|
-
//
|
|
913
|
+
if(!caFile.empty())
|
|
917
914
|
{
|
|
918
|
-
|
|
915
|
+
string resolved;
|
|
916
|
+
if(!checkPath(caFile, defaultDir, false, resolved))
|
|
919
917
|
{
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
{
|
|
923
|
-
if(!checkPath(caFile, defaultDir, false))
|
|
924
|
-
{
|
|
925
|
-
throw PluginInitializationException(__FILE__, __LINE__,
|
|
926
|
-
"IceSSL: CA certificate file not found:\n" + caFile);
|
|
927
|
-
}
|
|
928
|
-
_certificateAuthorities = loadCACertificates(caFile);
|
|
929
|
-
}
|
|
918
|
+
throw PluginInitializationException(__FILE__, __LINE__,
|
|
919
|
+
"IceSSL: CA certificate file not found:\n" + caFile);
|
|
930
920
|
}
|
|
931
|
-
|
|
921
|
+
_certificateAuthorities.reset(loadCACertificates(resolved));
|
|
922
|
+
}
|
|
923
|
+
else if(properties->getPropertyAsInt("IceSSL.UsePlatformCAs") <= 0)
|
|
924
|
+
{
|
|
925
|
+
// Setup an empty list of Root CAs to not use the system root CAs.
|
|
926
|
+
_certificateAuthorities.reset(CFArrayCreate(0, 0, 0, 0));
|
|
927
|
+
}
|
|
928
|
+
}
|
|
929
|
+
catch(const CertificateReadException& ce)
|
|
930
|
+
{
|
|
931
|
+
throw PluginInitializationException(__FILE__, __LINE__, ce.reason);
|
|
932
|
+
}
|
|
933
|
+
|
|
934
|
+
const string password = properties->getProperty("IceSSL.Password");
|
|
935
|
+
const int passwordRetryMax = properties->getPropertyAsIntWithDefault("IceSSL.PasswordRetryMax", 3);
|
|
936
|
+
PasswordPromptPtr passwordPrompt = getPasswordPrompt();
|
|
937
|
+
|
|
938
|
+
string certFile = properties->getProperty("IceSSL.CertFile");
|
|
939
|
+
string keyFile = properties->getProperty("IceSSL.KeyFile");
|
|
940
|
+
string findCert = properties->getProperty("IceSSL.FindCert");
|
|
941
|
+
if(!certFile.empty())
|
|
942
|
+
{
|
|
943
|
+
vector<string> files;
|
|
944
|
+
if(!IceUtilInternal::splitString(certFile, IceUtilInternal::pathsep, files) || files.size() > 2)
|
|
945
|
+
{
|
|
946
|
+
throw PluginInitializationException(__FILE__, __LINE__,
|
|
947
|
+
"IceSSL: invalid value for IceSSL.CertFile:\n" + certFile);
|
|
948
|
+
}
|
|
949
|
+
vector<string> keyFiles;
|
|
950
|
+
if(!keyFile.empty())
|
|
951
|
+
{
|
|
952
|
+
if(!IceUtilInternal::splitString(keyFile, IceUtilInternal::pathsep, keyFiles) || keyFiles.size() > 2)
|
|
932
953
|
{
|
|
933
|
-
throw PluginInitializationException(__FILE__, __LINE__,
|
|
954
|
+
throw PluginInitializationException(__FILE__, __LINE__,
|
|
955
|
+
"IceSSL: invalid value for IceSSL.KeyFile:\n" + keyFile);
|
|
934
956
|
}
|
|
935
|
-
|
|
957
|
+
if(files.size() != keyFiles.size())
|
|
936
958
|
{
|
|
937
|
-
throw PluginInitializationException(__FILE__, __LINE__,
|
|
959
|
+
throw PluginInitializationException(__FILE__, __LINE__,
|
|
960
|
+
"IceSSL: IceSSL.KeyFile does not agree with IceSSL.CertFile");
|
|
938
961
|
}
|
|
939
962
|
}
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
// Import the application certificate and private keys into the application
|
|
943
|
-
// keychain.
|
|
944
|
-
//
|
|
963
|
+
|
|
964
|
+
for(int i = 0; i < files.size(); ++i)
|
|
945
965
|
{
|
|
946
|
-
string
|
|
947
|
-
string keyFile =
|
|
948
|
-
|
|
966
|
+
string file = files[i];
|
|
967
|
+
string keyFile = keyFiles.empty() ? "" : keyFiles[i];
|
|
968
|
+
string resolved;
|
|
949
969
|
|
|
950
|
-
if(!
|
|
970
|
+
if(!checkPath(file, defaultDir, false, resolved))
|
|
951
971
|
{
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
{
|
|
955
|
-
throw PluginInitializationException(__FILE__, __LINE__, "IceSSL: invalid value for " + propPrefix +
|
|
956
|
-
"CertFile:\n" + certFile);
|
|
957
|
-
}
|
|
958
|
-
numCerts = files.size();
|
|
959
|
-
for(vector<string>::iterator p = files.begin(); p != files.end();)
|
|
960
|
-
{
|
|
961
|
-
string file = *p;
|
|
962
|
-
if(!checkPath(file, defaultDir, false))
|
|
963
|
-
{
|
|
964
|
-
throw PluginInitializationException(__FILE__, __LINE__,
|
|
965
|
-
"IceSSL: certificate file not found:\n" + file);
|
|
966
|
-
}
|
|
967
|
-
|
|
968
|
-
try
|
|
969
|
-
{
|
|
970
|
-
loadCertificate(&cert, &hash, &key, keychain, file,
|
|
971
|
-
properties->getProperty(propPrefix + "Password"), passwordPrompt,
|
|
972
|
-
passwordRetryMax);
|
|
973
|
-
break;
|
|
974
|
-
}
|
|
975
|
-
catch(const CertificateReadException& ce)
|
|
976
|
-
{
|
|
977
|
-
//
|
|
978
|
-
// If this is the last certificate rethrow the exception as PluginInitializationException,
|
|
979
|
-
// otherwise try the next certificate.
|
|
980
|
-
//
|
|
981
|
-
if(++p == files.end())
|
|
982
|
-
{
|
|
983
|
-
throw PluginInitializationException(__FILE__, __LINE__, ce.reason);
|
|
984
|
-
}
|
|
985
|
-
}
|
|
986
|
-
}
|
|
987
|
-
}
|
|
988
|
-
|
|
989
|
-
if(!key && !keyFile.empty())
|
|
990
|
-
{
|
|
991
|
-
vector<string> files;
|
|
992
|
-
if(!IceUtilInternal::splitString(keyFile, IceUtilInternal::pathsep, files) || files.size() > 2)
|
|
993
|
-
{
|
|
994
|
-
throw PluginInitializationException(__FILE__, __LINE__,
|
|
995
|
-
"IceSSL: invalid value for " + propPrefix + "KeyFile:\n" + keyFile);
|
|
996
|
-
}
|
|
997
|
-
if(files.size() != numCerts)
|
|
998
|
-
{
|
|
999
|
-
throw PluginInitializationException(__FILE__, __LINE__,
|
|
1000
|
-
"IceSSL: IceSSL.KeyFile does not agree with IceSSL.CertFile");
|
|
1001
|
-
}
|
|
1002
|
-
for(vector<string>::iterator p = files.begin(); p != files.end();)
|
|
1003
|
-
{
|
|
1004
|
-
string file = *p;
|
|
1005
|
-
if(!checkPath(file, defaultDir, false))
|
|
1006
|
-
{
|
|
1007
|
-
throw PluginInitializationException(__FILE__, __LINE__,
|
|
1008
|
-
"IceSSL: key file not found:\n" + file);
|
|
1009
|
-
}
|
|
1010
|
-
|
|
1011
|
-
try
|
|
1012
|
-
{
|
|
1013
|
-
loadPrivateKey(&key, keyLabel(cert), hash, keychain, file,
|
|
1014
|
-
properties->getProperty(propPrefix + "Password"),
|
|
1015
|
-
passwordPrompt, passwordRetryMax);
|
|
1016
|
-
break;
|
|
1017
|
-
}
|
|
1018
|
-
catch(const CertificateReadException& ce)
|
|
1019
|
-
{
|
|
1020
|
-
//
|
|
1021
|
-
// If this is the last key rethrow the exception as PluginInitializationException,
|
|
1022
|
-
// otherwise try the next certificate.
|
|
1023
|
-
//
|
|
1024
|
-
if(++p == files.end())
|
|
1025
|
-
{
|
|
1026
|
-
PluginInitializationException ex(__FILE__, __LINE__, ce.reason);
|
|
1027
|
-
throw ex;
|
|
1028
|
-
}
|
|
1029
|
-
}
|
|
1030
|
-
}
|
|
972
|
+
throw PluginInitializationException(__FILE__, __LINE__,
|
|
973
|
+
"IceSSL: certificate file not found:\n" + file);
|
|
1031
974
|
}
|
|
975
|
+
file = resolved;
|
|
1032
976
|
|
|
1033
|
-
if(!
|
|
977
|
+
if(!keyFile.empty())
|
|
1034
978
|
{
|
|
1035
|
-
|
|
1036
|
-
string val = properties->getProperty(prop);
|
|
1037
|
-
if(!val.empty())
|
|
979
|
+
if(!checkPath(keyFile, defaultDir, false, resolved))
|
|
1038
980
|
{
|
|
1039
|
-
|
|
1040
|
-
{
|
|
1041
|
-
throw PluginInitializationException(__FILE__, __LINE__, "IceSSL: no certificates found");
|
|
1042
|
-
}
|
|
981
|
+
throw PluginInitializationException(__FILE__, __LINE__, "IceSSL: key file not found:\n" + keyFile);
|
|
1043
982
|
}
|
|
983
|
+
keyFile = resolved;
|
|
1044
984
|
}
|
|
1045
|
-
|
|
1046
|
-
|
|
985
|
+
|
|
986
|
+
try
|
|
1047
987
|
{
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
throw PluginInitializationException(__FILE__, __LINE__,
|
|
1051
|
-
"IceSSL: error creating certificate identity:\n" + errorToString(err));
|
|
1052
|
-
}
|
|
988
|
+
_chain.reset(loadCertificateChain(file, keyFile, keychain, password, passwordPrompt, passwordRetryMax));
|
|
989
|
+
break;
|
|
1053
990
|
}
|
|
1054
|
-
|
|
1055
|
-
if(identity)
|
|
991
|
+
catch(const CertificateReadException& ce)
|
|
1056
992
|
{
|
|
1057
|
-
|
|
1058
|
-
|
|
993
|
+
//
|
|
994
|
+
// If this is the last certificate rethrow the exception as PluginInitializationException,
|
|
995
|
+
// otherwise try the next certificate.
|
|
996
|
+
//
|
|
997
|
+
if(i == files.size() - 1)
|
|
1059
998
|
{
|
|
1060
|
-
|
|
1061
|
-
// Retrieve the certificate chain
|
|
1062
|
-
//
|
|
1063
|
-
SecPolicyRef policy = SecPolicyCreateSSL(true, 0);
|
|
1064
|
-
err = SecTrustCreateWithCertificates((CFArrayRef)cert, policy, &trust);
|
|
1065
|
-
CFRelease(policy);
|
|
1066
|
-
if(err || !trust)
|
|
1067
|
-
{
|
|
1068
|
-
throw PluginInitializationException(__FILE__, __LINE__,
|
|
1069
|
-
"IceSSL: error creating trust object" + (err ? ":\n" + errorToString(err) : ""));
|
|
1070
|
-
}
|
|
1071
|
-
|
|
1072
|
-
if((err = SecTrustSetAnchorCertificates(trust, _certificateAuthorities)))
|
|
1073
|
-
{
|
|
1074
|
-
throw PluginInitializationException(__FILE__, __LINE__,
|
|
1075
|
-
"IceSSL: error while establish the anchor certificates:\n" + errorToString(err));
|
|
1076
|
-
}
|
|
1077
|
-
|
|
1078
|
-
SecTrustResultType trustResult;
|
|
1079
|
-
if((err = SecTrustEvaluate(trust, &trustResult)))
|
|
1080
|
-
{
|
|
1081
|
-
throw PluginInitializationException(__FILE__, __LINE__,
|
|
1082
|
-
"IceSSL: error evaluating trust:\n" + errorToString(err));
|
|
1083
|
-
}
|
|
1084
|
-
|
|
1085
|
-
int chainLength = SecTrustGetCertificateCount(trust);
|
|
1086
|
-
_chain = CFArrayCreateMutable(kCFAllocatorDefault, chainLength, &kCFTypeArrayCallBacks);
|
|
1087
|
-
CFArrayAppendValue(_chain, identity);
|
|
1088
|
-
for(int i = 1; i < chainLength; ++i)
|
|
1089
|
-
{
|
|
1090
|
-
CFArrayAppendValue(_chain, SecTrustGetCertificateAtIndex(trust, i));
|
|
1091
|
-
}
|
|
1092
|
-
CFRelease(trust);
|
|
999
|
+
throw PluginInitializationException(__FILE__, __LINE__, ce.reason);
|
|
1093
1000
|
}
|
|
1094
|
-
catch(...)
|
|
1095
|
-
{
|
|
1096
|
-
if(trust)
|
|
1097
|
-
{
|
|
1098
|
-
CFRelease(trust);
|
|
1099
|
-
}
|
|
1100
|
-
throw;
|
|
1101
|
-
}
|
|
1102
|
-
}
|
|
1103
|
-
|
|
1104
|
-
if(hash)
|
|
1105
|
-
{
|
|
1106
|
-
CFRelease(hash);
|
|
1107
|
-
}
|
|
1108
|
-
|
|
1109
|
-
if(keychain)
|
|
1110
|
-
{
|
|
1111
|
-
CFRelease(keychain);
|
|
1112
|
-
}
|
|
1113
|
-
|
|
1114
|
-
if(cert)
|
|
1115
|
-
{
|
|
1116
|
-
CFRelease(cert);
|
|
1117
|
-
}
|
|
1118
|
-
|
|
1119
|
-
if(key)
|
|
1120
|
-
{
|
|
1121
|
-
CFRelease(key);
|
|
1122
|
-
}
|
|
1123
|
-
|
|
1124
|
-
if(identity)
|
|
1125
|
-
{
|
|
1126
|
-
CFRelease(identity);
|
|
1127
1001
|
}
|
|
1128
1002
|
}
|
|
1129
1003
|
}
|
|
1130
|
-
|
|
1131
|
-
{
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1004
|
+
else if(!findCert.empty())
|
|
1005
|
+
{
|
|
1006
|
+
UniqueRef<SecCertificateRef> cert(findCertificate(keychain, findCert));
|
|
1007
|
+
|
|
1008
|
+
//
|
|
1009
|
+
// Retrieve the certificate chain
|
|
1010
|
+
//
|
|
1011
|
+
UniqueRef<SecPolicyRef> policy(SecPolicyCreateSSL(true, 0));
|
|
1012
|
+
SecTrustRef trust = 0;
|
|
1013
|
+
err = SecTrustCreateWithCertificates((CFArrayRef)cert.get(), policy.get(), &trust);
|
|
1014
|
+
if(err || !trust)
|
|
1138
1015
|
{
|
|
1139
|
-
|
|
1016
|
+
throw PluginInitializationException(__FILE__, __LINE__,
|
|
1017
|
+
"IceSSL: error creating trust object" +
|
|
1018
|
+
(err ? ":\n" + errorToString(err) : ""));
|
|
1140
1019
|
}
|
|
1141
|
-
|
|
1142
|
-
|
|
1020
|
+
UniqueRef<SecTrustRef> v(trust);
|
|
1021
|
+
|
|
1022
|
+
SecTrustResultType trustResult;
|
|
1023
|
+
if((err = SecTrustEvaluate(trust, &trustResult)))
|
|
1143
1024
|
{
|
|
1144
|
-
|
|
1025
|
+
throw PluginInitializationException(__FILE__, __LINE__,
|
|
1026
|
+
"IceSSL: error evaluating trust:\n" + errorToString(err));
|
|
1145
1027
|
}
|
|
1146
|
-
|
|
1147
|
-
|
|
1028
|
+
|
|
1029
|
+
int chainLength = SecTrustGetCertificateCount(trust);
|
|
1030
|
+
CFMutableArrayRef items = CFArrayCreateMutable(kCFAllocatorDefault, chainLength, &kCFTypeArrayCallBacks);
|
|
1031
|
+
for(int i = 0; i < chainLength; ++i)
|
|
1148
1032
|
{
|
|
1149
|
-
|
|
1033
|
+
CFArrayAppendValue(items, SecTrustGetCertificateAtIndex(trust, i));
|
|
1150
1034
|
}
|
|
1151
|
-
|
|
1152
|
-
|
|
1035
|
+
|
|
1036
|
+
//
|
|
1037
|
+
// Replace the first certificate in the chain with the
|
|
1038
|
+
// identity.
|
|
1039
|
+
//
|
|
1040
|
+
SecIdentityRef identity;
|
|
1041
|
+
err = SecIdentityCreateWithCertificate(keychain, cert.get(), &identity);
|
|
1042
|
+
if(err != noErr)
|
|
1153
1043
|
{
|
|
1154
|
-
|
|
1044
|
+
ostringstream os;
|
|
1045
|
+
os << "IceSSL: couldn't create identity for certificate found in the keychain:\n" << errorToString(err);
|
|
1046
|
+
throw PluginInitializationException(__FILE__, __LINE__, os.str());
|
|
1155
1047
|
}
|
|
1156
|
-
|
|
1157
|
-
|
|
1048
|
+
CFArraySetValueAtIndex(items, 0, identity);
|
|
1049
|
+
CFRelease(identity);
|
|
1050
|
+
_chain.reset(items);
|
|
1158
1051
|
}
|
|
1052
|
+
|
|
1159
1053
|
//
|
|
1160
1054
|
// DiffieHellmanParams in DER format.
|
|
1161
1055
|
//
|
|
1162
|
-
string dhFile = properties->getProperty(
|
|
1056
|
+
string dhFile = properties->getProperty("IceSSL.DHParams");
|
|
1163
1057
|
if(!dhFile.empty())
|
|
1164
1058
|
{
|
|
1165
|
-
|
|
1059
|
+
string resolved;
|
|
1060
|
+
if(!checkPath(dhFile, defaultDir, false, resolved))
|
|
1166
1061
|
{
|
|
1167
1062
|
throw PluginInitializationException(__FILE__, __LINE__, "IceSSL: DH params file not found:\n" + dhFile);
|
|
1168
1063
|
}
|
|
1169
|
-
|
|
1170
|
-
readFile(
|
|
1064
|
+
|
|
1065
|
+
readFile(resolved, _dhParams);
|
|
1171
1066
|
}
|
|
1172
|
-
|
|
1067
|
+
|
|
1173
1068
|
//
|
|
1174
1069
|
// Establish the cipher list.
|
|
1175
1070
|
//
|
|
1176
|
-
string ciphers = properties->getProperty(
|
|
1071
|
+
const string ciphers = properties->getProperty("IceSSL.Ciphers");
|
|
1177
1072
|
CiphersHelper::initialize();
|
|
1178
|
-
|
|
1073
|
+
|
|
1179
1074
|
if(!ciphers.empty())
|
|
1180
1075
|
{
|
|
1181
1076
|
parseCiphers(ciphers);
|
|
1182
1077
|
}
|
|
1183
|
-
|
|
1078
|
+
|
|
1184
1079
|
if(securityTraceLevel() >= 1)
|
|
1185
1080
|
{
|
|
1186
1081
|
ostringstream os;
|
|
1187
1082
|
os << "enabling SSL ciphersuites:";
|
|
1188
|
-
|
|
1083
|
+
|
|
1189
1084
|
if(_ciphers.empty())
|
|
1190
1085
|
{
|
|
1191
1086
|
map<string, SSLCipherSuite> enabled = CiphersHelper::ciphers();
|
|
@@ -1203,20 +1098,20 @@ IceSSL::SecureTransportEngine::initialize()
|
|
|
1203
1098
|
}
|
|
1204
1099
|
getLogger()->trace(securityTraceCategory(), os.str());
|
|
1205
1100
|
}
|
|
1206
|
-
|
|
1101
|
+
|
|
1207
1102
|
//
|
|
1208
1103
|
// Parse protocols
|
|
1209
1104
|
//
|
|
1210
|
-
const string protocolVersionMax = properties->getProperty(
|
|
1105
|
+
const string protocolVersionMax = properties->getProperty("IceSSL.ProtocolVersionMax");
|
|
1211
1106
|
if(!protocolVersionMax.empty())
|
|
1212
1107
|
{
|
|
1213
1108
|
_protocolVersionMax = parseProtocol(protocolVersionMax);
|
|
1214
1109
|
}
|
|
1215
|
-
|
|
1110
|
+
|
|
1216
1111
|
//
|
|
1217
1112
|
// The default min protocol version is set to TLS1.0 to avoid security issues with SSLv3
|
|
1218
|
-
//
|
|
1219
|
-
const string protocolVersionMin = properties->getPropertyWithDefault(
|
|
1113
|
+
//
|
|
1114
|
+
const string protocolVersionMin = properties->getPropertyWithDefault("IceSSL.ProtocolVersionMin", "tls1_0");
|
|
1220
1115
|
if(!protocolVersionMin.empty())
|
|
1221
1116
|
{
|
|
1222
1117
|
_protocolVersionMin = parseProtocol(protocolVersionMin);
|
|
@@ -1230,29 +1125,18 @@ IceSSL::SecureTransportEngine::initialize()
|
|
|
1230
1125
|
void
|
|
1231
1126
|
IceSSL::SecureTransportEngine::destroy()
|
|
1232
1127
|
{
|
|
1233
|
-
if(_certificateAuthorities)
|
|
1234
|
-
{
|
|
1235
|
-
CFRelease(_certificateAuthorities);
|
|
1236
|
-
_certificateAuthorities = 0;
|
|
1237
|
-
}
|
|
1238
|
-
|
|
1239
|
-
if(_chain)
|
|
1240
|
-
{
|
|
1241
|
-
CFRelease(_chain);
|
|
1242
|
-
_chain = 0;
|
|
1243
|
-
}
|
|
1244
1128
|
}
|
|
1245
1129
|
|
|
1246
1130
|
SSLContextRef
|
|
1247
1131
|
IceSSL::SecureTransportEngine::newContext(bool incoming)
|
|
1248
1132
|
{
|
|
1249
|
-
SSLContextRef ssl = SSLCreateContext(kCFAllocatorDefault, incoming ? kSSLServerSide : kSSLClientSide,
|
|
1133
|
+
SSLContextRef ssl = SSLCreateContext(kCFAllocatorDefault, incoming ? kSSLServerSide : kSSLClientSide,
|
|
1250
1134
|
kSSLStreamType);
|
|
1251
1135
|
if(!ssl)
|
|
1252
1136
|
{
|
|
1253
1137
|
throw SecurityException(__FILE__, __LINE__, "IceSSL: unable to create SSL context");
|
|
1254
1138
|
}
|
|
1255
|
-
|
|
1139
|
+
|
|
1256
1140
|
OSStatus err = noErr;
|
|
1257
1141
|
if(incoming)
|
|
1258
1142
|
{
|
|
@@ -1279,23 +1163,22 @@ IceSSL::SecureTransportEngine::newContext(bool incoming)
|
|
|
1279
1163
|
break;
|
|
1280
1164
|
}
|
|
1281
1165
|
}
|
|
1282
|
-
|
|
1166
|
+
|
|
1283
1167
|
if(!_dhParams.empty())
|
|
1284
1168
|
{
|
|
1285
1169
|
if((err = SSLSetDiffieHellmanParams(ssl, &_dhParams[0], _dhParams.size())))
|
|
1286
1170
|
{
|
|
1287
|
-
throw SecurityException(__FILE__, __LINE__,
|
|
1171
|
+
throw SecurityException(__FILE__, __LINE__,
|
|
1288
1172
|
"IceSSL: unable to create the trust object:\n" + errorToString(err));
|
|
1289
1173
|
}
|
|
1290
1174
|
}
|
|
1291
1175
|
}
|
|
1292
|
-
|
|
1293
|
-
if(_chain && (err = SSLSetCertificate(ssl, _chain)))
|
|
1294
|
-
{
|
|
1295
|
-
throw SecurityException(__FILE__, __LINE__,
|
|
1176
|
+
|
|
1177
|
+
if(_chain && (err = SSLSetCertificate(ssl, _chain.get())))
|
|
1178
|
+
{
|
|
1179
|
+
throw SecurityException(__FILE__, __LINE__,
|
|
1296
1180
|
"IceSSL: error while setting the SSL context certificate:\n" + errorToString(err));
|
|
1297
1181
|
}
|
|
1298
|
-
|
|
1299
1182
|
|
|
1300
1183
|
if(!_ciphers.empty())
|
|
1301
1184
|
{
|
|
@@ -1304,39 +1187,39 @@ IceSSL::SecureTransportEngine::newContext(bool incoming)
|
|
|
1304
1187
|
throw SecurityException(__FILE__, __LINE__, "IceSSL: error while setting ciphers:\n" + errorToString(err));
|
|
1305
1188
|
}
|
|
1306
1189
|
}
|
|
1307
|
-
|
|
1308
|
-
if((err = SSLSetSessionOption(ssl, incoming ? kSSLSessionOptionBreakOnClientAuth :
|
|
1190
|
+
|
|
1191
|
+
if((err = SSLSetSessionOption(ssl, incoming ? kSSLSessionOptionBreakOnClientAuth :
|
|
1309
1192
|
kSSLSessionOptionBreakOnServerAuth,
|
|
1310
1193
|
true)))
|
|
1311
1194
|
{
|
|
1312
1195
|
throw SecurityException(__FILE__, __LINE__, "IceSSL: error while setting SSL option:\n" + errorToString(err));
|
|
1313
1196
|
}
|
|
1314
|
-
|
|
1197
|
+
|
|
1315
1198
|
if(_protocolVersionMax != kSSLProtocolUnknown)
|
|
1316
1199
|
{
|
|
1317
1200
|
if((err = SSLSetProtocolVersionMax(ssl, _protocolVersionMax)))
|
|
1318
1201
|
{
|
|
1319
|
-
throw SecurityException(__FILE__, __LINE__,
|
|
1202
|
+
throw SecurityException(__FILE__, __LINE__,
|
|
1320
1203
|
"IceSSL: error while setting SSL protocol version max:\n" + errorToString(err));
|
|
1321
1204
|
}
|
|
1322
1205
|
}
|
|
1323
|
-
|
|
1206
|
+
|
|
1324
1207
|
if(_protocolVersionMin != kSSLProtocolUnknown)
|
|
1325
1208
|
{
|
|
1326
1209
|
if((err = SSLSetProtocolVersionMin(ssl, _protocolVersionMin)))
|
|
1327
1210
|
{
|
|
1328
|
-
throw SecurityException(__FILE__, __LINE__,
|
|
1211
|
+
throw SecurityException(__FILE__, __LINE__,
|
|
1329
1212
|
"IceSSL: error while setting SSL protocol version min:\n" + errorToString(err));
|
|
1330
1213
|
}
|
|
1331
1214
|
}
|
|
1332
|
-
|
|
1215
|
+
|
|
1333
1216
|
return ssl;
|
|
1334
1217
|
}
|
|
1335
1218
|
|
|
1336
1219
|
CFArrayRef
|
|
1337
1220
|
IceSSL::SecureTransportEngine::getCertificateAuthorities() const
|
|
1338
1221
|
{
|
|
1339
|
-
return _certificateAuthorities;
|
|
1222
|
+
return _certificateAuthorities.get();
|
|
1340
1223
|
}
|
|
1341
1224
|
|
|
1342
1225
|
string
|
|
@@ -1350,7 +1233,7 @@ IceSSL::SecureTransportEngine::parseCiphers(const string& ciphers)
|
|
|
1350
1233
|
{
|
|
1351
1234
|
vector<string> tokens;
|
|
1352
1235
|
vector<CipherExpression> cipherExpressions;
|
|
1353
|
-
|
|
1236
|
+
|
|
1354
1237
|
bool allCiphers = false;
|
|
1355
1238
|
IceUtilInternal::splitString(ciphers, " \t", tokens);
|
|
1356
1239
|
for(vector<string>::const_iterator i = tokens.begin(); i != tokens.end(); ++i)
|
|
@@ -1360,7 +1243,7 @@ IceSSL::SecureTransportEngine::parseCiphers(const string& ciphers)
|
|
|
1360
1243
|
{
|
|
1361
1244
|
if(i != tokens.begin())
|
|
1362
1245
|
{
|
|
1363
|
-
throw PluginInitializationException(__FILE__, __LINE__,
|
|
1246
|
+
throw PluginInitializationException(__FILE__, __LINE__,
|
|
1364
1247
|
"IceSSL: `ALL' must be first in cipher list `" + ciphers + "'");
|
|
1365
1248
|
}
|
|
1366
1249
|
allCiphers = true;
|
|
@@ -1369,7 +1252,7 @@ IceSSL::SecureTransportEngine::parseCiphers(const string& ciphers)
|
|
|
1369
1252
|
{
|
|
1370
1253
|
if(i != tokens.begin())
|
|
1371
1254
|
{
|
|
1372
|
-
throw PluginInitializationException(__FILE__, __LINE__,
|
|
1255
|
+
throw PluginInitializationException(__FILE__, __LINE__,
|
|
1373
1256
|
"IceSSL: `NONE' must be first in cipher list `" + ciphers + "'");
|
|
1374
1257
|
}
|
|
1375
1258
|
}
|
|
@@ -1385,7 +1268,7 @@ IceSSL::SecureTransportEngine::parseCiphers(const string& ciphers)
|
|
|
1385
1268
|
}
|
|
1386
1269
|
else
|
|
1387
1270
|
{
|
|
1388
|
-
throw PluginInitializationException(__FILE__, __LINE__,
|
|
1271
|
+
throw PluginInitializationException(__FILE__, __LINE__,
|
|
1389
1272
|
"IceSSL: invalid cipher expression `" + token + "'");
|
|
1390
1273
|
}
|
|
1391
1274
|
}
|
|
@@ -1393,12 +1276,12 @@ IceSSL::SecureTransportEngine::parseCiphers(const string& ciphers)
|
|
|
1393
1276
|
{
|
|
1394
1277
|
ce.negation = false;
|
|
1395
1278
|
}
|
|
1396
|
-
|
|
1279
|
+
|
|
1397
1280
|
if(token.find('(') == 0)
|
|
1398
1281
|
{
|
|
1399
1282
|
if(token.rfind(')') != token.size() - 1)
|
|
1400
1283
|
{
|
|
1401
|
-
throw PluginInitializationException(__FILE__, __LINE__,
|
|
1284
|
+
throw PluginInitializationException(__FILE__, __LINE__,
|
|
1402
1285
|
"IceSSL: invalid cipher expression `" + token + "'");
|
|
1403
1286
|
}
|
|
1404
1287
|
|
|
@@ -1408,7 +1291,7 @@ IceSSL::SecureTransportEngine::parseCiphers(const string& ciphers)
|
|
|
1408
1291
|
}
|
|
1409
1292
|
catch(const Ice::SyscallException&)
|
|
1410
1293
|
{
|
|
1411
|
-
throw PluginInitializationException(__FILE__, __LINE__,
|
|
1294
|
+
throw PluginInitializationException(__FILE__, __LINE__,
|
|
1412
1295
|
"IceSSL: invalid cipher expression `" + token + "'");
|
|
1413
1296
|
}
|
|
1414
1297
|
}
|
|
@@ -1416,34 +1299,35 @@ IceSSL::SecureTransportEngine::parseCiphers(const string& ciphers)
|
|
|
1416
1299
|
{
|
|
1417
1300
|
ce.cipher = token;
|
|
1418
1301
|
}
|
|
1419
|
-
|
|
1302
|
+
|
|
1420
1303
|
cipherExpressions.push_back(ce);
|
|
1421
1304
|
}
|
|
1422
1305
|
}
|
|
1423
|
-
|
|
1306
|
+
|
|
1424
1307
|
//
|
|
1425
1308
|
// Context used to get the cipher list
|
|
1426
1309
|
//
|
|
1427
1310
|
SSLContextRef ctx = SSLCreateContext(kCFAllocatorDefault, kSSLServerSide, kSSLStreamType);
|
|
1428
1311
|
size_t numSupportedCiphers = 0;
|
|
1429
1312
|
SSLGetNumberSupportedCiphers(ctx, &numSupportedCiphers);
|
|
1430
|
-
|
|
1313
|
+
|
|
1431
1314
|
vector<SSLCipherSuite> supported;
|
|
1432
1315
|
supported.resize(numSupportedCiphers);
|
|
1433
|
-
|
|
1316
|
+
|
|
1434
1317
|
OSStatus err = SSLGetSupportedCiphers(ctx, &supported[0], &numSupportedCiphers);
|
|
1318
|
+
CFRelease(ctx);
|
|
1435
1319
|
if(err)
|
|
1436
1320
|
{
|
|
1437
|
-
throw PluginInitializationException(__FILE__, __LINE__,
|
|
1321
|
+
throw PluginInitializationException(__FILE__, __LINE__,
|
|
1438
1322
|
"IceSSL: unable to get supported ciphers list:\n" + errorToString(err));
|
|
1439
1323
|
}
|
|
1440
|
-
|
|
1324
|
+
|
|
1441
1325
|
vector<SSLCipherSuite> enabled;
|
|
1442
1326
|
if(allCiphers)
|
|
1443
1327
|
{
|
|
1444
1328
|
enabled = supported;
|
|
1445
1329
|
}
|
|
1446
|
-
|
|
1330
|
+
|
|
1447
1331
|
for(vector<CipherExpression>::const_iterator i = cipherExpressions.begin(); i != cipherExpressions.end(); ++i)
|
|
1448
1332
|
{
|
|
1449
1333
|
CipherExpression ce = *i;
|
|
@@ -1453,7 +1337,7 @@ IceSSL::SecureTransportEngine::parseCiphers(const string& ciphers)
|
|
|
1453
1337
|
{
|
|
1454
1338
|
SSLCipherSuite cipher = *j;
|
|
1455
1339
|
string name = CiphersHelper::cipherName(cipher);
|
|
1456
|
-
|
|
1340
|
+
|
|
1457
1341
|
if(ce.cipher.empty())
|
|
1458
1342
|
{
|
|
1459
1343
|
if(ce.re->match(name))
|