zeroc-ice 3.7.0 → 3.7.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (691) hide show
  1. checksums.yaml +5 -5
  2. data/ICE_LICENSE +1 -1
  3. data/bin/slice2rb +1 -6
  4. data/ext/Communicator.cpp +78 -10
  5. data/ext/Communicator.h +1 -6
  6. data/ext/Config.h +35 -6
  7. data/ext/Connection.cpp +22 -11
  8. data/ext/Connection.h +4 -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 +90 -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 +92 -60
  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 +2 -7
  29. data/ext/ValueFactoryManager.h +2 -7
  30. data/ext/extconf.rb +5 -3
  31. data/ext/ice/cpp/include/Ice/Application.h +234 -81
  32. data/ext/ice/cpp/include/Ice/AsyncResult.h +77 -6
  33. data/ext/ice/cpp/include/Ice/AsyncResultF.h +1 -6
  34. data/ext/ice/cpp/include/Ice/BatchRequestInterceptor.h +35 -7
  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 +43 -6
  38. data/ext/ice/cpp/include/Ice/Comparable.h +81 -6
  39. data/ext/ice/cpp/include/Ice/Config.h +12 -6
  40. data/ext/ice/cpp/include/Ice/ConnectionAsync.h +97 -6
  41. data/ext/ice/cpp/include/Ice/ConnectionIF.h +3 -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 +17 -7
  45. data/ext/ice/cpp/include/Ice/Dispatcher.h +22 -7
  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 +57 -20
  49. data/ext/ice/cpp/include/Ice/ExceptionHelpers.h +11 -6
  50. data/ext/ice/cpp/include/Ice/FactoryTable.h +12 -7
  51. data/ext/ice/cpp/include/Ice/FactoryTableInit.h +2 -7
  52. data/ext/ice/cpp/include/Ice/Format.h +13 -19
  53. data/ext/ice/cpp/include/Ice/Functional.h +6 -6
  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 +47 -18
  58. data/ext/ice/cpp/include/Ice/Incoming.h +27 -9
  59. data/ext/ice/cpp/include/Ice/IncomingAsync.h +47 -9
  60. data/ext/ice/cpp/include/Ice/IncomingAsyncF.h +1 -6
  61. data/ext/ice/cpp/include/Ice/Initialize.h +775 -103
  62. data/ext/ice/cpp/include/Ice/InputStream.h +642 -122
  63. data/ext/ice/cpp/include/Ice/InstanceF.h +1 -6
  64. data/ext/ice/cpp/include/Ice/InterfaceByValue.h +17 -6
  65. data/ext/ice/cpp/include/Ice/LocalObject.h +5 -6
  66. data/ext/ice/cpp/include/Ice/LocalObjectF.h +1 -6
  67. data/ext/ice/cpp/include/Ice/LoggerUtil.h +37 -11
  68. data/ext/ice/cpp/include/Ice/MetricsAdminI.h +11 -7
  69. data/ext/ice/cpp/include/Ice/MetricsFunctional.h +3 -6
  70. data/ext/ice/cpp/include/Ice/MetricsObserverI.h +18 -7
  71. data/ext/ice/cpp/include/Ice/NativePropertiesAdmin.h +46 -28
  72. data/ext/ice/cpp/include/Ice/Object.h +338 -52
  73. data/ext/ice/cpp/include/Ice/ObjectF.h +5 -6
  74. data/ext/ice/cpp/include/Ice/ObserverHelper.h +1 -6
  75. data/ext/ice/cpp/include/Ice/Optional.h +42 -12
  76. data/ext/ice/cpp/include/Ice/OutgoingAsync.h +32 -8
  77. data/ext/ice/cpp/include/Ice/OutgoingAsyncF.h +1 -6
  78. data/ext/ice/cpp/include/Ice/OutputStream.h +441 -102
  79. data/ext/ice/cpp/include/Ice/Protocol.h +31 -6
  80. data/ext/ice/cpp/include/Ice/Proxy.h +2288 -207
  81. data/ext/ice/cpp/include/Ice/ProxyF.h +3 -6
  82. data/ext/ice/cpp/include/Ice/ProxyFactoryF.h +1 -6
  83. data/ext/ice/cpp/include/Ice/ProxyHandle.h +10 -6
  84. data/ext/ice/cpp/include/Ice/ReferenceF.h +1 -6
  85. data/ext/ice/cpp/include/Ice/RegisterPlugins.h +67 -14
  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 +267 -143
  91. data/ext/ice/cpp/include/Ice/SliceChecksums.h +5 -6
  92. data/ext/ice/cpp/include/Ice/SlicedData.h +80 -38
  93. data/ext/ice/cpp/include/Ice/SlicedDataF.h +4 -6
  94. data/ext/ice/cpp/include/Ice/StreamHelpers.h +325 -122
  95. data/ext/ice/cpp/include/Ice/StringConverter.h +32 -6
  96. data/ext/ice/cpp/include/Ice/ThreadPoolF.h +1 -6
  97. data/ext/ice/cpp/include/Ice/UUID.h +2 -6
  98. data/ext/ice/cpp/include/Ice/UniquePtr.h +2 -7
  99. data/ext/ice/cpp/include/Ice/UniqueRef.h +6 -7
  100. data/ext/ice/cpp/include/Ice/UserExceptionFactory.h +6 -6
  101. data/ext/ice/cpp/include/Ice/Value.h +41 -6
  102. data/ext/ice/cpp/include/Ice/ValueF.h +3 -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 +75 -58
  106. data/ext/ice/cpp/include/IceSSL/Plugin.h +323 -223
  107. data/ext/ice/cpp/include/IceSSL/SChannel.h +41 -35
  108. data/ext/ice/cpp/include/IceSSL/SecureTransport.h +39 -33
  109. data/ext/ice/cpp/include/IceSSL/UWP.h +33 -29
  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 +35 -14
  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 +52 -36
  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 +3 -13
  127. data/ext/ice/cpp/include/IceUtil/MutexProtocol.h +1 -6
  128. data/ext/ice/cpp/include/IceUtil/MutexPtrLock.h +1 -6
  129. data/ext/ice/cpp/include/IceUtil/MutexPtrTryLock.h +1 -6
  130. data/ext/ice/cpp/include/IceUtil/Optional.h +103 -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 +12 -9
  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 +107 -92
  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 +5 -6
  148. data/ext/ice/cpp/include/IceUtil/UUID.h +5 -6
  149. data/ext/ice/cpp/include/IceUtil/UndefSysMacros.h +1 -6
  150. data/ext/ice/cpp/include/generated/Ice/BuiltinSequences.h +81 -26
  151. data/ext/ice/cpp/include/generated/Ice/Communicator.h +928 -136
  152. data/ext/ice/cpp/include/generated/Ice/CommunicatorF.h +14 -11
  153. data/ext/ice/cpp/include/generated/Ice/Connection.h +968 -180
  154. data/ext/ice/cpp/include/generated/Ice/ConnectionF.h +22 -15
  155. data/ext/ice/cpp/include/generated/Ice/Current.h +166 -9
  156. data/ext/ice/cpp/include/generated/Ice/Endpoint.h +476 -115
  157. data/ext/ice/cpp/include/generated/Ice/EndpointF.h +42 -23
  158. data/ext/ice/cpp/include/generated/Ice/EndpointTypes.h +30 -9
  159. data/ext/ice/cpp/include/generated/Ice/FacetMap.h +12 -11
  160. data/ext/ice/cpp/include/generated/Ice/Identity.h +56 -13
  161. data/ext/ice/cpp/include/generated/Ice/ImplicitContext.h +151 -34
  162. data/ext/ice/cpp/include/generated/Ice/ImplicitContextF.h +14 -11
  163. data/ext/ice/cpp/include/generated/Ice/Instrumentation.h +630 -89
  164. data/ext/ice/cpp/include/generated/Ice/InstrumentationF.h +20 -13
  165. data/ext/ice/cpp/include/generated/Ice/LocalException.h +5009 -770
  166. data/ext/ice/cpp/include/generated/Ice/Locator.h +2255 -441
  167. data/ext/ice/cpp/include/generated/Ice/LocatorF.h +32 -19
  168. data/ext/ice/cpp/include/generated/Ice/Logger.h +105 -32
  169. data/ext/ice/cpp/include/generated/Ice/LoggerF.h +14 -11
  170. data/ext/ice/cpp/include/generated/Ice/Metrics.h +2539 -471
  171. data/ext/ice/cpp/include/generated/Ice/ObjectAdapter.h +1005 -132
  172. data/ext/ice/cpp/include/generated/Ice/ObjectAdapterF.h +14 -11
  173. data/ext/ice/cpp/include/generated/Ice/ObjectFactory.h +73 -18
  174. data/ext/ice/cpp/include/generated/Ice/Plugin.h +143 -34
  175. data/ext/ice/cpp/include/generated/Ice/PluginF.h +18 -13
  176. data/ext/ice/cpp/include/generated/Ice/Process.h +514 -79
  177. data/ext/ice/cpp/include/generated/Ice/ProcessF.h +21 -14
  178. data/ext/ice/cpp/include/generated/Ice/Properties.h +307 -64
  179. data/ext/ice/cpp/include/generated/Ice/PropertiesAdmin.h +738 -127
  180. data/ext/ice/cpp/include/generated/Ice/PropertiesF.h +25 -16
  181. data/ext/ice/cpp/include/generated/Ice/RemoteLogger.h +1524 -284
  182. data/ext/ice/cpp/include/generated/Ice/Router.h +1007 -201
  183. data/ext/ice/cpp/include/generated/Ice/RouterF.h +21 -14
  184. data/ext/ice/cpp/include/generated/Ice/ServantLocator.h +175 -24
  185. data/ext/ice/cpp/include/generated/Ice/ServantLocatorF.h +14 -11
  186. data/ext/ice/cpp/include/generated/Ice/SliceChecksumDict.h +14 -9
  187. data/ext/ice/cpp/include/generated/Ice/ValueFactory.h +178 -29
  188. data/ext/ice/cpp/include/generated/Ice/Version.h +32 -9
  189. data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfo.h +72 -21
  190. data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfoF.h +14 -11
  191. data/ext/ice/cpp/include/generated/IceSSL/EndpointInfo.h +40 -15
  192. data/ext/ice/cpp/src/Ice/ACM.cpp +21 -14
  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 +7 -10
  210. data/ext/ice/cpp/src/Ice/CommunicatorF.cpp +4 -9
  211. data/ext/ice/cpp/src/Ice/CommunicatorI.cpp +56 -22
  212. data/ext/ice/cpp/src/Ice/CommunicatorI.h +15 -16
  213. data/ext/ice/cpp/src/Ice/Cond.cpp +1 -6
  214. data/ext/ice/cpp/src/Ice/ConnectRequestHandler.cpp +11 -11
  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 +28 -17
  218. data/ext/ice/cpp/src/Ice/ConnectionF.cpp +4 -9
  219. data/ext/ice/cpp/src/Ice/ConnectionFactory.cpp +167 -52
  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 +78 -60
  223. data/ext/ice/cpp/src/Ice/ConnectionI.h +10 -13
  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 +5 -12
  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 +25 -16
  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 +7 -18
  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 +2 -7
  245. data/ext/ice/cpp/src/Ice/EndpointI.h +5 -10
  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 +37 -59
  260. data/ext/ice/cpp/src/Ice/IPEndpointI.h +5 -10
  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 +7 -10
  265. data/ext/ice/cpp/src/Ice/ImplicitContextF.cpp +4 -9
  266. data/ext/ice/cpp/src/Ice/ImplicitContextI.cpp +3 -20
  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 +15 -26
  272. data/ext/ice/cpp/src/Ice/InputStream.cpp +45 -77
  273. data/ext/ice/cpp/src/Ice/Instance.cpp +70 -46
  274. data/ext/ice/cpp/src/Ice/Instance.h +3 -6
  275. data/ext/ice/cpp/src/Ice/Instrumentation.cpp +34 -19
  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 +280 -285
  280. data/ext/ice/cpp/src/Ice/LocalObject.cpp +1 -6
  281. data/ext/ice/cpp/src/Ice/Locator.cpp +274 -166
  282. data/ext/ice/cpp/src/Ice/LocatorF.cpp +4 -9
  283. data/ext/ice/cpp/src/Ice/LocatorInfo.cpp +28 -30
  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 +7 -10
  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 +296 -113
  294. data/ext/ice/cpp/src/Ice/MetricsAdminI.cpp +10 -15
  295. data/ext/ice/cpp/src/Ice/MetricsObserverI.cpp +1 -6
  296. data/ext/ice/cpp/src/Ice/Network.cpp +252 -271
  297. data/ext/ice/cpp/src/Ice/Network.h +6 -20
  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 +16 -17
  305. data/ext/ice/cpp/src/Ice/ObjectAdapter.cpp +7 -10
  306. data/ext/ice/cpp/src/Ice/ObjectAdapterF.cpp +4 -9
  307. data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.cpp +53 -24
  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 +137 -156
  311. data/ext/ice/cpp/src/Ice/ObjectAdapterI.h +15 -16
  312. data/ext/ice/cpp/src/Ice/ObjectFactory.cpp +7 -10
  313. data/ext/ice/cpp/src/Ice/ObserverHelper.cpp +1 -6
  314. data/ext/ice/cpp/src/Ice/OpaqueEndpointI.cpp +29 -51
  315. data/ext/ice/cpp/src/Ice/OpaqueEndpointI.h +2 -7
  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 +10 -11
  319. data/ext/ice/cpp/src/Ice/PluginF.cpp +4 -9
  320. data/ext/ice/cpp/src/Ice/PluginManagerI.cpp +15 -39
  321. data/ext/ice/cpp/src/Ice/PluginManagerI.h +3 -8
  322. data/ext/ice/cpp/src/Ice/Process.cpp +66 -42
  323. data/ext/ice/cpp/src/Ice/ProcessF.cpp +4 -9
  324. data/ext/ice/cpp/src/Ice/Properties.cpp +7 -10
  325. data/ext/ice/cpp/src/Ice/PropertiesAdmin.cpp +84 -54
  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 +25 -35
  330. data/ext/ice/cpp/src/Ice/PropertiesI.h +10 -15
  331. data/ext/ice/cpp/src/Ice/PropertyNames.cpp +45 -8
  332. data/ext/ice/cpp/src/Ice/PropertyNames.h +2 -7
  333. data/ext/ice/cpp/src/Ice/Protocol.cpp +5 -18
  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 +54 -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 +116 -38
  344. data/ext/ice/cpp/src/Ice/Reference.h +13 -7
  345. data/ext/ice/cpp/src/Ice/ReferenceFactory.cpp +52 -98
  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 +194 -113
  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 +160 -87
  362. data/ext/ice/cpp/src/Ice/RouterF.cpp +4 -9
  363. data/ext/ice/cpp/src/Ice/RouterInfo.cpp +8 -35
  364. data/ext/ice/cpp/src/Ice/RouterInfo.h +1 -8
  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 +76 -49
  368. data/ext/ice/cpp/src/Ice/Selector.h +1 -6
  369. data/ext/ice/cpp/src/Ice/ServantLocator.cpp +7 -10
  370. data/ext/ice/cpp/src/Ice/ServantLocatorF.cpp +4 -9
  371. data/ext/ice/cpp/src/Ice/ServantManager.cpp +21 -42
  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 +46 -69
  378. data/ext/ice/cpp/src/Ice/StreamSocket.h +1 -6
  379. data/ext/ice/cpp/src/Ice/StringConverterPlugin.cpp +10 -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 +13 -19
  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 +13 -16
  390. data/ext/ice/cpp/src/Ice/TcpEndpointI.h +2 -7
  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 +79 -19
  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 +30 -33
  408. data/ext/ice/cpp/src/Ice/UdpEndpointI.h +2 -7
  409. data/ext/ice/cpp/src/Ice/UdpTransceiver.cpp +49 -79
  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 +10 -11
  413. data/ext/ice/cpp/src/Ice/ValueFactoryManagerI.cpp +3 -12
  414. data/ext/ice/cpp/src/Ice/ValueFactoryManagerI.h +2 -7
  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 +4 -10
  422. data/ext/ice/cpp/src/Ice/WSEndpoint.h +2 -7
  423. data/ext/ice/cpp/src/Ice/WSTransceiver.cpp +25 -30
  424. data/ext/ice/cpp/src/Ice/WSTransceiver.h +1 -7
  425. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.cpp +86 -33
  426. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.h +1083 -129
  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 +71 -30
  434. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.h +640 -79
  435. data/ext/ice/cpp/src/IceLocatorDiscovery/Plugin.h +1 -6
  436. data/ext/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +122 -25
  437. data/ext/ice/cpp/src/IceSSL/AcceptorI.cpp +2 -9
  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 +7 -10
  442. data/ext/ice/cpp/src/IceSSL/ConnectionInfoF.cpp +4 -9
  443. data/ext/ice/cpp/src/IceSSL/ConnectorI.cpp +2 -9
  444. data/ext/ice/cpp/src/IceSSL/ConnectorI.h +1 -6
  445. data/ext/ice/cpp/src/IceSSL/EndpointI.cpp +9 -14
  446. data/ext/ice/cpp/src/IceSSL/EndpointI.h +3 -8
  447. data/ext/ice/cpp/src/IceSSL/EndpointInfo.cpp +7 -10
  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 +11 -19
  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 +190 -206
  457. data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.h +2 -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 +1 -6
  461. data/ext/ice/cpp/src/IceSSL/PluginI.h +1 -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 +71 -62
  470. data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.h +7 -6
  471. data/ext/ice/cpp/src/IceSSL/SSLEngine.cpp +26 -28
  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 +47 -27
  480. data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.h +6 -7
  481. data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.cpp +41 -34
  482. data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.h +5 -6
  483. data/ext/ice/cpp/src/IceSSL/TrustManager.cpp +4 -10
  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 +6 -11
  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 -11
  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 +10 -17
  511. data/ext/ice/cpp/src/IceUtil/UUID.cpp +8 -13
  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 +178 -170
  516. data/ext/ice/cpp/src/Slice/CPlusPlusUtil.h +8 -12
  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 +424 -438
  522. data/ext/ice/cpp/src/Slice/Grammar.h +7 -7
  523. data/ext/ice/cpp/src/Slice/GrammarUtil.h +1 -7
  524. data/ext/ice/cpp/src/Slice/JavaUtil.cpp +195 -122
  525. data/ext/ice/cpp/src/Slice/JavaUtil.h +12 -12
  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 +6 -6
  530. data/ext/ice/cpp/src/Slice/PHPUtil.h +1 -6
  531. data/ext/ice/cpp/src/Slice/Parser.cpp +535 -266
  532. data/ext/ice/cpp/src/Slice/Parser.h +72 -12
  533. data/ext/ice/cpp/src/Slice/Preprocessor.cpp +26 -17
  534. data/ext/ice/cpp/src/Slice/Preprocessor.h +2 -7
  535. data/ext/ice/cpp/src/Slice/Python.cpp +28 -42
  536. data/ext/ice/cpp/src/Slice/PythonUtil.cpp +137 -53
  537. data/ext/ice/cpp/src/Slice/PythonUtil.h +2 -7
  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 +296 -217
  542. data/ext/ice/cpp/src/Slice/SliceUtil.cpp +2 -8
  543. data/ext/ice/cpp/src/Slice/StringLiteralUtil.cpp +109 -27
  544. data/ext/ice/cpp/src/Slice/Util.h +5 -9
  545. data/ext/ice/mcpp/Makefile +2 -5
  546. data/ice.gemspec +3 -5
  547. data/lib/Glacier2.rb +1 -6
  548. data/lib/Glacier2/Metrics.rb +3 -8
  549. data/lib/Glacier2/PermissionsVerifier.rb +3 -8
  550. data/lib/Glacier2/PermissionsVerifierF.rb +3 -8
  551. data/lib/Glacier2/Router.rb +3 -8
  552. data/lib/Glacier2/RouterF.rb +3 -8
  553. data/lib/Glacier2/SSLInfo.rb +3 -8
  554. data/lib/Glacier2/Session.rb +3 -8
  555. data/lib/Ice.rb +2 -7
  556. data/lib/Ice/BuiltinSequences.rb +3 -8
  557. data/lib/Ice/Communicator.rb +3 -8
  558. data/lib/Ice/CommunicatorF.rb +3 -8
  559. data/lib/Ice/Connection.rb +3 -8
  560. data/lib/Ice/ConnectionF.rb +3 -8
  561. data/lib/Ice/Current.rb +3 -8
  562. data/lib/Ice/Endpoint.rb +3 -8
  563. data/lib/Ice/EndpointF.rb +3 -8
  564. data/lib/Ice/EndpointTypes.rb +3 -8
  565. data/lib/Ice/FacetMap.rb +3 -8
  566. data/lib/Ice/Identity.rb +3 -8
  567. data/lib/Ice/ImplicitContext.rb +3 -8
  568. data/lib/Ice/ImplicitContextF.rb +3 -8
  569. data/lib/Ice/Instrumentation.rb +3 -8
  570. data/lib/Ice/InstrumentationF.rb +3 -8
  571. data/lib/Ice/LocalException.rb +3 -8
  572. data/lib/Ice/Locator.rb +3 -8
  573. data/lib/Ice/LocatorF.rb +3 -8
  574. data/lib/Ice/Logger.rb +3 -8
  575. data/lib/Ice/LoggerF.rb +3 -8
  576. data/lib/Ice/Metrics.rb +3 -8
  577. data/lib/Ice/ObjectAdapter.rb +3 -8
  578. data/lib/Ice/ObjectAdapterF.rb +3 -8
  579. data/lib/Ice/ObjectFactory.rb +3 -8
  580. data/lib/Ice/Plugin.rb +3 -8
  581. data/lib/Ice/PluginF.rb +3 -8
  582. data/lib/Ice/Process.rb +3 -8
  583. data/lib/Ice/ProcessF.rb +3 -8
  584. data/lib/Ice/Properties.rb +3 -8
  585. data/lib/Ice/PropertiesAdmin.rb +3 -8
  586. data/lib/Ice/PropertiesF.rb +3 -8
  587. data/lib/Ice/RemoteLogger.rb +3 -8
  588. data/lib/Ice/Router.rb +3 -8
  589. data/lib/Ice/RouterF.rb +3 -8
  590. data/lib/Ice/ServantLocator.rb +3 -8
  591. data/lib/Ice/ServantLocatorF.rb +3 -8
  592. data/lib/Ice/SliceChecksumDict.rb +3 -8
  593. data/lib/Ice/ValueFactory.rb +3 -8
  594. data/lib/Ice/Version.rb +3 -8
  595. data/lib/IceBox.rb +1 -6
  596. data/lib/IceBox/IceBox.rb +3 -8
  597. data/lib/IceGrid.rb +1 -6
  598. data/lib/IceGrid/Admin.rb +3 -8
  599. data/lib/IceGrid/Descriptor.rb +3 -8
  600. data/lib/IceGrid/Exception.rb +3 -8
  601. data/lib/IceGrid/FileParser.rb +3 -8
  602. data/lib/IceGrid/PluginFacade.rb +3 -8
  603. data/lib/IceGrid/Registry.rb +3 -8
  604. data/lib/IceGrid/Session.rb +3 -8
  605. data/lib/IceGrid/UserAccountMapper.rb +3 -8
  606. data/lib/IcePatch2.rb +1 -6
  607. data/lib/IcePatch2/FileInfo.rb +3 -8
  608. data/lib/IcePatch2/FileServer.rb +3 -8
  609. data/lib/IceStorm.rb +1 -6
  610. data/lib/IceStorm/IceStorm.rb +3 -8
  611. data/lib/IceStorm/Metrics.rb +3 -8
  612. data/slice/Glacier2/Metrics.ice +14 -8
  613. data/slice/Glacier2/PermissionsVerifier.ice +11 -7
  614. data/slice/Glacier2/PermissionsVerifierF.ice +11 -7
  615. data/slice/Glacier2/Router.ice +12 -8
  616. data/slice/Glacier2/RouterF.ice +11 -7
  617. data/slice/Glacier2/SSLInfo.ice +11 -7
  618. data/slice/Glacier2/Session.ice +11 -7
  619. data/slice/Ice/BuiltinSequences.ice +13 -7
  620. data/slice/Ice/Communicator.ice +143 -102
  621. data/slice/Ice/CommunicatorF.ice +13 -7
  622. data/slice/Ice/Connection.ice +65 -29
  623. data/slice/Ice/ConnectionF.ice +13 -7
  624. data/slice/Ice/Current.ice +31 -26
  625. data/slice/Ice/Endpoint.ice +24 -21
  626. data/slice/Ice/EndpointF.ice +14 -8
  627. data/slice/Ice/EndpointTypes.ice +15 -9
  628. data/slice/Ice/FacetMap.ice +14 -8
  629. data/slice/Ice/Identity.ice +13 -7
  630. data/slice/Ice/ImplicitContext.ice +31 -25
  631. data/slice/Ice/ImplicitContextF.ice +12 -7
  632. data/slice/Ice/Instrumentation.ice +19 -13
  633. data/slice/Ice/InstrumentationF.ice +13 -7
  634. data/slice/Ice/LocalException.ice +35 -29
  635. data/slice/Ice/Locator.ice +14 -8
  636. data/slice/Ice/LocatorF.ice +13 -7
  637. data/slice/Ice/Logger.ice +19 -13
  638. data/slice/Ice/LoggerF.ice +13 -7
  639. data/slice/Ice/Metrics.ice +26 -18
  640. data/slice/Ice/ObjectAdapter.ice +63 -45
  641. data/slice/Ice/ObjectAdapterF.ice +13 -7
  642. data/slice/Ice/ObjectFactory.ice +20 -12
  643. data/slice/Ice/Plugin.ice +19 -10
  644. data/slice/Ice/PluginF.ice +17 -7
  645. data/slice/Ice/Process.ice +13 -7
  646. data/slice/Ice/ProcessF.ice +13 -7
  647. data/slice/Ice/Properties.ice +35 -24
  648. data/slice/Ice/PropertiesAdmin.ice +13 -7
  649. data/slice/Ice/PropertiesF.ice +13 -7
  650. data/slice/Ice/RemoteLogger.ice +23 -28
  651. data/slice/Ice/Router.ice +14 -8
  652. data/slice/Ice/RouterF.ice +13 -7
  653. data/slice/Ice/ServantLocator.ice +31 -23
  654. data/slice/Ice/ServantLocatorF.ice +13 -7
  655. data/slice/Ice/SliceChecksumDict.ice +13 -7
  656. data/slice/Ice/ValueFactory.ice +31 -26
  657. data/slice/Ice/Version.ice +13 -7
  658. data/slice/IceBT/ConnectionInfo.ice +12 -7
  659. data/slice/IceBT/EndpointInfo.ice +13 -8
  660. data/slice/IceBT/Types.ice +12 -7
  661. data/slice/IceBox/IceBox.ice +30 -11
  662. data/slice/IceDiscovery/IceDiscovery.ice +68 -7
  663. data/slice/IceGrid/Admin.ice +41 -35
  664. data/slice/IceGrid/Descriptor.ice +15 -10
  665. data/slice/IceGrid/Exception.ice +15 -10
  666. data/slice/IceGrid/FileParser.ice +14 -8
  667. data/slice/IceGrid/PluginFacade.ice +17 -11
  668. data/slice/IceGrid/Registry.ice +13 -7
  669. data/slice/IceGrid/Session.ice +18 -12
  670. data/slice/IceGrid/UserAccountMapper.ice +16 -10
  671. data/slice/IceIAP/ConnectionInfo.ice +11 -8
  672. data/slice/IceIAP/EndpointInfo.ice +11 -8
  673. data/slice/IceLocatorDiscovery/IceLocatorDiscovery.ice +12 -7
  674. data/slice/IcePatch2/FileInfo.ice +12 -7
  675. data/slice/IcePatch2/FileServer.ice +13 -8
  676. data/slice/IceSSL/ConnectionInfo.ice +16 -9
  677. data/slice/IceSSL/ConnectionInfoF.ice +14 -8
  678. data/slice/IceSSL/EndpointInfo.ice +14 -8
  679. data/slice/IceStorm/IceStorm.ice +20 -15
  680. data/slice/IceStorm/Metrics.ice +12 -8
  681. metadata +7 -13
  682. data/BZIP2_LICENSE +0 -42
  683. data/ext/ice/bzip2/blocksort.c +0 -1094
  684. data/ext/ice/bzip2/bzlib.c +0 -1572
  685. data/ext/ice/bzip2/bzlib.h +0 -282
  686. data/ext/ice/bzip2/bzlib_private.h +0 -509
  687. data/ext/ice/bzip2/compress.c +0 -672
  688. data/ext/ice/bzip2/crctable.c +0 -104
  689. data/ext/ice/bzip2/decompress.c +0 -646
  690. data/ext/ice/bzip2/huffman.c +0 -205
  691. data/ext/ice/bzip2/randtable.c +0 -84
