zeroc-ice 3.7.1 → 3.7.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (683) hide show
  1. checksums.yaml +5 -5
  2. data/ICE_LICENSE +1 -1
  3. data/bin/slice2rb +1 -6
  4. data/ext/Communicator.cpp +7 -9
  5. data/ext/Communicator.h +1 -6
  6. data/ext/Config.h +28 -6
  7. data/ext/Connection.cpp +1 -10
  8. data/ext/Connection.h +1 -6
  9. data/ext/Endpoint.cpp +1 -10
  10. data/ext/Endpoint.h +1 -6
  11. data/ext/ImplicitContext.cpp +1 -6
  12. data/ext/ImplicitContext.h +1 -6
  13. data/ext/Init.cpp +1 -6
  14. data/ext/Logger.cpp +1 -6
  15. data/ext/Logger.h +1 -6
  16. data/ext/Operation.cpp +6 -11
  17. data/ext/Operation.h +1 -6
  18. data/ext/Properties.cpp +3 -8
  19. data/ext/Properties.h +1 -6
  20. data/ext/Proxy.cpp +21 -14
  21. data/ext/Proxy.h +1 -6
  22. data/ext/Slice.cpp +3 -18
  23. data/ext/Slice.h +1 -6
  24. data/ext/Types.cpp +74 -58
  25. data/ext/Types.h +1 -6
  26. data/ext/Util.cpp +61 -32
  27. data/ext/Util.h +108 -33
  28. data/ext/ValueFactoryManager.cpp +1 -6
  29. data/ext/ValueFactoryManager.h +1 -6
  30. data/ext/extconf.rb +5 -3
  31. data/ext/ice/cpp/include/Ice/Application.h +1 -6
  32. data/ext/ice/cpp/include/Ice/AsyncResult.h +1 -6
  33. data/ext/ice/cpp/include/Ice/AsyncResultF.h +1 -6
  34. data/ext/ice/cpp/include/Ice/BatchRequestInterceptor.h +1 -6
  35. data/ext/ice/cpp/include/Ice/BatchRequestQueueF.h +1 -6
  36. data/ext/ice/cpp/include/Ice/Buffer.h +1 -6
  37. data/ext/ice/cpp/include/Ice/CommunicatorAsync.h +1 -6
  38. data/ext/ice/cpp/include/Ice/Comparable.h +1 -6
  39. data/ext/ice/cpp/include/Ice/Config.h +5 -6
  40. data/ext/ice/cpp/include/Ice/ConnectionAsync.h +1 -6
  41. data/ext/ice/cpp/include/Ice/ConnectionIF.h +1 -6
  42. data/ext/ice/cpp/include/Ice/ConsoleUtil.h +1 -6
  43. data/ext/ice/cpp/include/Ice/DefaultValueFactory.h +1 -6
  44. data/ext/ice/cpp/include/Ice/DispatchInterceptor.h +1 -6
  45. data/ext/ice/cpp/include/Ice/Dispatcher.h +1 -6
  46. data/ext/ice/cpp/include/Ice/DynamicLibrary.h +1 -6
  47. data/ext/ice/cpp/include/Ice/DynamicLibraryF.h +1 -6
  48. data/ext/ice/cpp/include/Ice/Exception.h +4 -9
  49. data/ext/ice/cpp/include/Ice/ExceptionHelpers.h +3 -16
  50. data/ext/ice/cpp/include/Ice/FactoryTable.h +1 -6
  51. data/ext/ice/cpp/include/Ice/FactoryTableInit.h +2 -7
  52. data/ext/ice/cpp/include/Ice/Format.h +1 -6
  53. data/ext/ice/cpp/include/Ice/Functional.h +2 -7
  54. data/ext/ice/cpp/include/Ice/GCObject.h +1 -6
  55. data/ext/ice/cpp/include/Ice/Handle.h +1 -6
  56. data/ext/ice/cpp/include/Ice/Ice.h +1 -6
  57. data/ext/ice/cpp/include/Ice/IconvStringConverter.h +11 -17
  58. data/ext/ice/cpp/include/Ice/Incoming.h +13 -8
  59. data/ext/ice/cpp/include/Ice/IncomingAsync.h +11 -6
  60. data/ext/ice/cpp/include/Ice/IncomingAsyncF.h +1 -6
  61. data/ext/ice/cpp/include/Ice/Initialize.h +13 -7
  62. data/ext/ice/cpp/include/Ice/InputStream.h +6 -11
  63. data/ext/ice/cpp/include/Ice/InstanceF.h +1 -6
  64. data/ext/ice/cpp/include/Ice/InterfaceByValue.h +1 -6
  65. data/ext/ice/cpp/include/Ice/LocalObject.h +1 -6
  66. data/ext/ice/cpp/include/Ice/LocalObjectF.h +1 -6
  67. data/ext/ice/cpp/include/Ice/LoggerUtil.h +1 -6
  68. data/ext/ice/cpp/include/Ice/MetricsAdminI.h +9 -7
  69. data/ext/ice/cpp/include/Ice/MetricsFunctional.h +1 -6
  70. data/ext/ice/cpp/include/Ice/MetricsObserverI.h +16 -7
  71. data/ext/ice/cpp/include/Ice/NativePropertiesAdmin.h +1 -6
  72. data/ext/ice/cpp/include/Ice/Object.h +6 -6
  73. data/ext/ice/cpp/include/Ice/ObjectF.h +1 -6
  74. data/ext/ice/cpp/include/Ice/ObserverHelper.h +1 -6
  75. data/ext/ice/cpp/include/Ice/Optional.h +21 -7
  76. data/ext/ice/cpp/include/Ice/OutgoingAsync.h +18 -8
  77. data/ext/ice/cpp/include/Ice/OutgoingAsyncF.h +1 -6
  78. data/ext/ice/cpp/include/Ice/OutputStream.h +6 -11
  79. data/ext/ice/cpp/include/Ice/Protocol.h +1 -6
  80. data/ext/ice/cpp/include/Ice/Proxy.h +50 -23
  81. data/ext/ice/cpp/include/Ice/ProxyF.h +1 -6
  82. data/ext/ice/cpp/include/Ice/ProxyFactoryF.h +1 -6
  83. data/ext/ice/cpp/include/Ice/ProxyHandle.h +1 -6
  84. data/ext/ice/cpp/include/Ice/ReferenceF.h +1 -6
  85. data/ext/ice/cpp/include/Ice/RegisterPlugins.h +1 -6
  86. data/ext/ice/cpp/include/Ice/RequestHandlerF.h +1 -6
  87. data/ext/ice/cpp/include/Ice/ResponseHandlerF.h +1 -6
  88. data/ext/ice/cpp/include/Ice/SHA1.h +1 -6
  89. data/ext/ice/cpp/include/Ice/ServantManagerF.h +1 -6
  90. data/ext/ice/cpp/include/Ice/Service.h +2 -7
  91. data/ext/ice/cpp/include/Ice/SliceChecksums.h +1 -6
  92. data/ext/ice/cpp/include/Ice/SlicedData.h +1 -6
  93. data/ext/ice/cpp/include/Ice/SlicedDataF.h +1 -6
  94. data/ext/ice/cpp/include/Ice/StreamHelpers.h +2 -7
  95. data/ext/ice/cpp/include/Ice/StringConverter.h +1 -6
  96. data/ext/ice/cpp/include/Ice/ThreadPoolF.h +1 -6
  97. data/ext/ice/cpp/include/Ice/UUID.h +1 -6
  98. data/ext/ice/cpp/include/Ice/UniquePtr.h +1 -6
  99. data/ext/ice/cpp/include/Ice/UniqueRef.h +1 -6
  100. data/ext/ice/cpp/include/Ice/UserExceptionFactory.h +1 -6
  101. data/ext/ice/cpp/include/Ice/Value.h +2 -7
  102. data/ext/ice/cpp/include/Ice/ValueF.h +1 -6
  103. data/ext/ice/cpp/include/IceSSL/Config.h +1 -6
  104. data/ext/ice/cpp/include/IceSSL/IceSSL.h +1 -6
  105. data/ext/ice/cpp/include/IceSSL/OpenSSL.h +1 -6
  106. data/ext/ice/cpp/include/IceSSL/Plugin.h +59 -6
  107. data/ext/ice/cpp/include/IceSSL/SChannel.h +5 -6
  108. data/ext/ice/cpp/include/IceSSL/SecureTransport.h +5 -6
  109. data/ext/ice/cpp/include/IceSSL/UWP.h +1 -6
  110. data/ext/ice/cpp/include/IceUtil/Atomic.h +2 -7
  111. data/ext/ice/cpp/include/IceUtil/Cond.h +1 -6
  112. data/ext/ice/cpp/include/IceUtil/Config.h +34 -20
  113. data/ext/ice/cpp/include/IceUtil/ConsoleUtil.h +5 -10
  114. data/ext/ice/cpp/include/IceUtil/CountDownLatch.h +1 -6
  115. data/ext/ice/cpp/include/IceUtil/CtrlCHandler.h +26 -38
  116. data/ext/ice/cpp/include/IceUtil/DisableWarnings.h +5 -11
  117. data/ext/ice/cpp/include/IceUtil/Exception.h +130 -11
  118. data/ext/ice/cpp/include/IceUtil/FileUtil.h +1 -6
  119. data/ext/ice/cpp/include/IceUtil/Functional.h +5 -6
  120. data/ext/ice/cpp/include/IceUtil/Handle.h +1 -6
  121. data/ext/ice/cpp/include/IceUtil/IceUtil.h +1 -6
  122. data/ext/ice/cpp/include/IceUtil/InputUtil.h +1 -6
  123. data/ext/ice/cpp/include/IceUtil/Iterator.h +1 -6
  124. data/ext/ice/cpp/include/IceUtil/Lock.h +1 -6
  125. data/ext/ice/cpp/include/IceUtil/Monitor.h +1 -6
  126. data/ext/ice/cpp/include/IceUtil/Mutex.h +2 -9
  127. data/ext/ice/cpp/include/IceUtil/MutexProtocol.h +1 -6
  128. data/ext/ice/cpp/include/IceUtil/MutexPtrLock.h +5 -10
  129. data/ext/ice/cpp/include/IceUtil/MutexPtrTryLock.h +1 -6
  130. data/ext/ice/cpp/include/IceUtil/Optional.h +9 -6
  131. data/ext/ice/cpp/include/IceUtil/Options.h +1 -6
  132. data/ext/ice/cpp/include/IceUtil/OutputUtil.h +18 -20
  133. data/ext/ice/cpp/include/IceUtil/PopDisableWarnings.h +1 -6
  134. data/ext/ice/cpp/include/IceUtil/PushDisableWarnings.h +8 -6
  135. data/ext/ice/cpp/include/IceUtil/Random.h +37 -6
  136. data/ext/ice/cpp/include/IceUtil/RecMutex.h +1 -6
  137. data/ext/ice/cpp/include/IceUtil/ResourceConfig.h +4 -9
  138. data/ext/ice/cpp/include/IceUtil/ScannerConfig.h +8 -7
  139. data/ext/ice/cpp/include/IceUtil/ScopedArray.h +1 -6
  140. data/ext/ice/cpp/include/IceUtil/Shared.h +1 -6
  141. data/ext/ice/cpp/include/IceUtil/StopWatch.h +1 -6
  142. data/ext/ice/cpp/include/IceUtil/StringConverter.h +2 -7
  143. data/ext/ice/cpp/include/IceUtil/StringUtil.h +1 -6
  144. data/ext/ice/cpp/include/IceUtil/Thread.h +1 -6
  145. data/ext/ice/cpp/include/IceUtil/ThreadException.h +1 -6
  146. data/ext/ice/cpp/include/IceUtil/Time.h +1 -6
  147. data/ext/ice/cpp/include/IceUtil/Timer.h +1 -6
  148. data/ext/ice/cpp/include/IceUtil/UUID.h +1 -6
  149. data/ext/ice/cpp/include/IceUtil/UndefSysMacros.h +1 -6
  150. data/ext/ice/cpp/include/generated/Ice/BuiltinSequences.h +12 -17
  151. data/ext/ice/cpp/include/generated/Ice/Communicator.h +35 -34
  152. data/ext/ice/cpp/include/generated/Ice/CommunicatorF.h +4 -9
  153. data/ext/ice/cpp/include/generated/Ice/Connection.h +92 -57
  154. data/ext/ice/cpp/include/generated/Ice/ConnectionF.h +4 -9
  155. data/ext/ice/cpp/include/generated/Ice/Current.h +51 -57
  156. data/ext/ice/cpp/include/generated/Ice/Endpoint.h +73 -42
  157. data/ext/ice/cpp/include/generated/Ice/EndpointF.h +5 -10
  158. data/ext/ice/cpp/include/generated/Ice/EndpointTypes.h +8 -13
  159. data/ext/ice/cpp/include/generated/Ice/FacetMap.h +5 -10
  160. data/ext/ice/cpp/include/generated/Ice/Identity.h +7 -13
  161. data/ext/ice/cpp/include/generated/Ice/ImplicitContext.h +28 -27
  162. data/ext/ice/cpp/include/generated/Ice/ImplicitContextF.h +4 -9
  163. data/ext/ice/cpp/include/generated/Ice/Instrumentation.h +76 -21
  164. data/ext/ice/cpp/include/generated/Ice/InstrumentationF.h +4 -9
  165. data/ext/ice/cpp/include/generated/Ice/LocalException.h +597 -272
  166. data/ext/ice/cpp/include/generated/Ice/Locator.h +135 -52
  167. data/ext/ice/cpp/include/generated/Ice/LocatorF.h +8 -13
  168. data/ext/ice/cpp/include/generated/Ice/Logger.h +10 -9
  169. data/ext/ice/cpp/include/generated/Ice/LoggerF.h +4 -9
  170. data/ext/ice/cpp/include/generated/Ice/Metrics.h +175 -134
  171. data/ext/ice/cpp/include/generated/Ice/ObjectAdapter.h +20 -19
  172. data/ext/ice/cpp/include/generated/Ice/ObjectAdapterF.h +4 -9
  173. data/ext/ice/cpp/include/generated/Ice/ObjectFactory.h +16 -15
  174. data/ext/ice/cpp/include/generated/Ice/Plugin.h +18 -11
  175. data/ext/ice/cpp/include/generated/Ice/PluginF.h +4 -9
  176. data/ext/ice/cpp/include/generated/Ice/Process.h +14 -13
  177. data/ext/ice/cpp/include/generated/Ice/ProcessF.h +6 -11
  178. data/ext/ice/cpp/include/generated/Ice/Properties.h +22 -21
  179. data/ext/ice/cpp/include/generated/Ice/PropertiesAdmin.h +20 -19
  180. data/ext/ice/cpp/include/generated/Ice/PropertiesF.h +6 -11
  181. data/ext/ice/cpp/include/generated/Ice/RemoteLogger.h +39 -28
  182. data/ext/ice/cpp/include/generated/Ice/Router.h +43 -36
  183. data/ext/ice/cpp/include/generated/Ice/RouterF.h +6 -11
  184. data/ext/ice/cpp/include/generated/Ice/ServantLocator.h +38 -37
  185. data/ext/ice/cpp/include/generated/Ice/ServantLocatorF.h +4 -9
  186. data/ext/ice/cpp/include/generated/Ice/SliceChecksumDict.h +4 -9
  187. data/ext/ice/cpp/include/generated/Ice/ValueFactory.h +22 -15
  188. data/ext/ice/cpp/include/generated/Ice/Version.h +16 -23
  189. data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfo.h +12 -12
  190. data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfoF.h +4 -9
  191. data/ext/ice/cpp/include/generated/IceSSL/EndpointInfo.h +10 -10
  192. data/ext/ice/cpp/src/Ice/ACM.cpp +14 -16
  193. data/ext/ice/cpp/src/Ice/ACM.h +1 -6
  194. data/ext/ice/cpp/src/Ice/ACMF.h +1 -6
  195. data/ext/ice/cpp/src/Ice/Acceptor.cpp +1 -6
  196. data/ext/ice/cpp/src/Ice/Acceptor.h +1 -6
  197. data/ext/ice/cpp/src/Ice/AcceptorF.h +1 -6
  198. data/ext/ice/cpp/src/Ice/ArgVector.cpp +8 -13
  199. data/ext/ice/cpp/src/Ice/ArgVector.h +1 -6
  200. data/ext/ice/cpp/src/Ice/AsyncResult.cpp +1 -7
  201. data/ext/ice/cpp/src/Ice/Base64.cpp +12 -18
  202. data/ext/ice/cpp/src/Ice/Base64.h +1 -6
  203. data/ext/ice/cpp/src/Ice/BatchRequestQueue.cpp +2 -7
  204. data/ext/ice/cpp/src/Ice/BatchRequestQueue.h +1 -6
  205. data/ext/ice/cpp/src/Ice/Buffer.cpp +3 -8
  206. data/ext/ice/cpp/src/Ice/BuiltinSequences.cpp +4 -9
  207. data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.cpp +2 -8
  208. data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.h +1 -6
  209. data/ext/ice/cpp/src/Ice/Communicator.cpp +4 -9
  210. data/ext/ice/cpp/src/Ice/CommunicatorF.cpp +4 -9
  211. data/ext/ice/cpp/src/Ice/CommunicatorI.cpp +23 -10
  212. data/ext/ice/cpp/src/Ice/CommunicatorI.h +6 -7
  213. data/ext/ice/cpp/src/Ice/Cond.cpp +1 -6
  214. data/ext/ice/cpp/src/Ice/ConnectRequestHandler.cpp +1 -6
  215. data/ext/ice/cpp/src/Ice/ConnectRequestHandler.h +5 -10
  216. data/ext/ice/cpp/src/Ice/ConnectRequestHandlerF.h +1 -6
  217. data/ext/ice/cpp/src/Ice/Connection.cpp +4 -9
  218. data/ext/ice/cpp/src/Ice/ConnectionF.cpp +4 -9
  219. data/ext/ice/cpp/src/Ice/ConnectionFactory.cpp +146 -36
  220. data/ext/ice/cpp/src/Ice/ConnectionFactory.h +4 -6
  221. data/ext/ice/cpp/src/Ice/ConnectionFactoryF.h +1 -6
  222. data/ext/ice/cpp/src/Ice/ConnectionI.cpp +34 -24
  223. data/ext/ice/cpp/src/Ice/ConnectionI.h +1 -6
  224. data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.cpp +1 -6
  225. data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.h +2 -7
  226. data/ext/ice/cpp/src/Ice/Connector.cpp +1 -6
  227. data/ext/ice/cpp/src/Ice/Connector.h +1 -6
  228. data/ext/ice/cpp/src/Ice/ConnectorF.h +1 -6
  229. data/ext/ice/cpp/src/Ice/CountDownLatch.cpp +1 -6
  230. data/ext/ice/cpp/src/Ice/Current.cpp +4 -9
  231. data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.cpp +1 -6
  232. data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.h +1 -6
  233. data/ext/ice/cpp/src/Ice/DefaultsAndOverridesF.h +1 -6
  234. data/ext/ice/cpp/src/Ice/DispatchInterceptor.cpp +14 -6
  235. data/ext/ice/cpp/src/Ice/DynamicLibrary.cpp +7 -11
  236. data/ext/ice/cpp/src/Ice/Endpoint.cpp +4 -9
  237. data/ext/ice/cpp/src/Ice/EndpointF.cpp +4 -9
  238. data/ext/ice/cpp/src/Ice/EndpointFactory.cpp +1 -6
  239. data/ext/ice/cpp/src/Ice/EndpointFactory.h +1 -6
  240. data/ext/ice/cpp/src/Ice/EndpointFactoryF.h +1 -6
  241. data/ext/ice/cpp/src/Ice/EndpointFactoryManager.cpp +1 -6
  242. data/ext/ice/cpp/src/Ice/EndpointFactoryManager.h +1 -6
  243. data/ext/ice/cpp/src/Ice/EndpointFactoryManagerF.h +1 -6
  244. data/ext/ice/cpp/src/Ice/EndpointI.cpp +1 -6
  245. data/ext/ice/cpp/src/Ice/EndpointI.h +1 -6
  246. data/ext/ice/cpp/src/Ice/EndpointIF.h +1 -6
  247. data/ext/ice/cpp/src/Ice/EndpointTypes.cpp +4 -9
  248. data/ext/ice/cpp/src/Ice/EventHandler.cpp +1 -6
  249. data/ext/ice/cpp/src/Ice/EventHandler.h +1 -6
  250. data/ext/ice/cpp/src/Ice/EventHandlerF.h +1 -6
  251. data/ext/ice/cpp/src/Ice/Exception.cpp +8 -13
  252. data/ext/ice/cpp/src/Ice/FacetMap.cpp +4 -9
  253. data/ext/ice/cpp/src/Ice/FactoryTable.cpp +1 -6
  254. data/ext/ice/cpp/src/Ice/FactoryTableInit.cpp +1 -6
  255. data/ext/ice/cpp/src/Ice/GCObject.cpp +2 -7
  256. data/ext/ice/cpp/src/Ice/HashUtil.h +2 -7
  257. data/ext/ice/cpp/src/Ice/HttpParser.cpp +1 -6
  258. data/ext/ice/cpp/src/Ice/HttpParser.h +1 -6
  259. data/ext/ice/cpp/src/Ice/IPEndpointI.cpp +14 -31
  260. data/ext/ice/cpp/src/Ice/IPEndpointI.h +1 -6
  261. data/ext/ice/cpp/src/Ice/IPEndpointIF.h +1 -6
  262. data/ext/ice/cpp/src/Ice/IconvStringConverter.cpp +1 -6
  263. data/ext/ice/cpp/src/Ice/Identity.cpp +4 -9
  264. data/ext/ice/cpp/src/Ice/ImplicitContext.cpp +4 -9
  265. data/ext/ice/cpp/src/Ice/ImplicitContextF.cpp +4 -9
  266. data/ext/ice/cpp/src/Ice/ImplicitContextI.cpp +2 -8
  267. data/ext/ice/cpp/src/Ice/ImplicitContextI.h +1 -6
  268. data/ext/ice/cpp/src/Ice/Incoming.cpp +11 -13
  269. data/ext/ice/cpp/src/Ice/IncomingAsync.cpp +1 -6
  270. data/ext/ice/cpp/src/Ice/IncomingRequest.h +1 -6
  271. data/ext/ice/cpp/src/Ice/Initialize.cpp +6 -11
  272. data/ext/ice/cpp/src/Ice/InputStream.cpp +55 -87
  273. data/ext/ice/cpp/src/Ice/Instance.cpp +58 -13
  274. data/ext/ice/cpp/src/Ice/Instance.h +3 -6
  275. data/ext/ice/cpp/src/Ice/Instrumentation.cpp +4 -9
  276. data/ext/ice/cpp/src/Ice/InstrumentationF.cpp +4 -9
  277. data/ext/ice/cpp/src/Ice/InstrumentationI.cpp +2 -7
  278. data/ext/ice/cpp/src/Ice/InstrumentationI.h +1 -6
  279. data/ext/ice/cpp/src/Ice/LocalException.cpp +400 -9
  280. data/ext/ice/cpp/src/Ice/LocalObject.cpp +1 -6
  281. data/ext/ice/cpp/src/Ice/Locator.cpp +52 -27
  282. data/ext/ice/cpp/src/Ice/LocatorF.cpp +4 -9
  283. data/ext/ice/cpp/src/Ice/LocatorInfo.cpp +25 -22
  284. data/ext/ice/cpp/src/Ice/LocatorInfo.h +3 -8
  285. data/ext/ice/cpp/src/Ice/LocatorInfoF.h +1 -6
  286. data/ext/ice/cpp/src/Ice/Logger.cpp +4 -9
  287. data/ext/ice/cpp/src/Ice/LoggerAdminI.cpp +8 -19
  288. data/ext/ice/cpp/src/Ice/LoggerAdminI.h +1 -6
  289. data/ext/ice/cpp/src/Ice/LoggerF.cpp +4 -9
  290. data/ext/ice/cpp/src/Ice/LoggerI.cpp +13 -12
  291. data/ext/ice/cpp/src/Ice/LoggerI.h +1 -6
  292. data/ext/ice/cpp/src/Ice/LoggerUtil.cpp +1 -6
  293. data/ext/ice/cpp/src/Ice/Metrics.cpp +12 -11
  294. data/ext/ice/cpp/src/Ice/MetricsAdminI.cpp +9 -9
  295. data/ext/ice/cpp/src/Ice/MetricsObserverI.cpp +1 -6
  296. data/ext/ice/cpp/src/Ice/Network.cpp +70 -52
  297. data/ext/ice/cpp/src/Ice/Network.h +4 -9
  298. data/ext/ice/cpp/src/Ice/NetworkF.h +1 -6
  299. data/ext/ice/cpp/src/Ice/NetworkProxy.cpp +2 -8
  300. data/ext/ice/cpp/src/Ice/NetworkProxy.h +1 -6
  301. data/ext/ice/cpp/src/Ice/NetworkProxyF.h +1 -6
  302. data/ext/ice/cpp/src/Ice/OSLogLoggerI.cpp +57 -0
  303. data/ext/ice/cpp/src/Ice/OSLogLoggerI.h +40 -0
  304. data/ext/ice/cpp/src/Ice/Object.cpp +10 -14
  305. data/ext/ice/cpp/src/Ice/ObjectAdapter.cpp +4 -9
  306. data/ext/ice/cpp/src/Ice/ObjectAdapterF.cpp +4 -9
  307. data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.cpp +1 -6
  308. data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.h +1 -6
  309. data/ext/ice/cpp/src/Ice/ObjectAdapterFactoryF.h +1 -6
  310. data/ext/ice/cpp/src/Ice/ObjectAdapterI.cpp +22 -7
  311. data/ext/ice/cpp/src/Ice/ObjectAdapterI.h +5 -6
  312. data/ext/ice/cpp/src/Ice/ObjectFactory.cpp +4 -9
  313. data/ext/ice/cpp/src/Ice/ObserverHelper.cpp +1 -6
  314. data/ext/ice/cpp/src/Ice/OpaqueEndpointI.cpp +5 -10
  315. data/ext/ice/cpp/src/Ice/OpaqueEndpointI.h +1 -6
  316. data/ext/ice/cpp/src/Ice/OutgoingAsync.cpp +6 -9
  317. data/ext/ice/cpp/src/Ice/OutputStream.cpp +29 -61
  318. data/ext/ice/cpp/src/Ice/Plugin.cpp +4 -9
  319. data/ext/ice/cpp/src/Ice/PluginF.cpp +4 -9
  320. data/ext/ice/cpp/src/Ice/PluginManagerI.cpp +1 -6
  321. data/ext/ice/cpp/src/Ice/PluginManagerI.h +1 -6
  322. data/ext/ice/cpp/src/Ice/Process.cpp +8 -13
  323. data/ext/ice/cpp/src/Ice/ProcessF.cpp +4 -9
  324. data/ext/ice/cpp/src/Ice/Properties.cpp +4 -9
  325. data/ext/ice/cpp/src/Ice/PropertiesAdmin.cpp +11 -16
  326. data/ext/ice/cpp/src/Ice/PropertiesAdminI.cpp +3 -8
  327. data/ext/ice/cpp/src/Ice/PropertiesAdminI.h +1 -6
  328. data/ext/ice/cpp/src/Ice/PropertiesF.cpp +4 -9
  329. data/ext/ice/cpp/src/Ice/PropertiesI.cpp +13 -17
  330. data/ext/ice/cpp/src/Ice/PropertiesI.h +1 -6
  331. data/ext/ice/cpp/src/Ice/PropertyNames.cpp +42 -8
  332. data/ext/ice/cpp/src/Ice/PropertyNames.h +2 -7
  333. data/ext/ice/cpp/src/Ice/Protocol.cpp +1 -6
  334. data/ext/ice/cpp/src/Ice/ProtocolInstance.cpp +1 -6
  335. data/ext/ice/cpp/src/Ice/ProtocolInstance.h +1 -6
  336. data/ext/ice/cpp/src/Ice/ProtocolInstanceF.h +1 -6
  337. data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.cpp +1 -6
  338. data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.h +1 -6
  339. data/ext/ice/cpp/src/Ice/ProtocolPluginFacadeF.h +1 -6
  340. data/ext/ice/cpp/src/Ice/Proxy.cpp +9 -8
  341. data/ext/ice/cpp/src/Ice/ProxyFactory.cpp +11 -7
  342. data/ext/ice/cpp/src/Ice/ProxyFactory.h +1 -6
  343. data/ext/ice/cpp/src/Ice/Reference.cpp +61 -33
  344. data/ext/ice/cpp/src/Ice/Reference.h +1 -6
  345. data/ext/ice/cpp/src/Ice/ReferenceFactory.cpp +2 -9
  346. data/ext/ice/cpp/src/Ice/ReferenceFactory.h +1 -6
  347. data/ext/ice/cpp/src/Ice/ReferenceFactoryF.h +1 -6
  348. data/ext/ice/cpp/src/Ice/RegisterPluginsInit.cpp +4 -8
  349. data/ext/ice/cpp/src/Ice/RegisterPluginsInit.h +1 -6
  350. data/ext/ice/cpp/src/Ice/RemoteLogger.cpp +20 -19
  351. data/ext/ice/cpp/src/Ice/ReplyStatus.h +1 -6
  352. data/ext/ice/cpp/src/Ice/RequestHandler.cpp +1 -6
  353. data/ext/ice/cpp/src/Ice/RequestHandler.h +1 -6
  354. data/ext/ice/cpp/src/Ice/RequestHandlerFactory.cpp +1 -6
  355. data/ext/ice/cpp/src/Ice/RequestHandlerFactory.h +1 -6
  356. data/ext/ice/cpp/src/Ice/ResponseHandler.cpp +1 -6
  357. data/ext/ice/cpp/src/Ice/ResponseHandler.h +1 -6
  358. data/ext/ice/cpp/src/Ice/RetryQueue.cpp +7 -9
  359. data/ext/ice/cpp/src/Ice/RetryQueue.h +1 -6
  360. data/ext/ice/cpp/src/Ice/RetryQueueF.h +1 -6
  361. data/ext/ice/cpp/src/Ice/Router.cpp +15 -20
  362. data/ext/ice/cpp/src/Ice/RouterF.cpp +4 -9
  363. data/ext/ice/cpp/src/Ice/RouterInfo.cpp +3 -8
  364. data/ext/ice/cpp/src/Ice/RouterInfo.h +1 -6
  365. data/ext/ice/cpp/src/Ice/RouterInfoF.h +1 -6
  366. data/ext/ice/cpp/src/Ice/SHA1.cpp +3 -8
  367. data/ext/ice/cpp/src/Ice/Selector.cpp +59 -25
  368. data/ext/ice/cpp/src/Ice/Selector.h +1 -6
  369. data/ext/ice/cpp/src/Ice/ServantLocator.cpp +4 -9
  370. data/ext/ice/cpp/src/Ice/ServantLocatorF.cpp +4 -9
  371. data/ext/ice/cpp/src/Ice/ServantManager.cpp +7 -12
  372. data/ext/ice/cpp/src/Ice/ServantManager.h +1 -6
  373. data/ext/ice/cpp/src/Ice/SharedContext.h +1 -6
  374. data/ext/ice/cpp/src/Ice/SliceChecksumDict.cpp +4 -9
  375. data/ext/ice/cpp/src/Ice/SliceChecksums.cpp +1 -6
  376. data/ext/ice/cpp/src/Ice/SlicedData.cpp +1 -6
  377. data/ext/ice/cpp/src/Ice/StreamSocket.cpp +15 -18
  378. data/ext/ice/cpp/src/Ice/StreamSocket.h +1 -6
  379. data/ext/ice/cpp/src/Ice/StringConverterPlugin.cpp +1 -6
  380. data/ext/ice/cpp/src/Ice/StringUtil.h +1 -6
  381. data/ext/ice/cpp/src/Ice/SysLoggerI.cpp +3 -8
  382. data/ext/ice/cpp/src/Ice/SysLoggerI.h +1 -6
  383. data/ext/ice/cpp/src/Ice/SystemdJournalI.cpp +66 -0
  384. data/ext/ice/cpp/src/Ice/SystemdJournalI.h +39 -0
  385. data/ext/ice/cpp/src/Ice/TcpAcceptor.cpp +9 -7
  386. data/ext/ice/cpp/src/Ice/TcpAcceptor.h +1 -6
  387. data/ext/ice/cpp/src/Ice/TcpConnector.cpp +6 -6
  388. data/ext/ice/cpp/src/Ice/TcpConnector.h +1 -6
  389. data/ext/ice/cpp/src/Ice/TcpEndpointI.cpp +6 -6
  390. data/ext/ice/cpp/src/Ice/TcpEndpointI.h +1 -6
  391. data/ext/ice/cpp/src/Ice/TcpTransceiver.cpp +6 -6
  392. data/ext/ice/cpp/src/Ice/TcpTransceiver.h +1 -6
  393. data/ext/ice/cpp/src/Ice/Thread.cpp +18 -14
  394. data/ext/ice/cpp/src/Ice/ThreadPool.cpp +69 -9
  395. data/ext/ice/cpp/src/Ice/ThreadPool.h +11 -12
  396. data/ext/ice/cpp/src/Ice/Timer.cpp +11 -6
  397. data/ext/ice/cpp/src/Ice/TraceLevels.cpp +1 -6
  398. data/ext/ice/cpp/src/Ice/TraceLevels.h +1 -6
  399. data/ext/ice/cpp/src/Ice/TraceLevelsF.h +1 -6
  400. data/ext/ice/cpp/src/Ice/TraceUtil.cpp +1 -6
  401. data/ext/ice/cpp/src/Ice/TraceUtil.h +1 -6
  402. data/ext/ice/cpp/src/Ice/Transceiver.cpp +1 -6
  403. data/ext/ice/cpp/src/Ice/Transceiver.h +1 -6
  404. data/ext/ice/cpp/src/Ice/TransceiverF.h +3 -8
  405. data/ext/ice/cpp/src/Ice/UdpConnector.cpp +4 -6
  406. data/ext/ice/cpp/src/Ice/UdpConnector.h +1 -6
  407. data/ext/ice/cpp/src/Ice/UdpEndpointI.cpp +12 -7
  408. data/ext/ice/cpp/src/Ice/UdpEndpointI.h +1 -6
  409. data/ext/ice/cpp/src/Ice/UdpTransceiver.cpp +33 -26
  410. data/ext/ice/cpp/src/Ice/UdpTransceiver.h +1 -6
  411. data/ext/ice/cpp/src/Ice/Value.cpp +1 -6
  412. data/ext/ice/cpp/src/Ice/ValueFactory.cpp +4 -9
  413. data/ext/ice/cpp/src/Ice/ValueFactoryManagerI.cpp +1 -7
  414. data/ext/ice/cpp/src/Ice/ValueFactoryManagerI.h +1 -6
  415. data/ext/ice/cpp/src/Ice/Version.cpp +4 -9
  416. data/ext/ice/cpp/src/Ice/VirtualShared.h +1 -6
  417. data/ext/ice/cpp/src/Ice/WSAcceptor.cpp +1 -6
  418. data/ext/ice/cpp/src/Ice/WSAcceptor.h +1 -6
  419. data/ext/ice/cpp/src/Ice/WSConnector.cpp +1 -6
  420. data/ext/ice/cpp/src/Ice/WSConnector.h +1 -6
  421. data/ext/ice/cpp/src/Ice/WSEndpoint.cpp +1 -6
  422. data/ext/ice/cpp/src/Ice/WSEndpoint.h +1 -6
  423. data/ext/ice/cpp/src/Ice/WSTransceiver.cpp +18 -22
  424. data/ext/ice/cpp/src/Ice/WSTransceiver.h +1 -7
  425. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.cpp +4 -9
  426. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.h +497 -17
  427. data/ext/ice/cpp/src/IceDiscovery/LocatorI.cpp +4 -7
  428. data/ext/ice/cpp/src/IceDiscovery/LocatorI.h +1 -6
  429. data/ext/ice/cpp/src/IceDiscovery/LookupI.cpp +5 -10
  430. data/ext/ice/cpp/src/IceDiscovery/LookupI.h +1 -6
  431. data/ext/ice/cpp/src/IceDiscovery/PluginI.cpp +1 -6
  432. data/ext/ice/cpp/src/IceDiscovery/PluginI.h +1 -6
  433. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.cpp +4 -9
  434. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.h +22 -15
  435. data/ext/ice/cpp/src/IceLocatorDiscovery/Plugin.h +1 -6
  436. data/ext/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +52 -17
  437. data/ext/ice/cpp/src/IceSSL/AcceptorI.cpp +1 -6
  438. data/ext/ice/cpp/src/IceSSL/AcceptorI.h +1 -6
  439. data/ext/ice/cpp/src/IceSSL/CertificateI.cpp +4 -9
  440. data/ext/ice/cpp/src/IceSSL/CertificateI.h +1 -6
  441. data/ext/ice/cpp/src/IceSSL/ConnectionInfo.cpp +4 -9
  442. data/ext/ice/cpp/src/IceSSL/ConnectionInfoF.cpp +4 -9
  443. data/ext/ice/cpp/src/IceSSL/ConnectorI.cpp +1 -6
  444. data/ext/ice/cpp/src/IceSSL/ConnectorI.h +1 -6
  445. data/ext/ice/cpp/src/IceSSL/EndpointI.cpp +8 -13
  446. data/ext/ice/cpp/src/IceSSL/EndpointI.h +2 -7
  447. data/ext/ice/cpp/src/IceSSL/EndpointInfo.cpp +4 -9
  448. data/ext/ice/cpp/src/IceSSL/Instance.cpp +1 -6
  449. data/ext/ice/cpp/src/IceSSL/Instance.h +1 -6
  450. data/ext/ice/cpp/src/IceSSL/InstanceF.h +1 -6
  451. data/ext/ice/cpp/src/IceSSL/OpenSSLCertificateI.cpp +15 -20
  452. data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +100 -46
  453. data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.h +3 -8
  454. data/ext/ice/cpp/src/IceSSL/OpenSSLEngineF.h +1 -6
  455. data/ext/ice/cpp/src/IceSSL/OpenSSLPluginI.cpp +1 -6
  456. data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +271 -147
  457. data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.h +3 -11
  458. data/ext/ice/cpp/src/IceSSL/OpenSSLUtil.cpp +1 -6
  459. data/ext/ice/cpp/src/IceSSL/OpenSSLUtil.h +1 -6
  460. data/ext/ice/cpp/src/IceSSL/PluginI.cpp +115 -6
  461. data/ext/ice/cpp/src/IceSSL/PluginI.h +11 -6
  462. data/ext/ice/cpp/src/IceSSL/RFC2253.cpp +1 -7
  463. data/ext/ice/cpp/src/IceSSL/RFC2253.h +1 -6
  464. data/ext/ice/cpp/src/IceSSL/SChannelCertificateI.cpp +5 -10
  465. data/ext/ice/cpp/src/IceSSL/SChannelEngine.cpp +69 -36
  466. data/ext/ice/cpp/src/IceSSL/SChannelEngine.h +5 -8
  467. data/ext/ice/cpp/src/IceSSL/SChannelEngineF.h +5 -6
  468. data/ext/ice/cpp/src/IceSSL/SChannelPluginI.cpp +1 -6
  469. data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.cpp +154 -38
  470. data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.h +8 -6
  471. data/ext/ice/cpp/src/IceSSL/SSLEngine.cpp +21 -14
  472. data/ext/ice/cpp/src/IceSSL/SSLEngine.h +3 -6
  473. data/ext/ice/cpp/src/IceSSL/SSLEngineF.h +1 -6
  474. data/ext/ice/cpp/src/IceSSL/SecureTransportCertificateI.cpp +37 -31
  475. data/ext/ice/cpp/src/IceSSL/SecureTransportEngine.cpp +44 -18
  476. data/ext/ice/cpp/src/IceSSL/SecureTransportEngine.h +5 -6
  477. data/ext/ice/cpp/src/IceSSL/SecureTransportEngineF.h +4 -6
  478. data/ext/ice/cpp/src/IceSSL/SecureTransportPluginI.cpp +1 -6
  479. data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +160 -99
  480. data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.h +7 -7
  481. data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.cpp +35 -25
  482. data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.h +5 -6
  483. data/ext/ice/cpp/src/IceSSL/TrustManager.cpp +1 -6
  484. data/ext/ice/cpp/src/IceSSL/TrustManager.h +1 -6
  485. data/ext/ice/cpp/src/IceSSL/TrustManagerF.h +1 -6
  486. data/ext/ice/cpp/src/IceSSL/UWPCertificateI.cpp +4 -9
  487. data/ext/ice/cpp/src/IceSSL/UWPEngine.cpp +4 -9
  488. data/ext/ice/cpp/src/IceSSL/UWPEngine.h +1 -6
  489. data/ext/ice/cpp/src/IceSSL/UWPEngineF.h +1 -6
  490. data/ext/ice/cpp/src/IceSSL/UWPPluginI.cpp +1 -6
  491. data/ext/ice/cpp/src/IceSSL/UWPTransceiverI.cpp +5 -10
  492. data/ext/ice/cpp/src/IceSSL/UWPTransceiverI.h +1 -6
  493. data/ext/ice/cpp/src/IceSSL/Util.cpp +12 -11
  494. data/ext/ice/cpp/src/IceSSL/Util.h +1 -6
  495. data/ext/ice/cpp/src/IceUtil/ConsoleUtil.cpp +1 -6
  496. data/ext/ice/cpp/src/IceUtil/ConvertUTF.cpp +1 -6
  497. data/ext/ice/cpp/src/IceUtil/ConvertUTF.h +1 -6
  498. data/ext/ice/cpp/src/IceUtil/CtrlCHandler.cpp +3 -6
  499. data/ext/ice/cpp/src/IceUtil/FileUtil.cpp +2 -7
  500. data/ext/ice/cpp/src/IceUtil/InputUtil.cpp +1 -6
  501. data/ext/ice/cpp/src/IceUtil/MutexProtocol.cpp +1 -6
  502. data/ext/ice/cpp/src/IceUtil/Options.cpp +25 -15
  503. data/ext/ice/cpp/src/IceUtil/OutputUtil.cpp +41 -16
  504. data/ext/ice/cpp/src/IceUtil/Random.cpp +3 -8
  505. data/ext/ice/cpp/src/IceUtil/RecMutex.cpp +2 -7
  506. data/ext/ice/cpp/src/IceUtil/Shared.cpp +1 -6
  507. data/ext/ice/cpp/src/IceUtil/StringConverter.cpp +6 -11
  508. data/ext/ice/cpp/src/IceUtil/StringUtil.cpp +45 -12
  509. data/ext/ice/cpp/src/IceUtil/ThreadException.cpp +1 -6
  510. data/ext/ice/cpp/src/IceUtil/Time.cpp +12 -19
  511. data/ext/ice/cpp/src/IceUtil/UUID.cpp +6 -11
  512. data/ext/ice/cpp/src/IceUtil/Unicode.cpp +1 -6
  513. data/ext/ice/cpp/src/IceUtil/Unicode.h +1 -6
  514. data/ext/ice/cpp/src/IceUtil/UtilException.cpp +17 -16
  515. data/ext/ice/cpp/src/Slice/CPlusPlusUtil.cpp +75 -73
  516. data/ext/ice/cpp/src/Slice/CPlusPlusUtil.h +3 -8
  517. data/ext/ice/cpp/src/Slice/Checksum.cpp +1 -6
  518. data/ext/ice/cpp/src/Slice/Checksum.h +1 -6
  519. data/ext/ice/cpp/src/Slice/FileTracker.cpp +1 -6
  520. data/ext/ice/cpp/src/Slice/FileTracker.h +1 -6
  521. data/ext/ice/cpp/src/Slice/Grammar.cpp +249 -245
  522. data/ext/ice/cpp/src/Slice/Grammar.h +5 -5
  523. data/ext/ice/cpp/src/Slice/GrammarUtil.h +1 -7
  524. data/ext/ice/cpp/src/Slice/JavaUtil.cpp +89 -92
  525. data/ext/ice/cpp/src/Slice/JavaUtil.h +5 -10
  526. data/ext/ice/cpp/src/Slice/MD5.cpp +1 -6
  527. data/ext/ice/cpp/src/Slice/MD5.h +1 -6
  528. data/ext/ice/cpp/src/Slice/MD5I.cpp +8 -0
  529. data/ext/ice/cpp/src/Slice/PHPUtil.cpp +10 -6
  530. data/ext/ice/cpp/src/Slice/PHPUtil.h +1 -6
  531. data/ext/ice/cpp/src/Slice/Parser.cpp +153 -166
  532. data/ext/ice/cpp/src/Slice/Parser.h +33 -10
  533. data/ext/ice/cpp/src/Slice/Preprocessor.cpp +25 -17
  534. data/ext/ice/cpp/src/Slice/Preprocessor.h +2 -7
  535. data/ext/ice/cpp/src/Slice/Python.cpp +22 -28
  536. data/ext/ice/cpp/src/Slice/PythonUtil.cpp +80 -49
  537. data/ext/ice/cpp/src/Slice/PythonUtil.h +1 -6
  538. data/ext/ice/cpp/src/Slice/Ruby.cpp +5 -10
  539. data/ext/ice/cpp/src/Slice/RubyUtil.cpp +13 -15
  540. data/ext/ice/cpp/src/Slice/RubyUtil.h +1 -6
  541. data/ext/ice/cpp/src/Slice/Scanner.cpp +689 -437
  542. data/ext/ice/cpp/src/Slice/SliceUtil.cpp +2 -8
  543. data/ext/ice/cpp/src/Slice/StringLiteralUtil.cpp +12 -12
  544. data/ext/ice/cpp/src/Slice/Util.h +1 -6
  545. data/ext/ice/mcpp/CMakeLists.txt +80 -0
  546. data/ext/ice/mcpp/Makefile +2 -5
  547. data/ext/ice/mcpp/expand.c +6 -6
  548. data/ice.gemspec +2 -4
  549. data/lib/Glacier2.rb +1 -6
  550. data/lib/Glacier2/Metrics.rb +3 -8
  551. data/lib/Glacier2/PermissionsVerifier.rb +3 -8
  552. data/lib/Glacier2/PermissionsVerifierF.rb +3 -8
  553. data/lib/Glacier2/Router.rb +3 -8
  554. data/lib/Glacier2/RouterF.rb +3 -8
  555. data/lib/Glacier2/SSLInfo.rb +3 -8
  556. data/lib/Glacier2/Session.rb +3 -8
  557. data/lib/Ice.rb +1 -6
  558. data/lib/Ice/BuiltinSequences.rb +3 -8
  559. data/lib/Ice/Communicator.rb +3 -8
  560. data/lib/Ice/CommunicatorF.rb +3 -8
  561. data/lib/Ice/Connection.rb +3 -8
  562. data/lib/Ice/ConnectionF.rb +3 -8
  563. data/lib/Ice/Current.rb +3 -8
  564. data/lib/Ice/Endpoint.rb +3 -8
  565. data/lib/Ice/EndpointF.rb +3 -8
  566. data/lib/Ice/EndpointTypes.rb +3 -8
  567. data/lib/Ice/FacetMap.rb +3 -8
  568. data/lib/Ice/Identity.rb +3 -8
  569. data/lib/Ice/ImplicitContext.rb +3 -8
  570. data/lib/Ice/ImplicitContextF.rb +3 -8
  571. data/lib/Ice/Instrumentation.rb +3 -8
  572. data/lib/Ice/InstrumentationF.rb +3 -8
  573. data/lib/Ice/LocalException.rb +3 -8
  574. data/lib/Ice/Locator.rb +3 -8
  575. data/lib/Ice/LocatorF.rb +3 -8
  576. data/lib/Ice/Logger.rb +3 -8
  577. data/lib/Ice/LoggerF.rb +3 -8
  578. data/lib/Ice/Metrics.rb +3 -8
  579. data/lib/Ice/ObjectAdapter.rb +3 -8
  580. data/lib/Ice/ObjectAdapterF.rb +3 -8
  581. data/lib/Ice/ObjectFactory.rb +3 -8
  582. data/lib/Ice/Plugin.rb +3 -8
  583. data/lib/Ice/PluginF.rb +3 -8
  584. data/lib/Ice/Process.rb +3 -8
  585. data/lib/Ice/ProcessF.rb +3 -8
  586. data/lib/Ice/Properties.rb +3 -8
  587. data/lib/Ice/PropertiesAdmin.rb +3 -8
  588. data/lib/Ice/PropertiesF.rb +3 -8
  589. data/lib/Ice/RemoteLogger.rb +3 -8
  590. data/lib/Ice/Router.rb +3 -8
  591. data/lib/Ice/RouterF.rb +3 -8
  592. data/lib/Ice/ServantLocator.rb +3 -8
  593. data/lib/Ice/ServantLocatorF.rb +3 -8
  594. data/lib/Ice/SliceChecksumDict.rb +3 -8
  595. data/lib/Ice/ValueFactory.rb +3 -8
  596. data/lib/Ice/Version.rb +3 -8
  597. data/lib/IceBox.rb +1 -6
  598. data/lib/IceBox/IceBox.rb +3 -8
  599. data/lib/IceGrid.rb +1 -6
  600. data/lib/IceGrid/Admin.rb +3 -8
  601. data/lib/IceGrid/Descriptor.rb +3 -8
  602. data/lib/IceGrid/Exception.rb +3 -8
  603. data/lib/IceGrid/FileParser.rb +3 -8
  604. data/lib/IceGrid/PluginFacade.rb +3 -8
  605. data/lib/IceGrid/Registry.rb +3 -8
  606. data/lib/IceGrid/Session.rb +3 -8
  607. data/lib/IceGrid/UserAccountMapper.rb +3 -8
  608. data/lib/IcePatch2.rb +1 -6
  609. data/lib/IcePatch2/FileInfo.rb +3 -8
  610. data/lib/IcePatch2/FileServer.rb +3 -8
  611. data/lib/IceStorm.rb +1 -6
  612. data/lib/IceStorm/IceStorm.rb +3 -8
  613. data/lib/IceStorm/Metrics.rb +3 -8
  614. data/slice/Glacier2/Metrics.ice +14 -8
  615. data/slice/Glacier2/PermissionsVerifier.ice +11 -7
  616. data/slice/Glacier2/PermissionsVerifierF.ice +11 -7
  617. data/slice/Glacier2/Router.ice +12 -8
  618. data/slice/Glacier2/RouterF.ice +11 -7
  619. data/slice/Glacier2/SSLInfo.ice +11 -7
  620. data/slice/Glacier2/Session.ice +11 -7
  621. data/slice/Ice/BuiltinSequences.ice +13 -7
  622. data/slice/Ice/Communicator.ice +92 -44
  623. data/slice/Ice/CommunicatorF.ice +13 -7
  624. data/slice/Ice/Connection.ice +35 -29
  625. data/slice/Ice/ConnectionF.ice +13 -7
  626. data/slice/Ice/Current.ice +29 -23
  627. data/slice/Ice/Endpoint.ice +22 -19
  628. data/slice/Ice/EndpointF.ice +14 -8
  629. data/slice/Ice/EndpointTypes.ice +15 -9
  630. data/slice/Ice/FacetMap.ice +14 -8
  631. data/slice/Ice/Identity.ice +13 -7
  632. data/slice/Ice/ImplicitContext.ice +28 -22
  633. data/slice/Ice/ImplicitContextF.ice +12 -7
  634. data/slice/Ice/Instrumentation.ice +19 -13
  635. data/slice/Ice/InstrumentationF.ice +13 -7
  636. data/slice/Ice/LocalException.ice +35 -29
  637. data/slice/Ice/Locator.ice +13 -7
  638. data/slice/Ice/LocatorF.ice +13 -7
  639. data/slice/Ice/Logger.ice +19 -13
  640. data/slice/Ice/LoggerF.ice +13 -7
  641. data/slice/Ice/Metrics.ice +26 -18
  642. data/slice/Ice/ObjectAdapter.ice +63 -45
  643. data/slice/Ice/ObjectAdapterF.ice +13 -7
  644. data/slice/Ice/ObjectFactory.ice +20 -12
  645. data/slice/Ice/Plugin.ice +19 -10
  646. data/slice/Ice/PluginF.ice +17 -7
  647. data/slice/Ice/Process.ice +13 -7
  648. data/slice/Ice/ProcessF.ice +13 -7
  649. data/slice/Ice/Properties.ice +35 -24
  650. data/slice/Ice/PropertiesAdmin.ice +13 -7
  651. data/slice/Ice/PropertiesF.ice +13 -7
  652. data/slice/Ice/RemoteLogger.ice +13 -7
  653. data/slice/Ice/Router.ice +14 -8
  654. data/slice/Ice/RouterF.ice +13 -7
  655. data/slice/Ice/ServantLocator.ice +31 -23
  656. data/slice/Ice/ServantLocatorF.ice +13 -7
  657. data/slice/Ice/SliceChecksumDict.ice +13 -7
  658. data/slice/Ice/ValueFactory.ice +22 -15
  659. data/slice/Ice/Version.ice +13 -7
  660. data/slice/IceBT/ConnectionInfo.ice +12 -7
  661. data/slice/IceBT/EndpointInfo.ice +13 -8
  662. data/slice/IceBT/Types.ice +12 -7
  663. data/slice/IceBox/IceBox.ice +29 -9
  664. data/slice/IceDiscovery/IceDiscovery.ice +68 -7
  665. data/slice/IceGrid/Admin.ice +41 -35
  666. data/slice/IceGrid/Descriptor.ice +15 -10
  667. data/slice/IceGrid/Exception.ice +15 -10
  668. data/slice/IceGrid/FileParser.ice +14 -8
  669. data/slice/IceGrid/PluginFacade.ice +17 -11
  670. data/slice/IceGrid/Registry.ice +13 -7
  671. data/slice/IceGrid/Session.ice +18 -12
  672. data/slice/IceGrid/UserAccountMapper.ice +16 -10
  673. data/slice/IceIAP/ConnectionInfo.ice +11 -8
  674. data/slice/IceIAP/EndpointInfo.ice +11 -8
  675. data/slice/IceLocatorDiscovery/IceLocatorDiscovery.ice +12 -7
  676. data/slice/IcePatch2/FileInfo.ice +12 -7
  677. data/slice/IcePatch2/FileServer.ice +13 -8
  678. data/slice/IceSSL/ConnectionInfo.ice +16 -9
  679. data/slice/IceSSL/ConnectionInfoF.ice +14 -8
  680. data/slice/IceSSL/EndpointInfo.ice +14 -8
  681. data/slice/IceStorm/IceStorm.ice +17 -11
  682. data/slice/IceStorm/Metrics.ice +12 -8
  683. metadata +8 -4
@@ -1,11 +1,6 @@
1
- // **********************************************************************
2
1
  //
3
- // Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved.
2
+ // Copyright (c) ZeroC, Inc. All rights reserved.
4
3
  //
5
- // This copy of Ice is licensed to you under the terms described in the
6
- // ICE_LICENSE file included in this distribution.
7
- //
8
- // **********************************************************************
9
4
 
10
5
  #ifndef ICESSL_OPENSSL_ENGINE_H
11
6
  #define ICESSL_OPENSSL_ENGINE_H
@@ -31,7 +26,6 @@ public:
31
26
 
32
27
  virtual void initialize();
33
28
  virtual void destroy();
34
- virtual void verifyPeer(const std::string&, const IceSSL::ConnectionInfoPtr&, const std::string&);
35
29
  virtual IceInternal::TransceiverPtr
36
30
  createTransceiver(const IceSSL::InstancePtr&, const IceInternal::TransceiverPtr&, const std::string&, bool);
37
31
 
@@ -45,9 +39,10 @@ public:
45
39
 
46
40
  private:
47
41
 
42
+ void cleanup();
48
43
  SSL_METHOD* getMethod(int);
49
44
  void setOptions(int);
50
- enum Protocols { SSLv3 = 0x01, TLSv1_0 = 0x02, TLSv1_1 = 0x04, TLSv1_2 = 0x08 };
45
+ enum Protocols { SSLv3 = 1, TLSv1_0 = 2, TLSv1_1 = 4, TLSv1_2 = 8, TLSv1_3 = 16 };
51
46
  int parseProtocols(const Ice::StringSeq&) const;