@@ -1,11 +1,6 @@
1
- // **********************************************************************
2
1
  //
3
- // Copyright (c) 2003-2017 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-2017 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-2017 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-2017 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>
@@ -99,50 +94,49 @@ OpenSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::
99
94
  if(!_ssl)
100
95
  {
101
96
  SOCKET fd = _delegate->getNativeInfo()->fd();
97
+ BIO* bio = 0;
102
98
  if(fd == INVALID_SOCKET)
103
99
  {
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;
100
+ assert(_sentBytes == 0);
101
+ _maxSendPacketSize = 128 * 1024; // 128KB
102
+ _maxRecvPacketSize = 128 * 1024; // 128KB
103
+ if(!BIO_new_bio_pair(&bio, _maxSendPacketSize, &_memBio, _maxRecvPacketSize))
104
+ {
105
+ bio = 0;
106
+ _memBio = 0;
107
+ }
109
108
  }
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))
109
+ else
117
110
  {
118
- bio = 0;
119
- _iocpBio = 0;
120
- }
111
+ #ifdef ICE_USE_IOCP
112
+ assert(_sentBytes == 0);
113
+ _maxSendPacketSize = std::max(512, IceInternal::getSendBufferSize(fd));
114
+ _maxRecvPacketSize = std::max(512, IceInternal::getRecvBufferSize(fd));
115
+ if(!BIO_new_bio_pair(&bio, _maxSendPacketSize, &_memBio, _maxRecvPacketSize))
116
+ {
117
+ bio = 0;
118
+ _memBio = 0;
119
+ }
121
120
  #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);