52
47
 
53
48
  SSL_CTX* _ctx;
@@ -1,11 +1,6 @@
1
- // **********************************************************************
2
1
  //
3
- // Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved.
2
+ // Copyright (c) ZeroC, Inc. All rights reserved.
4
3
  //
5
- // This copy of Ice is licensed to you under the terms described in the
6
- // ICE_LICENSE file included in this distribution.
7
- //
8
- // **********************************************************************
9
4
 
10
5
  #ifndef ICESSL_OPENSSL_ENGINE_F_H
11
6
  #define ICESSL_OPENSSL_ENGINE_F_H
@@ -1,11 +1,6 @@
1
- // **********************************************************************
2
1
  //
3
- // Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved.
2
+ // Copyright (c) ZeroC, Inc. All rights reserved.
4
3
  //
5
- // This copy of Ice is licensed to you under the terms described in the
6
- // ICE_LICENSE file included in this distribution.
7
- //
8
- // **********************************************************************
9
4
 
10
5
  #include <IceSSL/PluginI.h>
11
6
  #include <IceSSL/OpenSSL.h>
@@ -1,11 +1,6 @@
1
- // **********************************************************************
2
1
  //
3
- // Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved.
2
+ // Copyright (c) ZeroC, Inc. All rights reserved.
4
3
  //