121
+ bio = BIO_new_socket(fd, 0);
126
122
  #endif
123
+ }
127
124
 
128
125
  if(!bio)
129
126
  {
130
- SecurityException ex(__FILE__, __LINE__);
131
- ex.reason = "openssl failure";
132
- throw ex;
127
+ throw SecurityException(__FILE__, __LINE__, "openssl failure");
133
128
  }
134
129
 
135
130
  _ssl = SSL_new(_engine->context());
136
131
  if(!_ssl)
137
132
  {
138
133
  BIO_free(bio);
139
- #ifdef ICE_USE_IOCP
140
- BIO_free(_iocpBio);
141
- _iocpBio = 0;
142
- #endif
143
- SecurityException ex(__FILE__, __LINE__);
144
- ex.reason = "openssl failure";
145
- throw ex;
134
+ if(_memBio)
135
+ {
136
+ BIO_free(_memBio);
137
+ _memBio = 0;
138
+ }
139
+ throw SecurityException(__FILE__, __LINE__, "openssl failure");
146
140
  }
147
141
  SSL_set_bio(_ssl, bio, bio);
148
142
 
@@ -177,22 +171,41 @@ OpenSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::
177
171
  // Hostname verification was included in OpenSSL 1.0.2
178
172
  //
179
173
  #if defined(OPENSSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER >= 0x10002000L
180
- if(_engine->getCheckCertName() && !_host.empty() && (sslVerifyMode & SSL_VERIFY_PEER))
174
+ if(_engine->getCheckCertName() && !_host.empty())
181
175
  {
182
176
  X509_VERIFY_PARAM* param = SSL_get0_param(_ssl);
183
177
  if(IceInternal::isIpAddress(_host))
184
178
  {
185
- X509_VERIFY_PARAM_set1_ip_asc(param, _host.c_str());
179
+ if(!X509_VERIFY_PARAM_set1_ip_asc(param, _host.c_str()))
180
+ {
181
+ throw SecurityException(__FILE__, __LINE__, "IceSSL: error setting the expected IP address `"
182
+ + _host + "'");
183
+ }
186
184
  }
187
185
  else
188
186
  {
189
- X509_VERIFY_PARAM_set1_host(param, _host.c_str(), 0);
187
+ if(!X509_VERIFY_PARAM_set1_host(param, _host.c_str(), 0))
188
+ {
189
+ throw SecurityException(__FILE__, __LINE__, "IceSSL: error setting the expected host name `"
190
+ + _host + "'");
191
+ }
190
192
  }
191
193
  }
192
194
  #endif
193
195
 
194
196
  SSL_set_verify(_ssl, sslVerifyMode, IceSSL_opensslVerifyCallback);