5
- // This copy of Ice is licensed to you under the terms described in the
6
- // ICE_LICENSE file included in this distribution.
7
- //
8
- // **********************************************************************
9
4
 
10
5
  #include <IceSSL/OpenSSLTransceiverI.h>
11
6
  #include <IceSSL/OpenSSLEngine.h>
@@ -15,8 +10,10 @@
15
10
 
16
11
  #include <IceSSL/ConnectionInfo.h>
17
12
  #include <IceSSL/Instance.h>
13
+ #include <IceSSL/PluginI.h>
18
14
  #include <IceSSL/SSLEngine.h>
19
15
  #include <IceSSL/Util.h>
16
+
20
17
  #include <Ice/Communicator.h>
21
18
  #include <Ice/LoggerUtil.h>
22
19
  #include <Ice/Buffer.h>
@@ -77,6 +74,103 @@ IceSSL_opensslVerifyCallback(int ok, X509_STORE_CTX* ctx)
77
74
 
78
75
  }
79
76
 
77
+ namespace
78
+ {
79
+
80
+ TrustError trustStatusToTrustError(long status)
81
+ {
82
+ switch (status)
83
+ {
84
+ case X509_V_OK:
85
+ return IceSSL::ICE_ENUM(TrustError, NoError);
86
+
87
+ case X509_V_ERR_CERT_CHAIN_TOO_LONG:
88
+ return IceSSL::ICE_ENUM(TrustError, ChainTooLong);
89
+
90
+ case X509_V_ERR_EXCLUDED_VIOLATION:
91
+ return IceSSL::ICE_ENUM(TrustError, HasExcludedNameConstraint);
92
+
93
+ case X509_V_ERR_PERMITTED_VIOLATION:
94
+ return IceSSL::ICE_ENUM(TrustError, HasNonPermittedNameConstraint);
95
+
96
+ case X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION:
97
+ return IceSSL::ICE_ENUM(TrustError, HasNonSupportedCriticalExtension);
98
+
99
+ case X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE:
100
+ case X509_V_ERR_SUBTREE_MINMAX:
101
+ return IceSSL::ICE_ENUM(TrustError, HasNonSupportedNameConstraint);
102
+
103
+ case X509_V_ERR_HOSTNAME_MISMATCH:
104
+ case X509_V_ERR_IP_ADDRESS_MISMATCH:
105
+ return IceSSL::ICE_ENUM(TrustError, HostNameMismatch);
106
+
107
+ case X509_V_ERR_INVALID_CA:
108
+ case X509_V_ERR_INVALID_NON_CA:
109
+ case X509_V_ERR_PATH_LENGTH_EXCEEDED:
110
+ case X509_V_ERR_KEYUSAGE_NO_CERTSIGN:
111
+ case X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE:
112
+ return IceSSL::ICE_ENUM(TrustError, InvalidBasicConstraints);
113
+
114
+ case X509_V_ERR_INVALID_EXTENSION:
115
+ return IceSSL::ICE_ENUM(TrustError, InvalidExtension);
116
+
117
+ case X509_V_ERR_UNSUPPORTED_NAME_SYNTAX:
118
+ return IceSSL::ICE_ENUM(TrustError, InvalidNameConstraints);
119
+
120
+ case X509_V_ERR_INVALID_POLICY_EXTENSION:
121
+ case X509_V_ERR_NO_EXPLICIT_POLICY:
122
+ return IceSSL::ICE_ENUM(TrustError, InvalidPolicyConstraints);
123
+
124
+ case X509_V_ERR_INVALID_PURPOSE:
125
+ return IceSSL::ICE_ENUM(TrustError, InvalidPurpose);
126
+
127
+ case X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE:
128
+ case X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY:
129
+ case X509_V_ERR_CERT_SIGNATURE_FAILURE:
130
+ return IceSSL::ICE_ENUM(TrustError, InvalidSignature);
131
+
132
+ case X509_V_ERR_CERT_NOT_YET_VALID:
133
+ case X509_V_ERR_CERT_HAS_EXPIRED:
134
+ case X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD:
135
+ case X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD:
136
+ return IceSSL::ICE_ENUM(TrustError, InvalidTime);
137
+
138
+ case X509_V_ERR_CERT_REJECTED:
139
+ return IceSSL::ICE_ENUM(TrustError, NotTrusted);
140
+
141
+ case X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT:
142
+ case X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY:
143
+ case X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE:
144
+ return IceSSL::ICE_ENUM(TrustError, PartialChain);
145
+
146
+ case X509_V_ERR_CRL_HAS_EXPIRED:
147
+ case X509_V_ERR_CRL_NOT_YET_VALID:
148
+ case X509_V_ERR_CRL_SIGNATURE_FAILURE:
149
+ case X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD:
150
+ case X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD:
151
+ case X509_V_ERR_KEYUSAGE_NO_CRL_SIGN:
152
+ case X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE:
153
+ case X509_V_ERR_UNABLE_TO_GET_CRL:
154
+ case X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER:
155
+ case X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION:
156
+ case X509_V_ERR_CRL_PATH_VALIDATION_ERROR:
157
+ return IceSSL::ICE_ENUM(TrustError, RevocationStatusUnknown);
158
+
159
+ case X509_V_ERR_CERT_REVOKED:
160
+ return IceSSL::ICE_ENUM(TrustError, Revoked);
161
+
162
+ case X509_V_ERR_CERT_UNTRUSTED:
163
+ case X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT:
164
+ case X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN:
165
+ return IceSSL::ICE_ENUM(TrustError, UntrustedRoot);
166
+
167
+ default:
168
+ return IceSSL::ICE_ENUM(TrustError, UnknownTrustFailure);
169
+ }
170
+ }
171
+
172
+ }
173
+
80
174
  IceInternal::NativeInfoPtr