195
197
  }
198
+
199
+ //
200
+ // Enable SNI
201
+ //
202
+ if(!_incoming && _engine->getServerNameIndication() && !_host.empty() && !IceInternal::isIpAddress(_host))
203
+ {
204
+ if(!SSL_set_tlsext_host_name(_ssl, _host.c_str()))
205
+ {
206
+ throw SecurityException(__FILE__, __LINE__, "IceSSL: setting SNI host failed `" + _host + "'");
207
+ }
208
+ }
196
209
  }
197
210
 
198
211
  while(!SSL_is_init_finished(_ssl))
@@ -217,8 +230,7 @@ OpenSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::
217
230
  sync.release();
218
231
  #endif
219
232
 
220
- #ifdef ICE_USE_IOCP
221
- if(BIO_ctrl_pending(_iocpBio))
233
+ if(_memBio && BIO_ctrl_pending(_memBio))
222
234
  {
223
235
  if(!send())
224
236
  {
@@ -226,7 +238,6 @@ OpenSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::
226
238
  }
227
239
  continue;
228
240
  }
229
- #endif
230
241
 
231
242
  if(ret <= 0)
232
243
  {
@@ -239,71 +250,60 @@ OpenSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::
239
250
  }
240
251
  case SSL_ERROR_ZERO_RETURN:
241
252
  {
242
- ConnectionLostException ex(__FILE__, __LINE__);
243
- ex.error = IceInternal::getSocketErrno();
244
- throw ex;
253
+ throw ConnectionLostException(__FILE__, __LINE__, IceInternal::getSocketErrno());
245
254
  }
246
255
  case SSL_ERROR_WANT_READ:
247
256
  {
248
- #ifdef ICE_USE_IOCP
249
- if(receive())
257
+ if(_memBio && receive())
250
258
  {
251
259
  continue;
252
260
  }
253
- #endif
254
261
  return IceInternal::SocketOperationRead;
255
262
  }
256
263
  case SSL_ERROR_WANT_WRITE:
257
264
  {
258
- #ifdef ICE_USE_IOCP
259
- if(send())
265
+ if(_memBio && send())
260
266
  {
261
267
  continue;
262
268
  }
263
- #endif
264
269
  return IceInternal::SocketOperationWrite;
265
270
  }
266
271
  case SSL_ERROR_SYSCALL:
267
272
  {
268
- #ifndef ICE_USE_IOCP
269
- if(IceInternal::interrupted())
270
- {
271
- break;
272
- }
273
-
274
- if(IceInternal::wouldBlock())
273
+ if(!_memBio)
275
274
  {
276
- if(SSL_want_read(_ssl))
275
+ if(IceInternal::interrupted())
277
276
  {
278
- return IceInternal::SocketOperationRead;
277
+ break;
279
278
  }
280
- else if(SSL_want_write(_ssl))
279
+
280
+ if(IceInternal::wouldBlock())
281
281
  {
282
- return IceInternal::SocketOperationWrite;
282
+ if(SSL_want_read(_ssl))
283
+ {
284
+ return IceInternal::SocketOperationRead;
285
+ }
286
+ else if(SSL_want_write(_ssl))
287
+ {
288
+ return IceInternal::SocketOperationWrite;
289
+ }
290
+
291
+ break;
283
292
  }
284
293
 
285
- break;
286
- }
287
-
288
- if(IceInternal::connectionLost() || IceInternal::getSocketErrno() == 0)
289
- {
290
- ConnectionLostException ex(__FILE__, __LINE__);
291
- ex.error = IceInternal::getSocketErrno();
292
- throw ex;
294
+ if(IceInternal::connectionLost() || IceInternal::getSocketErrno() == 0)
295
+ {
296
+ throw ConnectionLostException(__FILE__, __LINE__, IceInternal::getSocketErrno());
297
+ }
293
298
  }
294
- #endif
295
- SocketException ex(__FILE__, __LINE__);
296
- ex.error = IceInternal::getSocketErrno();
297
- throw ex;
299
+ throw SocketException(__FILE__, __LINE__, IceInternal::getSocketErrno());
298
300
  }
299
301
  case SSL_ERROR_SSL:
300
302
  {
301
303
  ostringstream ostr;
302
304
  ostr << "SSL error occurred for new " << (_incoming ? "incoming" : "outgoing")
303
- << " connection:\nremote address = " << _delegate->toString() << "\n" << _engine->sslErrors();
304
- ProtocolException ex(__FILE__, __LINE__);
305
- ex.reason = ostr.str();
306
- throw ex;
305
+ << " connection:\n" << _delegate->toString() << "\n" << _engine->sslErrors();
306
+ throw ProtocolException(__FILE__, __LINE__, ostr.str());
307
307
  }
308
308
  }
309
309
  }
@@ -325,14 +325,12 @@ OpenSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::
325
325
  {
326
326
  ostringstream ostr;
327
327
  ostr << "IceSSL: certificate verification failed:\n" << X509_verify_cert_error_string(result);
328
- string msg = ostr.str();
328
+ const string msg = ostr.str();
329
329
  if(_engine->securityTraceLevel() >= 1)
330
330
  {
331
331
  _instance->logger()->trace(_instance->traceCategory(), msg);
332
332
  }
333
- SecurityException ex(__FILE__, __LINE__);
334
- ex.reason = msg;
335
- throw ex;
333
+ throw SecurityException(__FILE__, __LINE__, msg);
336
334
  }
337
335
  }
338
336
  else
@@ -341,6 +339,24 @@ OpenSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::
341
339
  }
342
340
 
343
341
  _cipher = SSL_get_cipher_name(_ssl); // Nothing needs to be free'd.
342
+ #if defined(OPENSSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER < 0x10002000L
343
+ try
344
+ {
345
+ //
346
+ // Peer hostname verification is new in OpenSSL 1.0.2 for older versions
347
+ // We use IceSSL built-in hostname verification.
348
+ //
349
+ _engine->verifyPeerCertName(_host, ICE_DYNAMIC_CAST(ConnectionInfo, getInfo()));
350
+ }
351
+ catch(const SecurityException&)
352
+ {
353
+ _verified = false;
354
+ if(_engine->getVerifyPeer() > 0)
355
+ {
356
+ throw;
357
+ }
358
+ }
359
+ #endif
344
360
  _engine->verifyPeer(_host, ICE_DYNAMIC_CAST(ConnectionInfo, getInfo()), toString());
345
361
 
346
362
  if(_engine->securityTraceLevel() >= 1)
@@ -363,7 +379,7 @@ OpenSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::
363
379
  out << "bits = " << SSL_CIPHER_get_bits(cipher, 0) << "\n";
364
380
  out << "protocol = " << SSL_get_version(_ssl) << "\n";
365
381
  }
366
- out << IceInternal::fdToString(SSL_get_fd(_ssl));
382
+ out << toString();
367
383
  }
368
384
 
369
385
  return IceInternal::SocketOperationNone;
@@ -396,13 +412,11 @@ OpenSSL::TransceiverI::close()
396
412
  _ssl = 0;
397
413
  }
398
414
 
399
- #ifdef ICE_USE_IOCP
400
- if(_iocpBio)
415
+ if(_memBio)
401
416
  {
402
- BIO_free(_iocpBio);
403
- _iocpBio = 0;
417
+ BIO_free(_memBio);
418
+ _memBio = 0;
404
419
  }
405
- #endif
406
420
 
407
421
  _delegate->close();
408
422
  }
@@ -415,15 +429,13 @@ OpenSSL::TransceiverI::write(IceInternal::Buffer& buf)
415
429
  return _delegate->write(buf);
416
430
  }
417
431
 
418
- #ifdef ICE_USE_IOCP
419
- if(_writeBuffer.i != _writeBuffer.b.end())
432
+ if(_memBio && _writeBuffer.i != _writeBuffer.b.end())
420
433
  {
421
434
  if(!send())
422
435
  {
423
436
  return IceInternal::SocketOperationWrite;
424
437
  }
425
438
  }
426
- #endif
427
439
 
428
440
  if(buf.i == buf.b.end())