81
175
  OpenSSL::TransceiverI::getNativeInfo()
82
176
  {
@@ -99,31 +193,33 @@ OpenSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::
99
193
  if(!_ssl)
100
194
  {
101
195
  SOCKET fd = _delegate->getNativeInfo()->fd();
196
+ BIO* bio = 0;
102
197
  if(fd == INVALID_SOCKET)
103
198
  {
104
- //
105
- // The delegate has finished its initialization but may not have a file descriptor yet (e.g., Bluetooth).
106
- // The underlying transport must (eventually) be socket-based.
107
- //
108
- return IceInternal::SocketOperationRead;
199
+ assert(_sentBytes == 0);
200
+ _maxSendPacketSize = 128 * 1024; // 128KB
201
+ _maxRecvPacketSize = 128 * 1024; // 128KB
202
+ if(!BIO_new_bio_pair(&bio, _maxSendPacketSize, &_memBio, _maxRecvPacketSize))
203
+ {
204
+ bio = 0;
205
+ _memBio = 0;
206
+ }
109
207
  }
110
-
111
- #ifdef ICE_USE_IOCP
112
- _maxSendPacketSize = std::max(512, IceInternal::getSendBufferSize(fd));
113
- _maxRecvPacketSize = std::max(512, IceInternal::getRecvBufferSize(fd));
114
- BIO* bio;
115
- _sentBytes = 0;
116
- if(!BIO_new_bio_pair(&bio, _maxSendPacketSize, &_iocpBio, _maxRecvPacketSize))
208
+ else
117
209
  {
118
- bio = 0;
119
- _iocpBio = 0;
120
- }
210
+ #ifdef ICE_USE_IOCP
211
+ assert(_sentBytes == 0);
212
+ _maxSendPacketSize = std::max(512, IceInternal::getSendBufferSize(fd));
213
+ _maxRecvPacketSize = std::max(512, IceInternal::getRecvBufferSize(fd));
214
+ if(!BIO_new_bio_pair(&bio, _maxSendPacketSize, &_memBio, _maxRecvPacketSize))
215
+ {
216
+ bio = 0;
217
+ _memBio = 0;
218
+ }
121
219
  #else
122
- //
123
- // This static_cast is necessary due to 64bit windows. There SOCKET is a non-int type.
124
- //
125
- BIO* bio = BIO_new_socket(static_cast<int>(fd), 0);
220
+ bio = BIO_new_socket(fd, 0);
126
221
  #endif
222
+ }
127
223
 
128
224
  if(!bio)
129
225
  {
@@ -134,10 +230,11 @@ OpenSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::
134
230
  if(!_ssl)
135
231
  {
136
232
  BIO_free(bio);
137
- #ifdef ICE_USE_IOCP
138
- BIO_free(_iocpBio);
139
- _iocpBio = 0;
140
- #endif
233
+ if(_memBio)
234
+ {
235
+ BIO_free(_memBio);
236
+ _memBio = 0;
237
+ }
141
238
  throw SecurityException(__FILE__, __LINE__, "openssl failure");
142
239
  }
143
240
  SSL_set_bio(_ssl, bio, bio);
@@ -173,22 +270,41 @@ OpenSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::
173
270
  // Hostname verification was included in OpenSSL 1.0.2
174
271
  //
175
272
  #if defined(OPENSSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER >= 0x10002000L
176
- if(_engine->getCheckCertName() && !_host.empty() && (sslVerifyMode & SSL_VERIFY_PEER))
273
+ if(_engine->getCheckCertName() && !_host.empty())
177
274
  {
178
275
  X509_VERIFY_PARAM* param = SSL_get0_param(_ssl);
179
276
  if(IceInternal::isIpAddress(_host))
180
277
  {
181
- X509_VERIFY_PARAM_set1_ip_asc(param, _host.c_str());
278
+ if(!X509_VERIFY_PARAM_set1_ip_asc(param, _host.c_str()))
279
+ {
280
+ throw SecurityException(__FILE__, __LINE__, "IceSSL: error setting the expected IP address `"
281
+ + _host + "'");
282
+ }
182
283
  }
183
284
  else
184
285
  {
185
- X509_VERIFY_PARAM_set1_host(param, _host.c_str(), 0);
286
+ if(!X509_VERIFY_PARAM_set1_host(param, _host.c_str(), 0))
287
+ {
288
+ throw SecurityException(__FILE__, __LINE__, "IceSSL: error setting the expected host name `"
289
+ + _host + "'");
290
+ }
186
291
  }
187
292
  }
188
293
  #endif
189
294
 
190
295
  SSL_set_verify(_ssl, sslVerifyMode, IceSSL_opensslVerifyCallback);
191
296
  }
297
+
298
+ //
299
+ // Enable SNI
300
+ //
301
+ if(!_incoming && _engine->getServerNameIndication() && !_host.empty() && !IceInternal::isIpAddress(_host))
302
+ {
303
+ if(!SSL_set_tlsext_host_name(_ssl, _host.c_str()))
304
+ {
305
+ throw SecurityException(__FILE__, __LINE__, "IceSSL: setting SNI host failed `" + _host + "'");
306
+ }
307
+ }
192
308
  }