429
441
  {
@@ -433,37 +445,39 @@ OpenSSL::TransceiverI::write(IceInternal::Buffer& buf)
433
445
  //
434
446
  // It's impossible for packetSize to be more than an Int.
435
447
  //
436
- int packetSize =
437
- #ifdef ICE_USE_IOCP
438
- std::min(static_cast<int>(_maxSendPacketSize), static_cast<int>(buf.b.end() - buf.i));
439
- #else
448
+ int packetSize = _memBio ?
449
+ std::min(static_cast<int>(_maxSendPacketSize), static_cast<int>(buf.b.end() - buf.i)) :
440
450
  static_cast<int>(buf.b.end() - buf.i);
441
- #endif
451
+
442
452
  while(buf.i != buf.b.end())
443
453
  {
444
454
  ERR_clear_error(); // Clear any spurious errors.
445
- #ifdef ICE_USE_IOCP
446
455
  int ret;
447
- if(_sentBytes)
456
+ if(_memBio)
448
457
  {
449
- ret = _sentBytes;
450
- _sentBytes = 0;
451
- }
452
- else
453
- {
454
- ret = SSL_write(_ssl, reinterpret_cast<const void*>(&*buf.i), packetSize);
455
- if(ret > 0)
458
+ if(_sentBytes)
459
+ {
460
+ ret = _sentBytes;
461
+ _sentBytes = 0;
462
+ }
463
+ else
456
464
  {
457
- if(!send())
465
+ ret = SSL_write(_ssl, reinterpret_cast<const void*>(&*buf.i), packetSize);
466
+ if(ret > 0)
458
467
  {
459
- _sentBytes = ret;
460
- return IceInternal::SocketOperationWrite;
468
+ if(!send())
469
+ {
470
+ _sentBytes = ret;
471
+ return IceInternal::SocketOperationWrite;
472
+ }
461
473
  }
462
474
  }
463
475
  }
464
- #else
465
- int ret = SSL_write(_ssl, reinterpret_cast<const void*>(&*buf.i), packetSize);
466
- #endif
476
+ else
477
+ {
478
+ ret = SSL_write(_ssl, reinterpret_cast<const void*>(&*buf.i), packetSize);
479
+ }
480
+
467
481
  if(ret <= 0)
468
482
  {
469
483
  switch(SSL_get_error(_ssl, ret))
@@ -473,9 +487,7 @@ OpenSSL::TransceiverI::write(IceInternal::Buffer& buf)
473
487
  break;
474
488
  case SSL_ERROR_ZERO_RETURN:
475
489
  {
476
- ConnectionLostException ex(__FILE__, __LINE__);
477
- ex.error = IceInternal::getSocketErrno();
478
- throw ex;
490
+ throw ConnectionLostException(__FILE__, __LINE__, IceInternal::getSocketErrno());
479
491
  }
480
492
  case SSL_ERROR_WANT_READ:
481
493
  {
@@ -484,53 +496,47 @@ OpenSSL::TransceiverI::write(IceInternal::Buffer& buf)
484
496
  }
485
497
  case SSL_ERROR_WANT_WRITE:
486
498
  {
487
- #ifdef ICE_USE_IOCP
488
- if(send())
499
+ if(_memBio && send())
489
500
  {
490
501
  continue;
491
502
  }
492
- #endif
493
503
  return IceInternal::SocketOperationWrite;
494
504
  }
495
505
  case SSL_ERROR_SYSCALL:
496
506
  {
497
- #ifndef ICE_USE_IOCP
498
-
499
- if(IceInternal::interrupted())
507
+ if(!_memBio)
500
508
  {
501
- continue;
502
- }
509
+ if(IceInternal::interrupted())
510
+ {
511
+ continue;
512
+ }
503
513
 
504
- if(IceInternal::noBuffers() && packetSize > 1024)
505
- {
506
- packetSize /= 2;
507
- continue;
508
- }
514
+ if(IceInternal::noBuffers() && packetSize > 1024)
515
+ {
516
+ packetSize /= 2;
517
+ continue;
518
+ }
509
519
 
510
- if(IceInternal::wouldBlock())
511
- {
512
- assert(SSL_want_write(_ssl));
513
- return IceInternal::SocketOperationWrite;
520
+ if(IceInternal::wouldBlock())
521
+ {
522
+ assert(SSL_want_write(_ssl));
523
+ return IceInternal::SocketOperationWrite;
524
+ }
514
525
  }
515
- #endif
526
+
516
527
  if(IceInternal::connectionLost() || IceInternal::getSocketErrno() == 0)
517
528
  {
518
- ConnectionLostException ex(__FILE__, __LINE__);
519
- ex.error = IceInternal::getSocketErrno();
520
- throw ex;
529
+ throw ConnectionLostException(__FILE__, __LINE__, IceInternal::getSocketErrno());
521
530
  }
522
531
  else
523
532
  {
524
- SocketException ex(__FILE__, __LINE__);
525
- ex.error = IceInternal::getSocketErrno();
526
- throw ex;
533
+ throw SocketException(__FILE__, __LINE__, IceInternal::getSocketErrno());
527
534
  }
528
535
  }
529
536
  case SSL_ERROR_SSL:
530
537
  {
531
- ProtocolException ex(__FILE__, __LINE__);
532
- ex.reason = "SSL protocol error during write:\n" + _engine->sslErrors();
533
- throw ex;
538
+ throw ProtocolException(__FILE__, __LINE__,
539
+ "SSL protocol error during write:\n" + _engine->sslErrors());
534
540
  }
535
541
  }
536
542
  }
@@ -553,15 +559,13 @@ OpenSSL::TransceiverI::read(IceInternal::Buffer& buf)
553
559
  return _delegate->read(buf);
554
560
  }
555
561
 
556
- #ifdef ICE_USE_IOCP
557
- if(_readBuffer.i != _readBuffer.b.end())
562
+ if(_memBio && _readBuffer.i != _readBuffer.b.end())
558
563
  {
559
564
  if(!receive())
560
565
  {
561
566
  return IceInternal::SocketOperationRead;
562
567
  }
563
568
  }
564
- #endif
565
569
 
566
570
  //
567
571
  // Note: We assume that OpenSSL doesn't read more SSL records than
@@ -595,18 +599,14 @@ OpenSSL::TransceiverI::read(IceInternal::Buffer& buf)
595
599
  }
596
600
  case SSL_ERROR_ZERO_RETURN:
597
601
  {
598
- ConnectionLostException ex(__FILE__, __LINE__);
599
- ex.error = 0;
600
- throw ex;
602
+ throw ConnectionLostException(__FILE__, __LINE__, 0);
601
603
  }
602
604
  case SSL_ERROR_WANT_READ:
603
605
  {
604
- #ifdef ICE_USE_IOCP
605
- if(receive())
606
+ if(_memBio && receive())
606
607
  {
607
608
  continue;
608
609
  }
609
- #endif
610
610
  return IceInternal::SocketOperationRead;
611
611
  }
612
612
  case SSL_ERROR_WANT_WRITE:
@@ -616,42 +616,39 @@ OpenSSL::TransceiverI::read(IceInternal::Buffer& buf)
616
616
  }
617
617
  case SSL_ERROR_SYSCALL:
618
618
  {
619
- #ifndef ICE_USE_IOCP
620
- if(IceInternal::interrupted())
619
+ if(!_memBio)
621
620
  {
622
- continue;
623
- }
621
+ if(IceInternal::interrupted())
622
+ {
623
+ continue;
624
+ }
624
625
 
625
- if(IceInternal::noBuffers() && packetSize > 1024)
626
- {
627
- packetSize /= 2;
628
- continue;
629
- }
626
+ if(IceInternal::noBuffers() && packetSize > 1024)
627
+ {
628
+ packetSize /= 2;
629
+ continue;
630
+ }
630
631
 
631
- if(IceInternal::wouldBlock())
632
- {
633
- assert(SSL_want_read(_ssl));
634
- return IceInternal::SocketOperationRead;
632
+ if(IceInternal::wouldBlock())
633
+ {
634
+ assert(SSL_want_read(_ssl));
635
+ return IceInternal::SocketOperationRead;
636
+ }
635
637
  }
636
- #endif
638
+
637
639
  if(IceInternal::connectionLost() || IceInternal::getSocketErrno() == 0)
638
640
  {
639
- ConnectionLostException ex(__FILE__, __LINE__);
640
- ex.error = IceInternal::getSocketErrno();
641
- throw ex;
641
+ throw ConnectionLostException(__FILE__, __LINE__, IceInternal::getSocketErrno());
642
642
  }
643
643
  else
644
644
  {
645
- SocketException ex(__FILE__, __LINE__);
646
- ex.error = IceInternal::getSocketErrno();
647
- throw ex;
645
+ throw SocketException(__FILE__, __LINE__, IceInternal::getSocketErrno());
648
646
  }
649
647
  }
650
648
  case SSL_ERROR_SSL:
651
649
  {
652
- ProtocolException ex(__FILE__, __LINE__);
653
- ex.reason = "SSL protocol error during read:\n" + _engine->sslErrors();
654
- throw ex;
650
+ throw ProtocolException(__FILE__, __LINE__,
651
+ "SSL protocol error during read:\n" + _engine->sslErrors());
655
652
  }
656
653
  }
657
654
  }
@@ -688,10 +685,10 @@ OpenSSL::TransceiverI::startWrite(IceInternal::Buffer& buffer)
688
685
  int packetSize = std::min(static_cast<int>(_maxSendPacketSize), static_cast<int>(buffer.b.end() - buffer.i));
689
686
  _sentBytes = SSL_write(_ssl, reinterpret_cast<void*>(&*buffer.i), packetSize);
690
687
 
691
- assert(BIO_ctrl_pending(_iocpBio));
692
- _writeBuffer.b.resize( BIO_ctrl_pending(_iocpBio));
688
+ assert(BIO_ctrl_pending(_memBio));
689
+ _writeBuffer.b.resize( BIO_ctrl_pending(_memBio));
693
690
  _writeBuffer.i = _writeBuffer.b.begin();
694
- BIO_read(_iocpBio, _writeBuffer.i, static_cast<int>(_writeBuffer.b.size()));
691
+ BIO_read(_memBio, _writeBuffer.i, static_cast<int>(_writeBuffer.b.size()));
695
692
  }