193
309
 
194
310
  while(!SSL_is_init_finished(_ssl))
@@ -213,8 +329,7 @@ OpenSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::
213
329
  sync.release();
214
330
  #endif
215
331
 
216
- #ifdef ICE_USE_IOCP
217
- if(BIO_ctrl_pending(_iocpBio))
332
+ if(_memBio && BIO_ctrl_pending(_memBio))
218
333
  {
219
334
  if(!send())
220
335
  {
@@ -222,7 +337,6 @@ OpenSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::
222
337
  }
223
338
  continue;
224
339
  }
225
- #endif
226
340
 
227
341
  if(ret <= 0)
228
342
  {
@@ -239,58 +353,55 @@ OpenSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::
239
353
  }
240
354
  case SSL_ERROR_WANT_READ:
241
355
  {
242
- #ifdef ICE_USE_IOCP
243
- if(receive())
356
+ if(_memBio && receive())
244
357
  {
245
358
  continue;
246
359
  }
247
- #endif
248
360
  return IceInternal::SocketOperationRead;
249
361
  }
250
362
  case SSL_ERROR_WANT_WRITE:
251
363
  {
252
- #ifdef ICE_USE_IOCP
253
- if(send())
364
+ if(_memBio && send())
254
365
  {
255
366
  continue;
256
367
  }
257
- #endif
258
368
  return IceInternal::SocketOperationWrite;
259
369
  }