696
693
 
697
694
  return _delegate->startWrite(_writeBuffer) && buffer.i == buffer.b.end();
@@ -733,8 +730,8 @@ OpenSSL::TransceiverI::startRead(IceInternal::Buffer& buffer)
733
730
  SSL_read(_ssl, reinterpret_cast<void*>(&*buffer.i), static_cast<int>(buffer.b.end() - buffer.i));
734
731
  assert(ret <= 0 && SSL_get_error(_ssl, ret) == SSL_ERROR_WANT_READ);
735
732
 
736
- assert(BIO_ctrl_get_read_request(_iocpBio));
737
- _readBuffer.b.resize(BIO_ctrl_get_read_request(_iocpBio));
733
+ assert(BIO_ctrl_get_read_request(_memBio));
734
+ _readBuffer.b.resize(BIO_ctrl_get_read_request(_memBio));
738
735
  _readBuffer.i = _readBuffer.b.begin();
739
736
  }
740
737
 
@@ -755,12 +752,10 @@ OpenSSL::TransceiverI::finishRead(IceInternal::Buffer& buffer)
755
752
  _delegate->finishRead(_readBuffer);
756
753
  if(_readBuffer.i == _readBuffer.b.end())
757
754
  {
758
- int n = BIO_write(_iocpBio, _readBuffer.b.begin(), static_cast<int>(_readBuffer.b.size()));
755
+ int n = BIO_write(_memBio, _readBuffer.b.begin(), static_cast<int>(_readBuffer.b.size()));
759
756
  if(n < 0) // Expected if the transceiver was closed.
760
757
  {
761
- SecurityException ex(__FILE__, __LINE__);
762
- ex.reason = "SSL bio write failed";
763
- throw ex;
758
+ throw SecurityException(__FILE__, __LINE__, "SSL bio write failed");
764
759
  }
765
760
 
766
761
  assert(n == static_cast<int>(_readBuffer.b.size()));
@@ -778,9 +773,7 @@ OpenSSL::TransceiverI::finishRead(IceInternal::Buffer& buffer)
778
773
  }
779
774
  case SSL_ERROR_ZERO_RETURN:
780
775
  {
781
- ConnectionLostException ex(__FILE__, __LINE__);
782
- ex.error = 0;
783
- throw ex;
776
+ throw ConnectionLostException(__FILE__, __LINE__, 0);
784
777
  }
785
778
  case SSL_ERROR_WANT_READ:
786
779
  {
@@ -790,22 +783,17 @@ OpenSSL::TransceiverI::finishRead(IceInternal::Buffer& buffer)
790
783
  {
791
784
  if(IceInternal::connectionLost() || IceInternal::getSocketErrno() == 0)
792
785
  {
793
- ConnectionLostException ex(__FILE__, __LINE__);
794
- ex.error = IceInternal::getSocketErrno();
795
- throw ex;
786
+ throw ConnectionLostException(__FILE__, __LINE__, IceInternal::getSocketErrno());
796
787
  }
797
788
  else
798
789
  {
799
- SocketException ex(__FILE__, __LINE__);
800
- ex.error = IceInternal::getSocketErrno();
801
- throw ex;
790
+ throw SocketException(__FILE__, __LINE__, IceInternal::getSocketErrno());
802
791
  }
803
792
  }
804
793
  case SSL_ERROR_SSL:
805
794
  {
806
- ProtocolException ex(__FILE__, __LINE__);
807
- ex.reason = "SSL protocol error during read:\n" + _engine->sslErrors();
808
- throw ex;
795
+ throw ProtocolException(__FILE__, __LINE__,
796
+ "SSL protocol error during read:\n" + _engine->sslErrors());
809
797
  }
810
798
  }
811
799
  }
@@ -874,7 +862,7 @@ OpenSSL::TransceiverI::verifyCallback(int ok, X509_STORE_CTX* c)
874
862
  out << "subject = " << buf << '\n';
875
863
  out << "depth = " << X509_STORE_CTX_get_error_depth(c) << '\n';
876
864
  out << "error = " << X509_verify_cert_error_string(err) << '\n';
877
- out << IceInternal::fdToString(SSL_get_fd(_ssl));
865
+ out << toString();
878
866
  }
879
867
 
880
868
  //
@@ -914,13 +902,11 @@ OpenSSL::TransceiverI::TransceiverI(const InstancePtr& instance,
914
902
  _delegate(delegate),
915
903
  _connected(false),
916
904
  _verified(false),
917
- _ssl(0)
918
- #ifdef ICE_USE_IOCP
919
- , _iocpBio(0),
905
+ _ssl(0),
906
+ _memBio(0),
920
907
  _sentBytes(0),
921
908
  _maxSendPacketSize(0),
922
909
  _maxRecvPacketSize(0)
923
- #endif
924
910
  {
925
911
  }
926
912
 
@@ -928,14 +914,13 @@ OpenSSL::TransceiverI::~TransceiverI()
928
914
  {
929
915
  }
930
916
 
931
- #ifdef ICE_USE_IOCP
932
917
  bool
933
918
  OpenSSL::TransceiverI::receive()
934
919
  {
935
920
  if(_readBuffer.i == _readBuffer.b.end())
936
921
  {
937
- assert(BIO_ctrl_get_read_request(_iocpBio));
938
- _readBuffer.b.resize(BIO_ctrl_get_read_request(_iocpBio));
922
+ assert(BIO_ctrl_get_read_request(_memBio));
923
+ _readBuffer.b.resize(BIO_ctrl_get_read_request(_memBio));
939
924
  _readBuffer.i = _readBuffer.b.begin();
940
925
  }
941
926
 
@@ -952,7 +937,7 @@ OpenSSL::TransceiverI::receive()
952
937
  #ifndef NDEBUG
953
938
  int n =
954
939
  #endif
955
- BIO_write(_iocpBio, &_readBuffer.b[0], static_cast<int>(_readBuffer.b.end() - _readBuffer.b.begin()));
940
+ BIO_write(_memBio, &_readBuffer.b[0], static_cast<int>(_readBuffer.b.end() - _readBuffer.b.begin()));
956
941
 
957
942
  assert(n == static_cast<int>(_readBuffer.b.end() - _readBuffer.b.begin()));
958
943
 
@@ -964,10 +949,10 @@ OpenSSL::TransceiverI::send()
964
949
  {
965
950
  if(_writeBuffer.i == _writeBuffer.b.end())
966
951
  {
967
- assert(BIO_ctrl_pending(_iocpBio));
968
- _writeBuffer.b.resize( BIO_ctrl_pending(_iocpBio));
952
+ assert(BIO_ctrl_pending(_memBio));
953
+ _writeBuffer.b.resize( BIO_ctrl_pending(_memBio));
969
954
  _writeBuffer.i = _writeBuffer.b.begin();
970
- BIO_read(_iocpBio, _writeBuffer.i, static_cast<int>(_writeBuffer.b.size()));
955
+ BIO_read(_memBio, _writeBuffer.i, static_cast<int>(_writeBuffer.b.size()));
971
956
  }
972
957
 
973
958
  if(_writeBuffer.i != _writeBuffer.b.end())
@@ -979,4 +964,3 @@ OpenSSL::TransceiverI::send()
979
964
  }
980
965
  return _writeBuffer.i == _writeBuffer.b.end();
981
966
  }
982
- #endif