260
370
  case SSL_ERROR_SYSCALL:
261
371
  {
262
- #ifndef ICE_USE_IOCP
263
- if(IceInternal::interrupted())
372
+ if(!_memBio)
264
373
  {
265
- break;
266
- }
267
-
268
- if(IceInternal::wouldBlock())
269
- {
270
- if(SSL_want_read(_ssl))
374
+ if(IceInternal::interrupted())
271
375
  {
272
- return IceInternal::SocketOperationRead;
376
+ break;
273
377
  }
274
- else if(SSL_want_write(_ssl))
378
+
379
+ if(IceInternal::wouldBlock())
275
380
  {
276
- return IceInternal::SocketOperationWrite;
381
+ if(SSL_want_read(_ssl))
382
+ {
383
+ return IceInternal::SocketOperationRead;
384
+ }
385
+ else if(SSL_want_write(_ssl))
386
+ {
387
+ return IceInternal::SocketOperationWrite;
388
+ }
389
+
390
+ break;
277
391
  }
278
392
 
279
- break;
280
- }
281
-
282
- if(IceInternal::connectionLost() || IceInternal::getSocketErrno() == 0)
283
- {
284
- throw ConnectionLostException(__FILE__, __LINE__, IceInternal::getSocketErrno());
393
+ if(IceInternal::connectionLost() || IceInternal::getSocketErrno() == 0)
394
+ {
395
+ throw ConnectionLostException(__FILE__, __LINE__, IceInternal::getSocketErrno());
396
+ }
285
397
  }
286
- #endif
287
398
  throw SocketException(__FILE__, __LINE__, IceInternal::getSocketErrno());
288
399
  }
289
400
  case SSL_ERROR_SSL:
290
401
  {
291
402
  ostringstream ostr;
292
403
  ostr << "SSL error occurred for new " << (_incoming ? "incoming" : "outgoing")
293
- << " connection:\nremote address = " << _delegate->toString() << "\n" << _engine->sslErrors();
404
+ << " connection:\n" << _delegate->toString() << "\n" << _engine->sslErrors();
294
405
  throw ProtocolException(__FILE__, __LINE__, ostr.str());
295
406
  }
296
407
  }
@@ -298,6 +409,7 @@ OpenSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::
298
409
  }
299
410
 
300
411
  long result = SSL_get_verify_result(_ssl);
412
+ _trustError = trustStatusToTrustError(result);
301
413
  if(result != X509_V_OK)
302
414
  {
303
415
  if(_engine->getVerifyPeer() == 0)
@@ -327,6 +439,25 @@ OpenSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::
327
439
  }
328
440
 
329
441
  _cipher = SSL_get_cipher_name(_ssl); // Nothing needs to be free'd.
442
+ #if defined(OPENSSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER < 0x10002000L
443
+ try
444
+ {
445
+ //
446
+ // Peer hostname verification is new in OpenSSL 1.0.2 for older versions
447
+ // We use IceSSL built-in hostname verification.
448
+ //
449
+ _engine->verifyPeerCertName(_host, ICE_DYNAMIC_CAST(ConnectionInfo, getInfo()));
450
+ }
451
+ catch(const SecurityException&)
452
+ {
453
+ _trustError = IceSSL::ICE_ENUM(TrustError, HostNameMismatch);
454
+ _verified = false;
455
+ if(_engine->getVerifyPeer() > 0)
456
+ {
457
+ throw;
458
+ }
459
+ }
460
+ #endif
330
461
  _engine->verifyPeer(_host, ICE_DYNAMIC_CAST(ConnectionInfo, getInfo()), toString());
331
462
 
332
463
  if(_engine->securityTraceLevel() >= 1)
@@ -349,7 +480,7 @@ OpenSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::
349
480
  out << "bits = " << SSL_CIPHER_get_bits(cipher, 0) << "\n";
350
481
  out << "protocol = " << SSL_get_version(_ssl) << "\n";
351
482
  }
352
- out << IceInternal::fdToString(SSL_get_fd(_ssl));
483
+ out << toString();
353
484
  }
354
485
 
355
486
  return IceInternal::SocketOperationNone;
@@ -382,13 +513,11 @@ OpenSSL::TransceiverI::close()
382
513
  _ssl = 0;
383
514
  }
384
515
 
385
- #ifdef ICE_USE_IOCP
386
- if(_iocpBio)
516
+ if(_memBio)
387
517
  {
388
- BIO_free(_iocpBio);
389
- _iocpBio = 0;
518
+ BIO_free(_memBio);
519
+ _memBio = 0;
390
520
  }
391
- #endif
392
521
 
393
522
  _delegate->close();
394
523
  }
@@ -401,15 +530,13 @@ OpenSSL::TransceiverI::write(IceInternal::Buffer& buf)
401
530
  return _delegate->write(buf);
402
531
  }
403
532
 
404
- #ifdef ICE_USE_IOCP
405
- if(_writeBuffer.i != _writeBuffer.b.end())
533
+ if(_memBio && _writeBuffer.i != _writeBuffer.b.end())
406
534
  {
407
535
  if(!send())
408
536
  {
409
537
  return IceInternal::SocketOperationWrite;
410
538
  }
411
539
  }
412
- #endif
413
540
 
414
541
  if(buf.i == buf.b.end())
415
542
  {
@@ -419,37 +546,39 @@ OpenSSL::TransceiverI::write(IceInternal::Buffer& buf)
419
546
  //
420
547
  // It's impossible for packetSize to be more than an Int.
421
548
  //
422
- int packetSize =
423
- #ifdef ICE_USE_IOCP
424
- std::min(static_cast<int>(_maxSendPacketSize), static_cast<int>(buf.b.end() - buf.i));
425
- #else
549
+ int packetSize = _memBio ?
550
+ std::min(static_cast<int>(_maxSendPacketSize), static_cast<int>(buf.b.end() - buf.i)) :
426
551
  static_cast<int>(buf.b.end() - buf.i);
427
- #endif
552
+
428
553
  while(buf.i != buf.b.end())
429
554
  {
430
555
  ERR_clear_error(); // Clear any spurious errors.
431
- #ifdef ICE_USE_IOCP
432
556
  int ret;
433
- if(_sentBytes)
557
+ if(_memBio)
434
558
  {
435
- ret = _sentBytes;
436
- _sentBytes = 0;
437
- }
438
- else
439
- {
440
- ret = SSL_write(_ssl, reinterpret_cast<const void*>(&*buf.i), packetSize);
441
- if(ret > 0)
559
+ if(_sentBytes)
442
560
  {
443
- if(!send())
561
+ ret = _sentBytes;
562
+ _sentBytes = 0;
563
+ }
564
+ else
565
+ {
566
+ ret = SSL_write(_ssl, reinterpret_cast<const void*>(&*buf.i), packetSize);
567
+ if(ret > 0)
444
568
  {
445
- _sentBytes = ret;
446
- return IceInternal::SocketOperationWrite;
569
+ if(!send())
570
+ {
571
+ _sentBytes = ret;
572
+ return IceInternal::SocketOperationWrite;
573
+ }
447
574
  }
448
575
  }
449
576
  }
450
- #else
451
- int ret = SSL_write(_ssl, reinterpret_cast<const void*>(&*buf.i), packetSize);
452
- #endif
577
+ else
578
+ {
579
+ ret = SSL_write(_ssl, reinterpret_cast<const void*>(&*buf.i), packetSize);
580
+ }
581
+
453
582
  if(ret <= 0)
454
583
  {
455
584
  switch(SSL_get_error(_ssl, ret))
@@ -468,35 +597,34 @@ OpenSSL::TransceiverI::write(IceInternal::Buffer& buf)
468
597
  }
469
598
  case SSL_ERROR_WANT_WRITE:
470
599
  {
471
- #ifdef ICE_USE_IOCP
472
- if(send())
600
+ if(_memBio && send())
473
601
  {
474
602
  continue;
475
603
  }
476
- #endif
477
604
  return IceInternal::SocketOperationWrite;
478
605
  }
479
606
  case SSL_ERROR_SYSCALL:
480
607
  {
481
- #ifndef ICE_USE_IOCP
482
-
483
- if(IceInternal::interrupted())
608
+ if(!_memBio)
484
609
  {
485
- continue;
486
- }
610
+ if(IceInternal::interrupted())
611
+ {
612
+ continue;
613
+ }
487
614
 
488
- if(IceInternal::noBuffers() && packetSize > 1024)
489
- {
490
- packetSize /= 2;
491
- continue;
492
- }
615
+ if(IceInternal::noBuffers() && packetSize > 1024)
616
+ {
617
+ packetSize /= 2;
618
+ continue;
619
+ }
493
620
 
494
- if(IceInternal::wouldBlock())
495
- {
496
- assert(SSL_want_write(_ssl));
497
- return IceInternal::SocketOperationWrite;
621
+ if(IceInternal::wouldBlock())
622
+ {
623
+ assert(SSL_want_write(_ssl));
624
+ return IceInternal::SocketOperationWrite;
625
+ }
498
626
  }
499
- #endif
627
+
500
628
  if(IceInternal::connectionLost() || IceInternal::getSocketErrno() == 0)
501
629
  {
502
630
  throw ConnectionLostException(__FILE__, __LINE__, IceInternal::getSocketErrno());
@@ -532,15 +660,13 @@ OpenSSL::TransceiverI::read(IceInternal::Buffer& buf)
532
660
  return _delegate->read(buf);
533
661
  }
534
662
 
535
- #ifdef ICE_USE_IOCP
536
- if(_readBuffer.i != _readBuffer.b.end())
663
+ if(_memBio && _readBuffer.i != _readBuffer.b.end())
537
664
  {
538
665
  if(!receive())
539
666
  {
540
667
  return IceInternal::SocketOperationRead;
541
668
  }
542
669
  }
543
- #endif
544
670
 
545
671
  //
546
672
  // Note: We assume that OpenSSL doesn't read more SSL records than
@@ -578,12 +704,10 @@ OpenSSL::TransceiverI::read(IceInternal::Buffer& buf)
578
704
  }
579
705
  case SSL_ERROR_WANT_READ:
580
706
  {
581
- #ifdef ICE_USE_IOCP
582
- if(receive())
707
+ if(_memBio && receive())
583
708
  {
584
709
  continue;
585
710
  }
586
- #endif
587
711
  return IceInternal::SocketOperationRead;
588
712
  }
589
713
  case SSL_ERROR_WANT_WRITE:
@@ -593,24 +717,26 @@ OpenSSL::TransceiverI::read(IceInternal::Buffer& buf)
593
717
  }
594
718
  case SSL_ERROR_SYSCALL:
595
719
  {
596
- #ifndef ICE_USE_IOCP
597
- if(IceInternal::interrupted())
720
+ if(!_memBio)
598
721
  {
599
- continue;
600
- }
722
+ if(IceInternal::interrupted())
723
+ {
724
+ continue;
725
+ }
601
726
 
602
- if(IceInternal::noBuffers() && packetSize > 1024)
603
- {
604
- packetSize /= 2;
605
- continue;
606
- }
727
+ if(IceInternal::noBuffers() && packetSize > 1024)
728
+ {
729
+ packetSize /= 2;
730
+ continue;
731
+ }
607
732
 
608
- if(IceInternal::wouldBlock())
609
- {
610
- assert(SSL_want_read(_ssl));
611
- return IceInternal::SocketOperationRead;
733
+ if(IceInternal::wouldBlock())
734
+ {
735
+ assert(SSL_want_read(_ssl));
736
+ return IceInternal::SocketOperationRead;
737
+ }
612
738
  }
613
- #endif
739
+
614
740
  if(IceInternal::connectionLost() || IceInternal::getSocketErrno() == 0)
615
741
  {
616
742
  throw ConnectionLostException(__FILE__, __LINE__, IceInternal::getSocketErrno());
@@ -660,10 +786,10 @@ OpenSSL::TransceiverI::startWrite(IceInternal::Buffer& buffer)
660
786
  int packetSize = std::min(static_cast<int>(_maxSendPacketSize), static_cast<int>(buffer.b.end() - buffer.i));
661
787
  _sentBytes = SSL_write(_ssl, reinterpret_cast<void*>(&*buffer.i), packetSize);
662
788
 
663
- assert(BIO_ctrl_pending(_iocpBio));
664
- _writeBuffer.b.resize( BIO_ctrl_pending(_iocpBio));
789
+ assert(BIO_ctrl_pending(_memBio));
790
+ _writeBuffer.b.resize( BIO_ctrl_pending(_memBio));
665
791
  _writeBuffer.i = _writeBuffer.b.begin();
666
- BIO_read(_iocpBio, _writeBuffer.i, static_cast<int>(_writeBuffer.b.size()));
792
+ BIO_read(_memBio, _writeBuffer.i, static_cast<int>(_writeBuffer.b.size()));
667
793
  }
668
794
 
669
795
  return _delegate->startWrite(_writeBuffer) && buffer.i == buffer.b.end();
@@ -705,8 +831,8 @@ OpenSSL::TransceiverI::startRead(IceInternal::Buffer& buffer)
705
831
  SSL_read(_ssl, reinterpret_cast<void*>(&*buffer.i), static_cast<int>(buffer.b.end() - buffer.i));
706
832
  assert(ret <= 0 && SSL_get_error(_ssl, ret) == SSL_ERROR_WANT_READ);
707
833
 
708
- assert(BIO_ctrl_get_read_request(_iocpBio));
709
- _readBuffer.b.resize(BIO_ctrl_get_read_request(_iocpBio));
834
+ assert(BIO_ctrl_get_read_request(_memBio));
835
+ _readBuffer.b.resize(BIO_ctrl_get_read_request(_memBio));
710
836
  _readBuffer.i = _readBuffer.b.begin();
711
837
  }
712
838
 
@@ -727,7 +853,7 @@ OpenSSL::TransceiverI::finishRead(IceInternal::Buffer& buffer)
727
853
  _delegate->finishRead(_readBuffer);
728
854
  if(_readBuffer.i == _readBuffer.b.end())
729
855
  {
730
- int n = BIO_write(_iocpBio, _readBuffer.b.begin(), static_cast<int>(_readBuffer.b.size()));
856
+ int n = BIO_write(_memBio, _readBuffer.b.begin(), static_cast<int>(_readBuffer.b.size()));
731
857
  if(n < 0) // Expected if the transceiver was closed.
732
858
  {
733
859
  throw SecurityException(__FILE__, __LINE__, "SSL bio write failed");
@@ -798,13 +924,15 @@ OpenSSL::TransceiverI::toDetailedString() const
798
924
  Ice::ConnectionInfoPtr
799
925
  OpenSSL::TransceiverI::getInfo() const
800
926
  {
801
- ConnectionInfoPtr info = ICE_MAKE_SHARED(ConnectionInfo);
927
+ ExtendedConnectionInfoPtr info = ICE_MAKE_SHARED(ExtendedConnectionInfo);
802
928
  info->underlying = _delegate->getInfo();
803
929
  info->incoming = _incoming;
804
930
  info->adapterName = _adapterName;
805
931
  info->cipher = _cipher;
806
932
  info->certs = _certs;
807
933
  info->verified = _verified;
934
+ info->errorCode = _trustError;
935
+ info->host = _incoming ? "" : _host;
808
936
  return info;
809
937
  }
810
938
 
@@ -837,7 +965,7 @@ OpenSSL::TransceiverI::verifyCallback(int ok, X509_STORE_CTX* c)
837
965
  out << "subject = " << buf << '\n';
838
966
  out << "depth = " << X509_STORE_CTX_get_error_depth(c) << '\n';
839
967
  out << "error = " << X509_verify_cert_error_string(err) << '\n';
840
- out << IceInternal::fdToString(SSL_get_fd(_ssl));
968
+ out << toString();
841
969
  }
842
970
 
843
971
  //
@@ -877,13 +1005,11 @@ OpenSSL::TransceiverI::TransceiverI(const InstancePtr& instance,
877
1005
  _delegate(delegate),
878
1006
  _connected(false),
879
1007
  _verified(false),
880
- _ssl(0)
881
- #ifdef ICE_USE_IOCP
882
- , _iocpBio(0),
1008
+ _ssl(0),
1009
+ _memBio(0),
883
1010
  _sentBytes(0),
884
1011
  _maxSendPacketSize(0),
885
1012
  _maxRecvPacketSize(0)
886
- #endif
887
1013
  {
888
1014
  }
889
1015
 
@@ -891,14 +1017,13 @@ OpenSSL::TransceiverI::~TransceiverI()
891
1017
  {
892
1018
  }
893
1019
 
894
- #ifdef ICE_USE_IOCP
895
1020
  bool
896
1021
  OpenSSL::TransceiverI::receive()
897
1022
  {
898
1023
  if(_readBuffer.i == _readBuffer.b.end())
899
1024
  {
900
- assert(BIO_ctrl_get_read_request(_iocpBio));
901
- _readBuffer.b.resize(BIO_ctrl_get_read_request(_iocpBio));
1025
+ assert(BIO_ctrl_get_read_request(_memBio));
1026
+ _readBuffer.b.resize(BIO_ctrl_get_read_request(_memBio));
902
1027
  _readBuffer.i = _readBuffer.b.begin();
903
1028
  }
904
1029
 
@@ -915,7 +1040,7 @@ OpenSSL::TransceiverI::receive()
915
1040
  #ifndef NDEBUG
916
1041
  int n =
917
1042
  #endif
918
- BIO_write(_iocpBio, &_readBuffer.b[0], static_cast<int>(_readBuffer.b.end() - _readBuffer.b.begin()));
1043
+ BIO_write(_memBio, &_readBuffer.b[0], static_cast<int>(_readBuffer.b.end() - _readBuffer.b.begin()));
919
1044
 
920
1045
  assert(n == static_cast<int>(_readBuffer.b.end() - _readBuffer.b.begin()));
921
1046
 
@@ -927,10 +1052,10 @@ OpenSSL::TransceiverI::send()
927
1052
  {
928
1053
  if(_writeBuffer.i == _writeBuffer.b.end())
929
1054
  {
930
- assert(BIO_ctrl_pending(_iocpBio));
931
- _writeBuffer.b.resize( BIO_ctrl_pending(_iocpBio));
1055
+ assert(BIO_ctrl_pending(_memBio));
1056
+ _writeBuffer.b.resize( BIO_ctrl_pending(_memBio));
932
1057
  _writeBuffer.i = _writeBuffer.b.begin();
933
- BIO_read(_iocpBio, _writeBuffer.i, static_cast<int>(_writeBuffer.b.size()));
1058
+ BIO_read(_memBio, _writeBuffer.i, static_cast<int>(_writeBuffer.b.size()));
934
1059
  }
935
1060
 
936
1061
  if(_writeBuffer.i != _writeBuffer.b.end())
@@ -942,4 +1067,3 @@ OpenSSL::TransceiverI::send()
942
1067
  }
943
1068
  return _writeBuffer.i == _writeBuffer.b.end();
944
1069
  }
945
- #endif