zeroc-ice 3.7.0 → 3.7.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (684) hide show
  1. checksums.yaml +4 -4
  2. data/ICE_LICENSE +1 -1
  3. data/bin/slice2rb +1 -1
  4. data/ext/Communicator.cpp +72 -2
  5. data/ext/Communicator.h +1 -1
  6. data/ext/Config.h +11 -1
  7. data/ext/Connection.cpp +22 -2
  8. data/ext/Connection.h +4 -1
  9. data/ext/Endpoint.cpp +1 -1
  10. data/ext/Endpoint.h +1 -1
  11. data/ext/ImplicitContext.cpp +1 -1
  12. data/ext/ImplicitContext.h +1 -1
  13. data/ext/Init.cpp +1 -1
  14. data/ext/Logger.cpp +1 -1
  15. data/ext/Logger.h +1 -1
  16. data/ext/Operation.cpp +1 -1
  17. data/ext/Operation.h +1 -1
  18. data/ext/Properties.cpp +1 -1
  19. data/ext/Properties.h +1 -1
  20. data/ext/Proxy.cpp +70 -1
  21. data/ext/Proxy.h +1 -1
  22. data/ext/Slice.cpp +1 -1
  23. data/ext/Slice.h +1 -1
  24. data/ext/Types.cpp +21 -5
  25. data/ext/Types.h +1 -1
  26. data/ext/Util.cpp +1 -1
  27. data/ext/Util.h +1 -1
  28. data/ext/ValueFactoryManager.cpp +2 -2
  29. data/ext/ValueFactoryManager.h +2 -2
  30. data/ext/ice/cpp/include/Ice/Application.h +234 -76
  31. data/ext/ice/cpp/include/Ice/AsyncResult.h +77 -1
  32. data/ext/ice/cpp/include/Ice/AsyncResultF.h +1 -1
  33. data/ext/ice/cpp/include/Ice/BatchRequestInterceptor.h +35 -2
  34. data/ext/ice/cpp/include/Ice/BatchRequestQueueF.h +1 -1
  35. data/ext/ice/cpp/include/Ice/Buffer.h +1 -1
  36. data/ext/ice/cpp/include/Ice/CommunicatorAsync.h +43 -1
  37. data/ext/ice/cpp/include/Ice/Comparable.h +81 -1
  38. data/ext/ice/cpp/include/Ice/Config.h +8 -1
  39. data/ext/ice/cpp/include/Ice/ConnectionAsync.h +97 -1
  40. data/ext/ice/cpp/include/Ice/ConnectionIF.h +3 -1
  41. data/ext/ice/cpp/include/Ice/ConsoleUtil.h +1 -1
  42. data/ext/ice/cpp/include/Ice/DefaultValueFactory.h +1 -1
  43. data/ext/ice/cpp/include/Ice/DispatchInterceptor.h +17 -2
  44. data/ext/ice/cpp/include/Ice/Dispatcher.h +22 -2
  45. data/ext/ice/cpp/include/Ice/DynamicLibrary.h +1 -1
  46. data/ext/ice/cpp/include/Ice/DynamicLibraryF.h +1 -1
  47. data/ext/ice/cpp/include/Ice/Exception.h +57 -15
  48. data/ext/ice/cpp/include/Ice/ExceptionHelpers.h +19 -1
  49. data/ext/ice/cpp/include/Ice/FactoryTable.h +12 -2
  50. data/ext/ice/cpp/include/Ice/FactoryTableInit.h +1 -1
  51. data/ext/ice/cpp/include/Ice/Format.h +13 -14
  52. data/ext/ice/cpp/include/Ice/Functional.h +6 -1
  53. data/ext/ice/cpp/include/Ice/GCObject.h +1 -1
  54. data/ext/ice/cpp/include/Ice/Handle.h +1 -1
  55. data/ext/ice/cpp/include/Ice/Ice.h +1 -1
  56. data/ext/ice/cpp/include/Ice/IconvStringConverter.h +38 -3
  57. data/ext/ice/cpp/include/Ice/Incoming.h +15 -2
  58. data/ext/ice/cpp/include/Ice/IncomingAsync.h +37 -4
  59. data/ext/ice/cpp/include/Ice/IncomingAsyncF.h +1 -1
  60. data/ext/ice/cpp/include/Ice/Initialize.h +764 -98
  61. data/ext/ice/cpp/include/Ice/InputStream.h +637 -112
  62. data/ext/ice/cpp/include/Ice/InstanceF.h +1 -1
  63. data/ext/ice/cpp/include/Ice/InterfaceByValue.h +17 -1
  64. data/ext/ice/cpp/include/Ice/LocalObject.h +5 -1
  65. data/ext/ice/cpp/include/Ice/LocalObjectF.h +1 -1
  66. data/ext/ice/cpp/include/Ice/LoggerUtil.h +37 -6
  67. data/ext/ice/cpp/include/Ice/MetricsAdminI.h +3 -1
  68. data/ext/ice/cpp/include/Ice/MetricsFunctional.h +3 -1
  69. data/ext/ice/cpp/include/Ice/MetricsObserverI.h +3 -1
  70. data/ext/ice/cpp/include/Ice/NativePropertiesAdmin.h +46 -23
  71. data/ext/ice/cpp/include/Ice/Object.h +338 -47
  72. data/ext/ice/cpp/include/Ice/ObjectF.h +5 -1
  73. data/ext/ice/cpp/include/Ice/ObserverHelper.h +1 -1
  74. data/ext/ice/cpp/include/Ice/Optional.h +22 -6
  75. data/ext/ice/cpp/include/Ice/OutgoingAsync.h +15 -1
  76. data/ext/ice/cpp/include/Ice/OutgoingAsyncF.h +1 -1
  77. data/ext/ice/cpp/include/Ice/OutputStream.h +436 -92
  78. data/ext/ice/cpp/include/Ice/Protocol.h +31 -1
  79. data/ext/ice/cpp/include/Ice/Proxy.h +2244 -190
  80. data/ext/ice/cpp/include/Ice/ProxyF.h +3 -1
  81. data/ext/ice/cpp/include/Ice/ProxyFactoryF.h +1 -1
  82. data/ext/ice/cpp/include/Ice/ProxyHandle.h +10 -1
  83. data/ext/ice/cpp/include/Ice/ReferenceF.h +1 -1
  84. data/ext/ice/cpp/include/Ice/RegisterPlugins.h +67 -9
  85. data/ext/ice/cpp/include/Ice/RequestHandlerF.h +1 -1
  86. data/ext/ice/cpp/include/Ice/ResponseHandlerF.h +1 -1
  87. data/ext/ice/cpp/include/Ice/SHA1.h +1 -1
  88. data/ext/ice/cpp/include/Ice/ServantManagerF.h +1 -1
  89. data/ext/ice/cpp/include/Ice/Service.h +267 -138
  90. data/ext/ice/cpp/include/Ice/SliceChecksums.h +5 -1
  91. data/ext/ice/cpp/include/Ice/SlicedData.h +80 -33
  92. data/ext/ice/cpp/include/Ice/SlicedDataF.h +4 -1
  93. data/ext/ice/cpp/include/Ice/StreamHelpers.h +324 -116
  94. data/ext/ice/cpp/include/Ice/StringConverter.h +32 -1
  95. data/ext/ice/cpp/include/Ice/ThreadPoolF.h +1 -1
  96. data/ext/ice/cpp/include/Ice/UUID.h +2 -1
  97. data/ext/ice/cpp/include/Ice/UniquePtr.h +2 -2
  98. data/ext/ice/cpp/include/Ice/UniqueRef.h +6 -2
  99. data/ext/ice/cpp/include/Ice/UserExceptionFactory.h +6 -1
  100. data/ext/ice/cpp/include/Ice/Value.h +41 -1
  101. data/ext/ice/cpp/include/Ice/ValueF.h +3 -1
  102. data/ext/ice/cpp/include/IceSSL/Config.h +1 -1
  103. data/ext/ice/cpp/include/IceSSL/IceSSL.h +1 -1
  104. data/ext/ice/cpp/include/IceSSL/OpenSSL.h +75 -53
  105. data/ext/ice/cpp/include/IceSSL/Plugin.h +323 -218
  106. data/ext/ice/cpp/include/IceSSL/SChannel.h +34 -27
  107. data/ext/ice/cpp/include/IceSSL/SecureTransport.h +35 -28
  108. data/ext/ice/cpp/include/IceSSL/UWP.h +33 -24
  109. data/ext/ice/cpp/include/IceUtil/Atomic.h +1 -1
  110. data/ext/ice/cpp/include/IceUtil/Cond.h +1 -1
  111. data/ext/ice/cpp/include/IceUtil/Config.h +11 -3
  112. data/ext/ice/cpp/include/IceUtil/ConsoleUtil.h +1 -1
  113. data/ext/ice/cpp/include/IceUtil/CountDownLatch.h +1 -1
  114. data/ext/ice/cpp/include/IceUtil/CtrlCHandler.h +59 -31
  115. data/ext/ice/cpp/include/IceUtil/DisableWarnings.h +1 -1
  116. data/ext/ice/cpp/include/IceUtil/Exception.h +1 -1
  117. data/ext/ice/cpp/include/IceUtil/FileUtil.h +1 -1
  118. data/ext/ice/cpp/include/IceUtil/Functional.h +1 -1
  119. data/ext/ice/cpp/include/IceUtil/Handle.h +1 -1
  120. data/ext/ice/cpp/include/IceUtil/IceUtil.h +1 -1
  121. data/ext/ice/cpp/include/IceUtil/InputUtil.h +1 -1
  122. data/ext/ice/cpp/include/IceUtil/Iterator.h +1 -1
  123. data/ext/ice/cpp/include/IceUtil/Lock.h +1 -1
  124. data/ext/ice/cpp/include/IceUtil/Monitor.h +1 -1
  125. data/ext/ice/cpp/include/IceUtil/Mutex.h +2 -5
  126. data/ext/ice/cpp/include/IceUtil/MutexProtocol.h +1 -1
  127. data/ext/ice/cpp/include/IceUtil/MutexPtrLock.h +1 -1
  128. data/ext/ice/cpp/include/IceUtil/MutexPtrTryLock.h +1 -1
  129. data/ext/ice/cpp/include/IceUtil/Optional.h +95 -1
  130. data/ext/ice/cpp/include/IceUtil/Options.h +1 -1
  131. data/ext/ice/cpp/include/IceUtil/OutputUtil.h +1 -1
  132. data/ext/ice/cpp/include/IceUtil/PopDisableWarnings.h +1 -1
  133. data/ext/ice/cpp/include/IceUtil/PushDisableWarnings.h +1 -1
  134. data/ext/ice/cpp/include/IceUtil/Random.h +1 -1
  135. data/ext/ice/cpp/include/IceUtil/RecMutex.h +1 -1
  136. data/ext/ice/cpp/include/IceUtil/ResourceConfig.h +4 -4
  137. data/ext/ice/cpp/include/IceUtil/ScannerConfig.h +5 -3
  138. data/ext/ice/cpp/include/IceUtil/ScopedArray.h +1 -1
  139. data/ext/ice/cpp/include/IceUtil/Shared.h +1 -1
  140. data/ext/ice/cpp/include/IceUtil/StopWatch.h +1 -1
  141. data/ext/ice/cpp/include/IceUtil/StringConverter.h +106 -86
  142. data/ext/ice/cpp/include/IceUtil/StringUtil.h +1 -1
  143. data/ext/ice/cpp/include/IceUtil/Thread.h +1 -1
  144. data/ext/ice/cpp/include/IceUtil/ThreadException.h +1 -1
  145. data/ext/ice/cpp/include/IceUtil/Time.h +1 -1
  146. data/ext/ice/cpp/include/IceUtil/Timer.h +5 -1
  147. data/ext/ice/cpp/include/IceUtil/UUID.h +5 -1
  148. data/ext/ice/cpp/include/IceUtil/UndefSysMacros.h +1 -1
  149. data/ext/ice/cpp/include/generated/Ice/BuiltinSequences.h +80 -20
  150. data/ext/ice/cpp/include/generated/Ice/Communicator.h +927 -130
  151. data/ext/ice/cpp/include/generated/Ice/CommunicatorF.h +13 -5
  152. data/ext/ice/cpp/include/generated/Ice/Connection.h +990 -194
  153. data/ext/ice/cpp/include/generated/Ice/ConnectionF.h +21 -9
  154. data/ext/ice/cpp/include/generated/Ice/Current.h +180 -17
  155. data/ext/ice/cpp/include/generated/Ice/Endpoint.h +484 -118
  156. data/ext/ice/cpp/include/generated/Ice/EndpointF.h +41 -17
  157. data/ext/ice/cpp/include/generated/Ice/EndpointTypes.h +29 -3
  158. data/ext/ice/cpp/include/generated/Ice/FacetMap.h +11 -5
  159. data/ext/ice/cpp/include/generated/Ice/Identity.h +56 -7
  160. data/ext/ice/cpp/include/generated/Ice/ImplicitContext.h +150 -28
  161. data/ext/ice/cpp/include/generated/Ice/ImplicitContextF.h +13 -5
  162. data/ext/ice/cpp/include/generated/Ice/Instrumentation.h +629 -83
  163. data/ext/ice/cpp/include/generated/Ice/InstrumentationF.h +19 -7
  164. data/ext/ice/cpp/include/generated/Ice/LocalException.h +5104 -794
  165. data/ext/ice/cpp/include/generated/Ice/Locator.h +2222 -443
  166. data/ext/ice/cpp/include/generated/Ice/LocatorF.h +27 -9
  167. data/ext/ice/cpp/include/generated/Ice/Logger.h +104 -26
  168. data/ext/ice/cpp/include/generated/Ice/LoggerF.h +13 -5
  169. data/ext/ice/cpp/include/generated/Ice/Metrics.h +2534 -455
  170. data/ext/ice/cpp/include/generated/Ice/ObjectAdapter.h +1004 -126
  171. data/ext/ice/cpp/include/generated/Ice/ObjectAdapterF.h +13 -5
  172. data/ext/ice/cpp/include/generated/Ice/ObjectFactory.h +72 -12
  173. data/ext/ice/cpp/include/generated/Ice/Plugin.h +142 -28
  174. data/ext/ice/cpp/include/generated/Ice/PluginF.h +17 -7
  175. data/ext/ice/cpp/include/generated/Ice/Process.h +511 -71
  176. data/ext/ice/cpp/include/generated/Ice/ProcessF.h +18 -6
  177. data/ext/ice/cpp/include/generated/Ice/Properties.h +306 -58
  178. data/ext/ice/cpp/include/generated/Ice/PropertiesAdmin.h +737 -121
  179. data/ext/ice/cpp/include/generated/Ice/PropertiesF.h +22 -8
  180. data/ext/ice/cpp/include/generated/Ice/RemoteLogger.h +1526 -279
  181. data/ext/ice/cpp/include/generated/Ice/Router.h +1009 -198
  182. data/ext/ice/cpp/include/generated/Ice/RouterF.h +18 -6
  183. data/ext/ice/cpp/include/generated/Ice/ServantLocator.h +174 -18
  184. data/ext/ice/cpp/include/generated/Ice/ServantLocatorF.h +13 -5
  185. data/ext/ice/cpp/include/generated/Ice/SliceChecksumDict.h +13 -3
  186. data/ext/ice/cpp/include/generated/Ice/ValueFactory.h +177 -23
  187. data/ext/ice/cpp/include/generated/Ice/Version.h +43 -13
  188. data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfo.h +71 -15
  189. data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfoF.h +13 -5
  190. data/ext/ice/cpp/include/generated/IceSSL/EndpointInfo.h +39 -9
  191. data/ext/ice/cpp/src/Ice/ACM.cpp +12 -3
  192. data/ext/ice/cpp/src/Ice/ACM.h +1 -1
  193. data/ext/ice/cpp/src/Ice/ACMF.h +1 -1
  194. data/ext/ice/cpp/src/Ice/Acceptor.cpp +1 -1
  195. data/ext/ice/cpp/src/Ice/Acceptor.h +1 -1
  196. data/ext/ice/cpp/src/Ice/AcceptorF.h +1 -1
  197. data/ext/ice/cpp/src/Ice/ArgVector.cpp +1 -1
  198. data/ext/ice/cpp/src/Ice/ArgVector.h +1 -1
  199. data/ext/ice/cpp/src/Ice/AsyncResult.cpp +1 -1
  200. data/ext/ice/cpp/src/Ice/Base64.cpp +1 -1
  201. data/ext/ice/cpp/src/Ice/Base64.h +1 -1
  202. data/ext/ice/cpp/src/Ice/BatchRequestQueue.cpp +1 -1
  203. data/ext/ice/cpp/src/Ice/BatchRequestQueue.h +1 -1
  204. data/ext/ice/cpp/src/Ice/Buffer.cpp +1 -1
  205. data/ext/ice/cpp/src/Ice/BuiltinSequences.cpp +3 -3
  206. data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.cpp +1 -1
  207. data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.h +1 -1
  208. data/ext/ice/cpp/src/Ice/Communicator.cpp +6 -4
  209. data/ext/ice/cpp/src/Ice/CommunicatorF.cpp +3 -3
  210. data/ext/ice/cpp/src/Ice/CommunicatorI.cpp +34 -13
  211. data/ext/ice/cpp/src/Ice/CommunicatorI.h +10 -10
  212. data/ext/ice/cpp/src/Ice/Cond.cpp +1 -1
  213. data/ext/ice/cpp/src/Ice/ConnectRequestHandler.cpp +11 -6
  214. data/ext/ice/cpp/src/Ice/ConnectRequestHandler.h +1 -1
  215. data/ext/ice/cpp/src/Ice/ConnectRequestHandlerF.h +1 -1
  216. data/ext/ice/cpp/src/Ice/Connection.cpp +27 -11
  217. data/ext/ice/cpp/src/Ice/ConnectionF.cpp +3 -3
  218. data/ext/ice/cpp/src/Ice/ConnectionFactory.cpp +24 -19
  219. data/ext/ice/cpp/src/Ice/ConnectionFactory.h +1 -1
  220. data/ext/ice/cpp/src/Ice/ConnectionFactoryF.h +1 -1
  221. data/ext/ice/cpp/src/Ice/ConnectionI.cpp +45 -37
  222. data/ext/ice/cpp/src/Ice/ConnectionI.h +10 -8
  223. data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.cpp +1 -1
  224. data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.h +1 -1
  225. data/ext/ice/cpp/src/Ice/Connector.cpp +1 -1
  226. data/ext/ice/cpp/src/Ice/Connector.h +1 -1
  227. data/ext/ice/cpp/src/Ice/ConnectorF.h +1 -1
  228. data/ext/ice/cpp/src/Ice/CountDownLatch.cpp +1 -1
  229. data/ext/ice/cpp/src/Ice/Current.cpp +3 -3
  230. data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.cpp +5 -7
  231. data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.h +1 -1
  232. data/ext/ice/cpp/src/Ice/DefaultsAndOverridesF.h +1 -1
  233. data/ext/ice/cpp/src/Ice/DispatchInterceptor.cpp +1 -1
  234. data/ext/ice/cpp/src/Ice/DynamicLibrary.cpp +1 -1
  235. data/ext/ice/cpp/src/Ice/Endpoint.cpp +24 -10
  236. data/ext/ice/cpp/src/Ice/EndpointF.cpp +3 -3
  237. data/ext/ice/cpp/src/Ice/EndpointFactory.cpp +1 -1
  238. data/ext/ice/cpp/src/Ice/EndpointFactory.h +1 -1
  239. data/ext/ice/cpp/src/Ice/EndpointFactoryF.h +1 -1
  240. data/ext/ice/cpp/src/Ice/EndpointFactoryManager.cpp +7 -13
  241. data/ext/ice/cpp/src/Ice/EndpointFactoryManager.h +1 -1
  242. data/ext/ice/cpp/src/Ice/EndpointFactoryManagerF.h +1 -1
  243. data/ext/ice/cpp/src/Ice/EndpointI.cpp +2 -2
  244. data/ext/ice/cpp/src/Ice/EndpointI.h +5 -5
  245. data/ext/ice/cpp/src/Ice/EndpointIF.h +1 -1
  246. data/ext/ice/cpp/src/Ice/EndpointTypes.cpp +3 -3
  247. data/ext/ice/cpp/src/Ice/EventHandler.cpp +1 -1
  248. data/ext/ice/cpp/src/Ice/EventHandler.h +1 -1
  249. data/ext/ice/cpp/src/Ice/EventHandlerF.h +1 -1
  250. data/ext/ice/cpp/src/Ice/Exception.cpp +1 -1
  251. data/ext/ice/cpp/src/Ice/FacetMap.cpp +3 -3
  252. data/ext/ice/cpp/src/Ice/FactoryTable.cpp +1 -1
  253. data/ext/ice/cpp/src/Ice/FactoryTableInit.cpp +1 -1
  254. data/ext/ice/cpp/src/Ice/GCObject.cpp +1 -1
  255. data/ext/ice/cpp/src/Ice/HashUtil.h +1 -1
  256. data/ext/ice/cpp/src/Ice/HttpParser.cpp +1 -1
  257. data/ext/ice/cpp/src/Ice/HttpParser.h +1 -1
  258. data/ext/ice/cpp/src/Ice/IPEndpointI.cpp +24 -29
  259. data/ext/ice/cpp/src/Ice/IPEndpointI.h +5 -5
  260. data/ext/ice/cpp/src/Ice/IPEndpointIF.h +1 -1
  261. data/ext/ice/cpp/src/Ice/IconvStringConverter.cpp +1 -1
  262. data/ext/ice/cpp/src/Ice/Identity.cpp +3 -3
  263. data/ext/ice/cpp/src/Ice/ImplicitContext.cpp +6 -4
  264. data/ext/ice/cpp/src/Ice/ImplicitContextF.cpp +3 -3
  265. data/ext/ice/cpp/src/Ice/ImplicitContextI.cpp +2 -13
  266. data/ext/ice/cpp/src/Ice/ImplicitContextI.h +1 -1
  267. data/ext/ice/cpp/src/Ice/Incoming.cpp +1 -1
  268. data/ext/ice/cpp/src/Ice/IncomingAsync.cpp +1 -1
  269. data/ext/ice/cpp/src/Ice/IncomingRequest.h +1 -1
  270. data/ext/ice/cpp/src/Ice/Initialize.cpp +10 -16
  271. data/ext/ice/cpp/src/Ice/InputStream.cpp +1 -1
  272. data/ext/ice/cpp/src/Ice/Instance.cpp +13 -34
  273. data/ext/ice/cpp/src/Ice/Instance.h +1 -1
  274. data/ext/ice/cpp/src/Ice/Instrumentation.cpp +33 -13
  275. data/ext/ice/cpp/src/Ice/InstrumentationF.cpp +3 -3
  276. data/ext/ice/cpp/src/Ice/InstrumentationI.cpp +1 -1
  277. data/ext/ice/cpp/src/Ice/InstrumentationI.h +1 -1
  278. data/ext/ice/cpp/src/Ice/LocalException.cpp +279 -279
  279. data/ext/ice/cpp/src/Ice/LocalObject.cpp +1 -1
  280. data/ext/ice/cpp/src/Ice/Locator.cpp +287 -174
  281. data/ext/ice/cpp/src/Ice/LocatorF.cpp +3 -3
  282. data/ext/ice/cpp/src/Ice/LocatorInfo.cpp +4 -9
  283. data/ext/ice/cpp/src/Ice/LocatorInfo.h +1 -1
  284. data/ext/ice/cpp/src/Ice/LocatorInfoF.h +1 -1
  285. data/ext/ice/cpp/src/Ice/Logger.cpp +6 -4
  286. data/ext/ice/cpp/src/Ice/LoggerAdminI.cpp +1 -1
  287. data/ext/ice/cpp/src/Ice/LoggerAdminI.h +1 -1
  288. data/ext/ice/cpp/src/Ice/LoggerF.cpp +3 -3
  289. data/ext/ice/cpp/src/Ice/LoggerI.cpp +1 -1
  290. data/ext/ice/cpp/src/Ice/LoggerI.h +1 -1
  291. data/ext/ice/cpp/src/Ice/LoggerUtil.cpp +1 -1
  292. data/ext/ice/cpp/src/Ice/Metrics.cpp +297 -109
  293. data/ext/ice/cpp/src/Ice/MetricsAdminI.cpp +2 -7
  294. data/ext/ice/cpp/src/Ice/MetricsObserverI.cpp +1 -1
  295. data/ext/ice/cpp/src/Ice/Network.cpp +188 -225
  296. data/ext/ice/cpp/src/Ice/Network.h +3 -12
  297. data/ext/ice/cpp/src/Ice/NetworkF.h +1 -1
  298. data/ext/ice/cpp/src/Ice/NetworkProxy.cpp +1 -1
  299. data/ext/ice/cpp/src/Ice/NetworkProxy.h +1 -1
  300. data/ext/ice/cpp/src/Ice/NetworkProxyF.h +1 -1
  301. data/ext/ice/cpp/src/Ice/Object.cpp +7 -4
  302. data/ext/ice/cpp/src/Ice/ObjectAdapter.cpp +6 -4
  303. data/ext/ice/cpp/src/Ice/ObjectAdapterF.cpp +3 -3
  304. data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.cpp +53 -19
  305. data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.h +1 -1
  306. data/ext/ice/cpp/src/Ice/ObjectAdapterFactoryF.h +1 -1
  307. data/ext/ice/cpp/src/Ice/ObjectAdapterI.cpp +116 -150
  308. data/ext/ice/cpp/src/Ice/ObjectAdapterI.h +11 -11
  309. data/ext/ice/cpp/src/Ice/ObjectFactory.cpp +6 -4
  310. data/ext/ice/cpp/src/Ice/ObserverHelper.cpp +1 -1
  311. data/ext/ice/cpp/src/Ice/OpaqueEndpointI.cpp +25 -42
  312. data/ext/ice/cpp/src/Ice/OpaqueEndpointI.h +2 -2
  313. data/ext/ice/cpp/src/Ice/OutgoingAsync.cpp +1 -1
  314. data/ext/ice/cpp/src/Ice/OutputStream.cpp +1 -1
  315. data/ext/ice/cpp/src/Ice/Plugin.cpp +9 -5
  316. data/ext/ice/cpp/src/Ice/PluginF.cpp +3 -3
  317. data/ext/ice/cpp/src/Ice/PluginManagerI.cpp +15 -34
  318. data/ext/ice/cpp/src/Ice/PluginManagerI.h +3 -3
  319. data/ext/ice/cpp/src/Ice/Process.cpp +69 -40
  320. data/ext/ice/cpp/src/Ice/ProcessF.cpp +3 -3
  321. data/ext/ice/cpp/src/Ice/Properties.cpp +6 -4
  322. data/ext/ice/cpp/src/Ice/PropertiesAdmin.cpp +89 -54
  323. data/ext/ice/cpp/src/Ice/PropertiesAdminI.cpp +1 -1
  324. data/ext/ice/cpp/src/Ice/PropertiesAdminI.h +1 -1
  325. data/ext/ice/cpp/src/Ice/PropertiesF.cpp +3 -3
  326. data/ext/ice/cpp/src/Ice/PropertiesI.cpp +15 -21
  327. data/ext/ice/cpp/src/Ice/PropertiesI.h +10 -10
  328. data/ext/ice/cpp/src/Ice/PropertyNames.cpp +4 -2
  329. data/ext/ice/cpp/src/Ice/PropertyNames.h +2 -2
  330. data/ext/ice/cpp/src/Ice/Protocol.cpp +5 -13
  331. data/ext/ice/cpp/src/Ice/ProtocolInstance.cpp +1 -1
  332. data/ext/ice/cpp/src/Ice/ProtocolInstance.h +1 -1
  333. data/ext/ice/cpp/src/Ice/ProtocolInstanceF.h +1 -1
  334. data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.cpp +1 -1
  335. data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.h +1 -1
  336. data/ext/ice/cpp/src/Ice/ProtocolPluginFacadeF.h +1 -1
  337. data/ext/ice/cpp/src/Ice/Proxy.cpp +46 -1
  338. data/ext/ice/cpp/src/Ice/ProxyFactory.cpp +1 -1
  339. data/ext/ice/cpp/src/Ice/ProxyFactory.h +1 -1
  340. data/ext/ice/cpp/src/Ice/Reference.cpp +56 -6
  341. data/ext/ice/cpp/src/Ice/Reference.h +13 -2
  342. data/ext/ice/cpp/src/Ice/ReferenceFactory.cpp +51 -90
  343. data/ext/ice/cpp/src/Ice/ReferenceFactory.h +1 -1
  344. data/ext/ice/cpp/src/Ice/ReferenceFactoryF.h +1 -1
  345. data/ext/ice/cpp/src/Ice/RegisterPluginsInit.cpp +1 -1
  346. data/ext/ice/cpp/src/Ice/RegisterPluginsInit.h +1 -1
  347. data/ext/ice/cpp/src/Ice/RemoteLogger.cpp +203 -117
  348. data/ext/ice/cpp/src/Ice/ReplyStatus.h +1 -1
  349. data/ext/ice/cpp/src/Ice/RequestHandler.cpp +1 -1
  350. data/ext/ice/cpp/src/Ice/RequestHandler.h +1 -1
  351. data/ext/ice/cpp/src/Ice/RequestHandlerFactory.cpp +1 -1
  352. data/ext/ice/cpp/src/Ice/RequestHandlerFactory.h +1 -1
  353. data/ext/ice/cpp/src/Ice/ResponseHandler.cpp +1 -1
  354. data/ext/ice/cpp/src/Ice/ResponseHandler.h +1 -1
  355. data/ext/ice/cpp/src/Ice/RetryQueue.cpp +1 -1
  356. data/ext/ice/cpp/src/Ice/RetryQueue.h +1 -1
  357. data/ext/ice/cpp/src/Ice/RetryQueueF.h +1 -1
  358. data/ext/ice/cpp/src/Ice/Router.cpp +167 -89
  359. data/ext/ice/cpp/src/Ice/RouterF.cpp +3 -3
  360. data/ext/ice/cpp/src/Ice/RouterInfo.cpp +6 -28
  361. data/ext/ice/cpp/src/Ice/RouterInfo.h +1 -3
  362. data/ext/ice/cpp/src/Ice/RouterInfoF.h +1 -1
  363. data/ext/ice/cpp/src/Ice/SHA1.cpp +1 -1
  364. data/ext/ice/cpp/src/Ice/Selector.cpp +19 -26
  365. data/ext/ice/cpp/src/Ice/Selector.h +1 -1
  366. data/ext/ice/cpp/src/Ice/ServantLocator.cpp +6 -4
  367. data/ext/ice/cpp/src/Ice/ServantLocatorF.cpp +3 -3
  368. data/ext/ice/cpp/src/Ice/ServantManager.cpp +15 -31
  369. data/ext/ice/cpp/src/Ice/ServantManager.h +1 -1
  370. data/ext/ice/cpp/src/Ice/SharedContext.h +1 -1
  371. data/ext/ice/cpp/src/Ice/SliceChecksumDict.cpp +3 -3
  372. data/ext/ice/cpp/src/Ice/SliceChecksums.cpp +1 -1
  373. data/ext/ice/cpp/src/Ice/SlicedData.cpp +1 -1
  374. data/ext/ice/cpp/src/Ice/StreamSocket.cpp +32 -52
  375. data/ext/ice/cpp/src/Ice/StreamSocket.h +1 -1
  376. data/ext/ice/cpp/src/Ice/StringConverterPlugin.cpp +10 -1
  377. data/ext/ice/cpp/src/Ice/StringUtil.h +1 -1
  378. data/ext/ice/cpp/src/Ice/SysLoggerI.cpp +1 -1
  379. data/ext/ice/cpp/src/Ice/SysLoggerI.h +1 -1
  380. data/ext/ice/cpp/src/Ice/TcpAcceptor.cpp +5 -13
  381. data/ext/ice/cpp/src/Ice/TcpAcceptor.h +1 -1
  382. data/ext/ice/cpp/src/Ice/TcpConnector.cpp +1 -1
  383. data/ext/ice/cpp/src/Ice/TcpConnector.h +1 -1
  384. data/ext/ice/cpp/src/Ice/TcpEndpointI.cpp +8 -11
  385. data/ext/ice/cpp/src/Ice/TcpEndpointI.h +2 -2
  386. data/ext/ice/cpp/src/Ice/TcpTransceiver.cpp +1 -1
  387. data/ext/ice/cpp/src/Ice/TcpTransceiver.h +1 -1
  388. data/ext/ice/cpp/src/Ice/Thread.cpp +1 -1
  389. data/ext/ice/cpp/src/Ice/ThreadPool.cpp +13 -13
  390. data/ext/ice/cpp/src/Ice/ThreadPool.h +1 -1
  391. data/ext/ice/cpp/src/Ice/Timer.cpp +1 -1
  392. data/ext/ice/cpp/src/Ice/TraceLevels.cpp +1 -1
  393. data/ext/ice/cpp/src/Ice/TraceLevels.h +1 -1
  394. data/ext/ice/cpp/src/Ice/TraceLevelsF.h +1 -1
  395. data/ext/ice/cpp/src/Ice/TraceUtil.cpp +1 -1
  396. data/ext/ice/cpp/src/Ice/TraceUtil.h +1 -1
  397. data/ext/ice/cpp/src/Ice/Transceiver.cpp +1 -1
  398. data/ext/ice/cpp/src/Ice/Transceiver.h +1 -1
  399. data/ext/ice/cpp/src/Ice/TransceiverF.h +1 -1
  400. data/ext/ice/cpp/src/Ice/UdpConnector.cpp +1 -1
  401. data/ext/ice/cpp/src/Ice/UdpConnector.h +1 -1
  402. data/ext/ice/cpp/src/Ice/UdpEndpointI.cpp +19 -27
  403. data/ext/ice/cpp/src/Ice/UdpEndpointI.h +2 -2
  404. data/ext/ice/cpp/src/Ice/UdpTransceiver.cpp +17 -54
  405. data/ext/ice/cpp/src/Ice/UdpTransceiver.h +1 -1
  406. data/ext/ice/cpp/src/Ice/Value.cpp +1 -1
  407. data/ext/ice/cpp/src/Ice/ValueFactory.cpp +9 -5
  408. data/ext/ice/cpp/src/Ice/ValueFactoryManagerI.cpp +3 -6
  409. data/ext/ice/cpp/src/Ice/ValueFactoryManagerI.h +2 -2
  410. data/ext/ice/cpp/src/Ice/Version.cpp +3 -3
  411. data/ext/ice/cpp/src/Ice/VirtualShared.h +1 -1
  412. data/ext/ice/cpp/src/Ice/WSAcceptor.cpp +1 -1
  413. data/ext/ice/cpp/src/Ice/WSAcceptor.h +1 -1
  414. data/ext/ice/cpp/src/Ice/WSConnector.cpp +1 -1
  415. data/ext/ice/cpp/src/Ice/WSConnector.h +1 -1
  416. data/ext/ice/cpp/src/Ice/WSEndpoint.cpp +4 -5
  417. data/ext/ice/cpp/src/Ice/WSEndpoint.h +2 -2
  418. data/ext/ice/cpp/src/Ice/WSTransceiver.cpp +8 -9
  419. data/ext/ice/cpp/src/Ice/WSTransceiver.h +1 -1
  420. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.cpp +85 -27
  421. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.h +599 -113
  422. data/ext/ice/cpp/src/IceDiscovery/LocatorI.cpp +1 -1
  423. data/ext/ice/cpp/src/IceDiscovery/LocatorI.h +1 -1
  424. data/ext/ice/cpp/src/IceDiscovery/LookupI.cpp +1 -1
  425. data/ext/ice/cpp/src/IceDiscovery/LookupI.h +1 -1
  426. data/ext/ice/cpp/src/IceDiscovery/PluginI.cpp +1 -1
  427. data/ext/ice/cpp/src/IceDiscovery/PluginI.h +1 -1
  428. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.cpp +70 -24
  429. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.h +635 -69
  430. data/ext/ice/cpp/src/IceLocatorDiscovery/Plugin.h +1 -1
  431. data/ext/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +71 -9
  432. data/ext/ice/cpp/src/IceSSL/AcceptorI.cpp +2 -4
  433. data/ext/ice/cpp/src/IceSSL/AcceptorI.h +1 -1
  434. data/ext/ice/cpp/src/IceSSL/CertificateI.cpp +1 -1
  435. data/ext/ice/cpp/src/IceSSL/CertificateI.h +1 -1
  436. data/ext/ice/cpp/src/IceSSL/ConnectionInfo.cpp +6 -4
  437. data/ext/ice/cpp/src/IceSSL/ConnectionInfoF.cpp +3 -3
  438. data/ext/ice/cpp/src/IceSSL/ConnectorI.cpp +2 -4
  439. data/ext/ice/cpp/src/IceSSL/ConnectorI.h +1 -1
  440. data/ext/ice/cpp/src/IceSSL/EndpointI.cpp +2 -2
  441. data/ext/ice/cpp/src/IceSSL/EndpointI.h +2 -2
  442. data/ext/ice/cpp/src/IceSSL/EndpointInfo.cpp +6 -4
  443. data/ext/ice/cpp/src/IceSSL/Instance.cpp +1 -1
  444. data/ext/ice/cpp/src/IceSSL/Instance.h +1 -1
  445. data/ext/ice/cpp/src/IceSSL/InstanceF.h +1 -1
  446. data/ext/ice/cpp/src/IceSSL/OpenSSLCertificateI.cpp +1 -1
  447. data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +1 -1
  448. data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.h +1 -1
  449. data/ext/ice/cpp/src/IceSSL/OpenSSLEngineF.h +1 -1
  450. data/ext/ice/cpp/src/IceSSL/OpenSSLPluginI.cpp +1 -1
  451. data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +25 -62
  452. data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.h +1 -1
  453. data/ext/ice/cpp/src/IceSSL/OpenSSLUtil.cpp +1 -1
  454. data/ext/ice/cpp/src/IceSSL/OpenSSLUtil.h +1 -1
  455. data/ext/ice/cpp/src/IceSSL/PluginI.cpp +1 -1
  456. data/ext/ice/cpp/src/IceSSL/PluginI.h +1 -1
  457. data/ext/ice/cpp/src/IceSSL/RFC2253.cpp +1 -1
  458. data/ext/ice/cpp/src/IceSSL/RFC2253.h +1 -1
  459. data/ext/ice/cpp/src/IceSSL/SChannelCertificateI.cpp +1 -1
  460. data/ext/ice/cpp/src/IceSSL/SChannelEngine.cpp +1 -1
  461. data/ext/ice/cpp/src/IceSSL/SChannelEngine.h +1 -1
  462. data/ext/ice/cpp/src/IceSSL/SChannelEngineF.h +1 -1
  463. data/ext/ice/cpp/src/IceSSL/SChannelPluginI.cpp +1 -1
  464. data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.cpp +19 -27
  465. data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.h +1 -1
  466. data/ext/ice/cpp/src/IceSSL/SSLEngine.cpp +7 -16
  467. data/ext/ice/cpp/src/IceSSL/SSLEngine.h +1 -1
  468. data/ext/ice/cpp/src/IceSSL/SSLEngineF.h +1 -1
  469. data/ext/ice/cpp/src/IceSSL/SecureTransportCertificateI.cpp +1 -1
  470. data/ext/ice/cpp/src/IceSSL/SecureTransportEngine.cpp +1 -1
  471. data/ext/ice/cpp/src/IceSSL/SecureTransportEngine.h +1 -1
  472. data/ext/ice/cpp/src/IceSSL/SecureTransportEngineF.h +1 -1
  473. data/ext/ice/cpp/src/IceSSL/SecureTransportPluginI.cpp +1 -1
  474. data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +1 -1
  475. data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.h +1 -1
  476. data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.cpp +7 -10
  477. data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.h +1 -1
  478. data/ext/ice/cpp/src/IceSSL/TrustManager.cpp +4 -5
  479. data/ext/ice/cpp/src/IceSSL/TrustManager.h +1 -1
  480. data/ext/ice/cpp/src/IceSSL/TrustManagerF.h +1 -1
  481. data/ext/ice/cpp/src/IceSSL/UWPCertificateI.cpp +1 -1
  482. data/ext/ice/cpp/src/IceSSL/UWPEngine.cpp +1 -1
  483. data/ext/ice/cpp/src/IceSSL/UWPEngine.h +1 -1
  484. data/ext/ice/cpp/src/IceSSL/UWPEngineF.h +1 -1
  485. data/ext/ice/cpp/src/IceSSL/UWPPluginI.cpp +1 -1
  486. data/ext/ice/cpp/src/IceSSL/UWPTransceiverI.cpp +1 -1
  487. data/ext/ice/cpp/src/IceSSL/UWPTransceiverI.h +1 -1
  488. data/ext/ice/cpp/src/IceSSL/Util.cpp +1 -1
  489. data/ext/ice/cpp/src/IceSSL/Util.h +1 -1
  490. data/ext/ice/cpp/src/IceUtil/ConsoleUtil.cpp +1 -1
  491. data/ext/ice/cpp/src/IceUtil/ConvertUTF.cpp +1 -1
  492. data/ext/ice/cpp/src/IceUtil/ConvertUTF.h +1 -1
  493. data/ext/ice/cpp/src/IceUtil/CtrlCHandler.cpp +1 -1
  494. data/ext/ice/cpp/src/IceUtil/FileUtil.cpp +5 -5
  495. data/ext/ice/cpp/src/IceUtil/InputUtil.cpp +1 -1
  496. data/ext/ice/cpp/src/IceUtil/MutexProtocol.cpp +1 -1
  497. data/ext/ice/cpp/src/IceUtil/Options.cpp +1 -1
  498. data/ext/ice/cpp/src/IceUtil/OutputUtil.cpp +1 -1
  499. data/ext/ice/cpp/src/IceUtil/Random.cpp +1 -1
  500. data/ext/ice/cpp/src/IceUtil/RecMutex.cpp +1 -5
  501. data/ext/ice/cpp/src/IceUtil/Shared.cpp +1 -1
  502. data/ext/ice/cpp/src/IceUtil/StringConverter.cpp +1 -1
  503. data/ext/ice/cpp/src/IceUtil/StringUtil.cpp +1 -1
  504. data/ext/ice/cpp/src/IceUtil/ThreadException.cpp +1 -1
  505. data/ext/ice/cpp/src/IceUtil/Time.cpp +1 -1
  506. data/ext/ice/cpp/src/IceUtil/UUID.cpp +3 -3
  507. data/ext/ice/cpp/src/IceUtil/Unicode.cpp +1 -1
  508. data/ext/ice/cpp/src/IceUtil/Unicode.h +1 -1
  509. data/ext/ice/cpp/src/IceUtil/UtilException.cpp +1 -1
  510. data/ext/ice/cpp/src/Slice/CPlusPlusUtil.cpp +160 -150
  511. data/ext/ice/cpp/src/Slice/CPlusPlusUtil.h +9 -8
  512. data/ext/ice/cpp/src/Slice/Checksum.cpp +1 -1
  513. data/ext/ice/cpp/src/Slice/Checksum.h +1 -1
  514. data/ext/ice/cpp/src/Slice/FileTracker.cpp +1 -1
  515. data/ext/ice/cpp/src/Slice/FileTracker.h +1 -1
  516. data/ext/ice/cpp/src/Slice/Grammar.cpp +567 -585
  517. data/ext/ice/cpp/src/Slice/Grammar.h +2 -2
  518. data/ext/ice/cpp/src/Slice/GrammarUtil.h +1 -1
  519. data/ext/ice/cpp/src/Slice/JavaUtil.cpp +131 -47
  520. data/ext/ice/cpp/src/Slice/JavaUtil.h +10 -5
  521. data/ext/ice/cpp/src/Slice/MD5.cpp +1 -1
  522. data/ext/ice/cpp/src/Slice/MD5.h +1 -1
  523. data/ext/ice/cpp/src/Slice/PHPUtil.cpp +1 -1
  524. data/ext/ice/cpp/src/Slice/PHPUtil.h +1 -1
  525. data/ext/ice/cpp/src/Slice/Parser.cpp +383 -101
  526. data/ext/ice/cpp/src/Slice/Parser.h +40 -3
  527. data/ext/ice/cpp/src/Slice/Preprocessor.cpp +2 -1
  528. data/ext/ice/cpp/src/Slice/Preprocessor.h +2 -2
  529. data/ext/ice/cpp/src/Slice/Python.cpp +7 -15
  530. data/ext/ice/cpp/src/Slice/PythonUtil.cpp +66 -9
  531. data/ext/ice/cpp/src/Slice/PythonUtil.h +2 -2
  532. data/ext/ice/cpp/src/Slice/Ruby.cpp +1 -1
  533. data/ext/ice/cpp/src/Slice/RubyUtil.cpp +2 -2
  534. data/ext/ice/cpp/src/Slice/RubyUtil.h +1 -1
  535. data/ext/ice/cpp/src/Slice/Scanner.cpp +214 -135
  536. data/ext/ice/cpp/src/Slice/SliceUtil.cpp +1 -1
  537. data/ext/ice/cpp/src/Slice/StringLiteralUtil.cpp +99 -17
  538. data/ext/ice/cpp/src/Slice/Util.h +5 -4
  539. data/ice.gemspec +2 -2
  540. data/lib/Glacier2.rb +1 -1
  541. data/lib/Glacier2/Metrics.rb +2 -2
  542. data/lib/Glacier2/PermissionsVerifier.rb +2 -2
  543. data/lib/Glacier2/PermissionsVerifierF.rb +2 -2
  544. data/lib/Glacier2/Router.rb +2 -2
  545. data/lib/Glacier2/RouterF.rb +2 -2
  546. data/lib/Glacier2/SSLInfo.rb +2 -2
  547. data/lib/Glacier2/Session.rb +2 -2
  548. data/lib/Ice.rb +2 -2
  549. data/lib/Ice/BuiltinSequences.rb +2 -2
  550. data/lib/Ice/Communicator.rb +2 -2
  551. data/lib/Ice/CommunicatorF.rb +2 -2
  552. data/lib/Ice/Connection.rb +2 -2
  553. data/lib/Ice/ConnectionF.rb +2 -2
  554. data/lib/Ice/Current.rb +2 -2
  555. data/lib/Ice/Endpoint.rb +2 -2
  556. data/lib/Ice/EndpointF.rb +2 -2
  557. data/lib/Ice/EndpointTypes.rb +2 -2
  558. data/lib/Ice/FacetMap.rb +2 -2
  559. data/lib/Ice/Identity.rb +2 -2
  560. data/lib/Ice/ImplicitContext.rb +2 -2
  561. data/lib/Ice/ImplicitContextF.rb +2 -2
  562. data/lib/Ice/Instrumentation.rb +2 -2
  563. data/lib/Ice/InstrumentationF.rb +2 -2
  564. data/lib/Ice/LocalException.rb +2 -2
  565. data/lib/Ice/Locator.rb +2 -2
  566. data/lib/Ice/LocatorF.rb +2 -2
  567. data/lib/Ice/Logger.rb +2 -2
  568. data/lib/Ice/LoggerF.rb +2 -2
  569. data/lib/Ice/Metrics.rb +2 -2
  570. data/lib/Ice/ObjectAdapter.rb +2 -2
  571. data/lib/Ice/ObjectAdapterF.rb +2 -2
  572. data/lib/Ice/ObjectFactory.rb +2 -2
  573. data/lib/Ice/Plugin.rb +2 -2
  574. data/lib/Ice/PluginF.rb +2 -2
  575. data/lib/Ice/Process.rb +2 -2
  576. data/lib/Ice/ProcessF.rb +2 -2
  577. data/lib/Ice/Properties.rb +2 -2
  578. data/lib/Ice/PropertiesAdmin.rb +2 -2
  579. data/lib/Ice/PropertiesF.rb +2 -2
  580. data/lib/Ice/RemoteLogger.rb +2 -2
  581. data/lib/Ice/Router.rb +2 -2
  582. data/lib/Ice/RouterF.rb +2 -2
  583. data/lib/Ice/ServantLocator.rb +2 -2
  584. data/lib/Ice/ServantLocatorF.rb +2 -2
  585. data/lib/Ice/SliceChecksumDict.rb +2 -2
  586. data/lib/Ice/ValueFactory.rb +2 -2
  587. data/lib/Ice/Version.rb +2 -2
  588. data/lib/IceBox.rb +1 -1
  589. data/lib/IceBox/IceBox.rb +2 -2
  590. data/lib/IceGrid.rb +1 -1
  591. data/lib/IceGrid/Admin.rb +2 -2
  592. data/lib/IceGrid/Descriptor.rb +2 -2
  593. data/lib/IceGrid/Exception.rb +2 -2
  594. data/lib/IceGrid/FileParser.rb +2 -2
  595. data/lib/IceGrid/PluginFacade.rb +2 -2
  596. data/lib/IceGrid/Registry.rb +2 -2
  597. data/lib/IceGrid/Session.rb +2 -2
  598. data/lib/IceGrid/UserAccountMapper.rb +2 -2
  599. data/lib/IcePatch2.rb +1 -1
  600. data/lib/IcePatch2/FileInfo.rb +2 -2
  601. data/lib/IcePatch2/FileServer.rb +2 -2
  602. data/lib/IceStorm.rb +1 -1
  603. data/lib/IceStorm/IceStorm.rb +2 -2
  604. data/lib/IceStorm/Metrics.rb +2 -2
  605. data/slice/Glacier2/Metrics.ice +2 -2
  606. data/slice/Glacier2/PermissionsVerifier.ice +2 -2
  607. data/slice/Glacier2/PermissionsVerifierF.ice +2 -2
  608. data/slice/Glacier2/Router.ice +2 -2
  609. data/slice/Glacier2/RouterF.ice +2 -2
  610. data/slice/Glacier2/SSLInfo.ice +2 -2
  611. data/slice/Glacier2/Session.ice +2 -2
  612. data/slice/Ice/BuiltinSequences.ice +2 -2
  613. data/slice/Ice/Communicator.ice +66 -73
  614. data/slice/Ice/CommunicatorF.ice +2 -2
  615. data/slice/Ice/Connection.ice +47 -17
  616. data/slice/Ice/ConnectionF.ice +2 -2
  617. data/slice/Ice/Current.ice +4 -5
  618. data/slice/Ice/Endpoint.ice +16 -16
  619. data/slice/Ice/EndpointF.ice +2 -2
  620. data/slice/Ice/EndpointTypes.ice +2 -2
  621. data/slice/Ice/FacetMap.ice +2 -2
  622. data/slice/Ice/Identity.ice +2 -2
  623. data/slice/Ice/ImplicitContext.ice +6 -6
  624. data/slice/Ice/ImplicitContextF.ice +2 -2
  625. data/slice/Ice/Instrumentation.ice +2 -2
  626. data/slice/Ice/InstrumentationF.ice +2 -2
  627. data/slice/Ice/LocalException.ice +2 -2
  628. data/slice/Ice/Locator.ice +3 -3
  629. data/slice/Ice/LocatorF.ice +2 -2
  630. data/slice/Ice/Logger.ice +2 -2
  631. data/slice/Ice/LoggerF.ice +2 -2
  632. data/slice/Ice/Metrics.ice +2 -2
  633. data/slice/Ice/ObjectAdapter.ice +10 -10
  634. data/slice/Ice/ObjectAdapterF.ice +2 -2
  635. data/slice/Ice/ObjectFactory.ice +3 -3
  636. data/slice/Ice/Plugin.ice +4 -4
  637. data/slice/Ice/PluginF.ice +2 -2
  638. data/slice/Ice/Process.ice +2 -2
  639. data/slice/Ice/ProcessF.ice +2 -2
  640. data/slice/Ice/Properties.ice +11 -11
  641. data/slice/Ice/PropertiesAdmin.ice +2 -2
  642. data/slice/Ice/PropertiesF.ice +2 -2
  643. data/slice/Ice/RemoteLogger.ice +12 -23
  644. data/slice/Ice/Router.ice +2 -2
  645. data/slice/Ice/RouterF.ice +2 -2
  646. data/slice/Ice/ServantLocator.ice +2 -2
  647. data/slice/Ice/ServantLocatorF.ice +2 -2
  648. data/slice/Ice/SliceChecksumDict.ice +2 -2
  649. data/slice/Ice/ValueFactory.ice +14 -16
  650. data/slice/Ice/Version.ice +2 -2
  651. data/slice/IceBT/ConnectionInfo.ice +2 -2
  652. data/slice/IceBT/EndpointInfo.ice +2 -2
  653. data/slice/IceBT/Types.ice +2 -2
  654. data/slice/IceBox/IceBox.ice +3 -4
  655. data/slice/IceDiscovery/IceDiscovery.ice +2 -2
  656. data/slice/IceGrid/Admin.ice +2 -2
  657. data/slice/IceGrid/Descriptor.ice +2 -2
  658. data/slice/IceGrid/Exception.ice +2 -2
  659. data/slice/IceGrid/FileParser.ice +2 -2
  660. data/slice/IceGrid/PluginFacade.ice +6 -6
  661. data/slice/IceGrid/Registry.ice +2 -2
  662. data/slice/IceGrid/Session.ice +2 -2
  663. data/slice/IceGrid/UserAccountMapper.ice +2 -2
  664. data/slice/IceIAP/ConnectionInfo.ice +2 -2
  665. data/slice/IceIAP/EndpointInfo.ice +2 -2
  666. data/slice/IceLocatorDiscovery/IceLocatorDiscovery.ice +2 -2
  667. data/slice/IcePatch2/FileInfo.ice +2 -2
  668. data/slice/IcePatch2/FileServer.ice +2 -2
  669. data/slice/IceSSL/ConnectionInfo.ice +2 -2
  670. data/slice/IceSSL/ConnectionInfoF.ice +2 -2
  671. data/slice/IceSSL/EndpointInfo.ice +2 -2
  672. data/slice/IceStorm/IceStorm.ice +5 -6
  673. data/slice/IceStorm/Metrics.ice +2 -2
  674. metadata +3 -13
  675. data/BZIP2_LICENSE +0 -42
  676. data/ext/ice/bzip2/blocksort.c +0 -1094
  677. data/ext/ice/bzip2/bzlib.c +0 -1572
  678. data/ext/ice/bzip2/bzlib.h +0 -282
  679. data/ext/ice/bzip2/bzlib_private.h +0 -509
  680. data/ext/ice/bzip2/compress.c +0 -672
  681. data/ext/ice/bzip2/crctable.c +0 -104
  682. data/ext/ice/bzip2/decompress.c +0 -646
  683. data/ext/ice/bzip2/huffman.c +0 -205
  684. data/ext/ice/bzip2/randtable.c +0 -84
@@ -1,6 +1,6 @@
1
1
  // **********************************************************************
2
2
  //
3
- // Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
3
+ // Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved.
4
4
  //
5
5
  // This copy of Ice is licensed to you under the terms described in the
6
6
  // ICE_LICENSE file included in this distribution.
@@ -84,7 +84,7 @@ parseRule(const PropertiesPtr& properties, const string& name)
84
84
  }
85
85
  catch(const std::exception&)
86
86
  {
87
- throw "invalid regular expression `" + p->second + "' for `" + p->first + "'";
87
+ throw invalid_argument("invalid regular expression `" + p->second + "' for `" + p->first + "'");
88
88
  }
89
89
  }
90
90
  return regexps;
@@ -315,11 +315,6 @@ MetricsViewI::addOrUpdateMap(const PropertiesPtr& properties, const string& mapN
315
315
  ::Ice::Warning warn(logger);
316
316
  warn << "unexpected exception while creating metrics map:\n" << ex;
317
317
  }
318
- catch(const string& msg)
319
- {
320
- ::Ice::Warning warn(logger);
321
- warn << msg;
322
- }
323
318
  return true;
324
319
  }
325
320
 
@@ -1,6 +1,6 @@
1
1
  // **********************************************************************
2
2
  //
3
- // Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
3
+ // Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved.
4
4
  //
5
5
  // This copy of Ice is licensed to you under the terms described in the
6
6
  // ICE_LICENSE file included in this distribution.
@@ -1,6 +1,6 @@
1
1
  // **********************************************************************
2
2
  //
3
- // Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
3
+ // Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved.
4
4
  //
5
5
  // This copy of Ice is licensed to you under the terms described in the
6
6
  // ICE_LICENSE file included in this distribution.
@@ -104,6 +104,17 @@ IceInternal::getSystemErrno()
104
104
  namespace
105
105
  {
106
106
 
107
+ struct AddressCompare
108
+ {
109
+ public:
110
+
111
+ bool
112
+ operator()(const Address& lhs, const Address& rhs) const
113
+ {
114
+ return compareAddress(lhs, rhs) < 0;
115
+ }
116
+ };
117
+
107
118
  #ifndef ICE_OS_UWP
108
119
  struct AddressIsIPv6 : public unary_function<Address, bool>
109
120
  {
@@ -153,9 +164,7 @@ setTcpNoDelay(SOCKET fd)
153
164
  if(setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, reinterpret_cast<char*>(&flag), int(sizeof(int))) == SOCKET_ERROR)
154
165
  {
155
166
  closeSocketNoThrow(fd);
156
- SocketException ex(__FILE__, __LINE__);
157
- ex.error = getSocketErrno();
158
- throw ex;
167
+ throw SocketException(__FILE__, __LINE__, getSocketErrno());
159
168
  }
160
169
  }
161
170
 
@@ -166,9 +175,7 @@ setKeepAlive(SOCKET fd)
166
175
  if(setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, reinterpret_cast<char*>(&flag), int(sizeof(int))) == SOCKET_ERROR)
167
176
  {
168
177
  closeSocketNoThrow(fd);
169
- SocketException ex(__FILE__, __LINE__);
170
- ex.error = getSocketErrno();
171
- throw ex;
178
+ throw SocketException(__FILE__, __LINE__, getSocketErrno());
172
179
  }
173
180
  }
174
181
  #endif
@@ -189,9 +196,7 @@ setTcpLoopbackFastPath(SOCKET fd)
189
196
  if(LastError != WSAEOPNOTSUPP)
190
197
  {
191
198
  closeSocketNoThrow(fd);
192
- SocketException ex(__FILE__, __LINE__);
193
- ex.error = getSocketErrno();
194
- throw ex;
199
+ throw SocketException(__FILE__, __LINE__, getSocketErrno());
195
200
  }
196
201
  }
197
202
  }
@@ -233,9 +238,7 @@ createSocketImpl(bool udp, int family)
233
238
 
234
239
  if(fd == INVALID_SOCKET)
235
240
  {
236
- SocketException ex(__FILE__, __LINE__);
237
- ex.error = getSocketErrno();
238
- throw ex;
241
+ throw SocketException(__FILE__, __LINE__, getSocketErrno());
239
242
  }
240
243
 
241
244
  if(!udp)
@@ -262,7 +265,7 @@ createSocketImpl(bool udp, int family)
262
265
 
263
266
  #ifndef ICE_OS_UWP
264
267
  vector<Address>
265
- getLocalAddresses(ProtocolSupport protocol, bool includeLoopback)
268
+ getLocalAddresses(ProtocolSupport protocol, bool includeLoopback, bool singleAddressPerInterface)
266
269
  {
267
270
  vector<Address> result;
268
271
 
@@ -305,6 +308,10 @@ getLocalAddresses(ProtocolSupport protocol, bool includeLoopback)
305
308
  (includeLoopback || addr.saIn.sin_addr.s_addr != htonl(INADDR_LOOPBACK)))
306
309
  {
307
310
  result.push_back(addr);
311
+ if(singleAddressPerInterface)
312
+ {
313
+ break; // One address is enough for each interface.
314
+ }
308
315
  }
309
316
  }
310
317
  else if(addr.saStorage.ss_family == AF_INET6 && protocol != EnableIPv4)
@@ -313,6 +320,10 @@ getLocalAddresses(ProtocolSupport protocol, bool includeLoopback)
313
320
  (includeLoopback || !IN6_IS_ADDR_LOOPBACK(&addr.saIn6.sin6_addr)))
314
321
  {
315
322
  result.push_back(addr);
323
+ if(singleAddressPerInterface)
324
+ {
325
+ break; // One address is enough for each interface.
326
+ }
316
327
  }
317
328
  }
318
329
  }
@@ -325,12 +336,11 @@ getLocalAddresses(ProtocolSupport protocol, bool includeLoopback)
325
336
  struct ifaddrs* ifap;
326
337
  if(::getifaddrs(&ifap) == SOCKET_ERROR)
327
338
  {
328
- SocketException ex(__FILE__, __LINE__);
329
- ex.error = getSocketErrno();
330
- throw ex;
339
+ throw SocketException(__FILE__, __LINE__, getSocketErrno());
331
340
  }
332
341
 
333
342
  struct ifaddrs* curr = ifap;
343
+ set<string> interfaces;
334
344
  while(curr != 0)
335
345
  {
336
346
  if(curr->ifa_addr && (includeLoopback || !(curr->ifa_flags & IFF_LOOPBACK)))
@@ -341,7 +351,11 @@ getLocalAddresses(ProtocolSupport protocol, bool includeLoopback)
341
351
  memcpy(&addr.saStorage, curr->ifa_addr, sizeof(sockaddr_in));
342
352
  if(addr.saIn.sin_addr.s_addr != 0)
343
353
  {
344
- result.push_back(addr);
354
+ if(!singleAddressPerInterface || interfaces.find(curr->ifa_name) == interfaces.end())
355
+ {
356
+ result.push_back(addr);
357
+ interfaces.insert(curr->ifa_name);
358
+ }
345
359
  }
346
360
  }
347
361
  else if(curr->ifa_addr->sa_family == AF_INET6 && protocol != EnableIPv4)
@@ -350,7 +364,11 @@ getLocalAddresses(ProtocolSupport protocol, bool includeLoopback)
350
364
  memcpy(&addr.saStorage, curr->ifa_addr, sizeof(sockaddr_in6));
351
365
  if(!IN6_IS_ADDR_UNSPECIFIED(&addr.saIn6.sin6_addr))
352
366
  {
353
- result.push_back(addr);
367
+ if(!singleAddressPerInterface || interfaces.find(curr->ifa_name) == interfaces.end())
368
+ {
369
+ result.push_back(addr);
370
+ interfaces.insert(curr->ifa_name);
371
+ }
354
372
  }
355
373
  }
356
374
  }
@@ -394,9 +412,7 @@ getLocalAddresses(ProtocolSupport protocol, bool includeLoopback)
394
412
  {
395
413
  free(ifc.ifc_buf);
396
414
  closeSocketNoThrow(fd);
397
- SocketException ex(__FILE__, __LINE__);
398
- ex.error = getSocketErrno();
399
- throw ex;
415
+ throw SocketException(__FILE__, __LINE__, getSocketErrno());
400
416
  }
401
417
  else if(ifc.ifc_len == old_ifc_len)
402
418
  {
@@ -417,6 +433,7 @@ getLocalAddresses(ProtocolSupport protocol, bool includeLoopback)
417
433
 
418
434
  numaddrs = ifc.ifc_len / static_cast<int>(sizeof(struct ifreq));
419
435
  struct ifreq* ifr = ifc.ifc_req;
436
+ set<string> interfaces;
420
437
  for(int i = 0; i < numaddrs; ++i)
421
438
  {
422
439
  if(!(ifr[i].ifr_flags & IFF_LOOPBACK)) // Don't include loopback interface addresses
@@ -433,17 +450,10 @@ getLocalAddresses(ProtocolSupport protocol, bool includeLoopback)
433
450
  if(addr.saIn.sin_addr.s_addr != 0 &&
434
451
  (includeLoopback || addr.saIn.sin_addr.s_addr != htonl(INADDR_LOOPBACK)))
435
452
  {
436
- unsigned int j;
437
- for(j = 0; j < result.size(); ++j)
438
- {
439
- if(compareAddress(addr, result[j]) == 0)
440
- {
441
- break;
442
- }
443
- }
444
- if(j == result.size())
453
+ if(!singleAddressPerInterface || interfaces.find(ifr[i].ifr_name) == interfaces.end())
445
454
  {
446
455
  result.push_back(addr);
456
+ interfaces.insert(ifr[i].ifr_name);
447
457
  }
448
458
  }
449
459
  }
@@ -454,17 +464,10 @@ getLocalAddresses(ProtocolSupport protocol, bool includeLoopback)
454
464
  if(!IN6_IS_ADDR_UNSPECIFIED(&addr.saIn6.sin6_addr) &&
455
465
  (includeLoopback || !IN6_IS_ADDR_LOOPBACK(&addr.saIn6.sin6_addr)))
456
466
  {
457
- unsigned int j;
458
- for(j = 0; j < result.size(); ++j)
459
- {
460
- if(compareAddress(addr, result[j]) == 0)
461
- {
462
- break;
463
- }
464
- }
465
- if(j == result.size())
467
+ if(!singleAddressPerInterface || interfaces.find(ifr[i].ifr_name) == interfaces.end())
466
468
  {
467
469
  result.push_back(addr);
470
+ interfaces.insert(ifr[i].ifr_name);
468
471
  }
469
472
  }
470
473
  }
@@ -474,6 +477,20 @@ getLocalAddresses(ProtocolSupport protocol, bool includeLoopback)
474
477
  }
475
478
  #endif
476
479
 
480
+ //
481
+ // Remove potential duplicates from the result.
482
+ //
483
+ set<Address, AddressCompare> seen;
484
+ vector<Address> tmp;
485
+ tmp.swap(result);
486
+ for(vector<Address>::const_iterator p = tmp.begin(); p != tmp.end(); ++p)
487
+ {
488
+ if(seen.find(*p) == seen.end())
489
+ {
490
+ result.push_back(*p);
491
+ seen.insert(*p);
492
+ }
493
+ }
477
494
  return result;
478
495
  }
479
496
 
@@ -792,6 +809,35 @@ getAddressStorageSize(const Address& addr)
792
809
  return size;
793
810
  }
794
811
 
812
+ vector<Address>
813
+ getLoopbackAddresses(ProtocolSupport protocol, int port = 0)
814
+ {
815
+ vector<Address> result;
816
+
817
+ Address addr;
818
+ memset(&addr.saStorage, 0, sizeof(sockaddr_storage));
819
+
820
+ //
821
+ // We don't use getaddrinfo when host is empty as it's not portable (some old Linux
822
+ // versions don't support it).
823
+ //
824
+ if(protocol != EnableIPv4)
825
+ {
826
+ addr.saIn6.sin6_family = AF_INET6;
827
+ addr.saIn6.sin6_port = htons(port);
828
+ addr.saIn6.sin6_addr = in6addr_loopback;
829
+ result.push_back(addr);
830
+ }
831
+ if(protocol != EnableIPv6)
832
+ {
833
+ addr.saIn.sin_family = AF_INET;
834
+ addr.saIn.sin_port = htons(port);
835
+ addr.saIn.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
836
+ result.push_back(addr);
837
+ }
838
+ return result;
839
+ }
840
+
795
841
  #endif // #ifndef ICE_OS_UWP
796
842
 
797
843
  }
@@ -832,9 +878,7 @@ IceInternal::NativeInfo::completed(SocketOperation operation)
832
878
  {
833
879
  if(!PostQueuedCompletionStatus(_handle, 0, _key, getAsyncInfo(operation)))
834
880
  {
835
- Ice::SocketException ex(__FILE__, __LINE__);
836
- ex.error = GetLastError();
837
- throw ex;
881
+ throw Ice::SocketException(__FILE__, __LINE__, GetLastError());
838
882
  }
839
883
  }
840
884
 
@@ -844,7 +888,7 @@ void
844
888
  IceInternal::NativeInfo::queueAction(SocketOperation op, IAsyncAction^ action, bool connect)
845
889
  {
846
890
  AsyncInfo* asyncInfo = getAsyncInfo(op);
847
- if(checkIfErrorOrCompleted(op, action, connect))
891
+ if(checkIfErrorOrCompleted(op, action, action->Status, connect))
848
892
  {
849
893
  asyncInfo->count = 0;
850
894
  }
@@ -860,6 +904,7 @@ IceInternal::NativeInfo::queueAction(SocketOperation op, IAsyncAction^ action, b
860
904
  //
861
905
  this->queueActionCompleted(op, asyncInfo, info, status);
862
906
  });
907
+ asyncInfo->operation = action;
863
908
  }
864
909
  }
865
910
 
@@ -883,11 +928,21 @@ void
883
928
  IceInternal::NativeInfo::queueOperation(SocketOperation op, IAsyncOperation<unsigned int>^ operation)
884
929
  {
885
930
  AsyncInfo* info = getAsyncInfo(op);
886
- if(checkIfErrorOrCompleted(op, operation))
931
+ Windows::Foundation::AsyncStatus status = operation->Status;
932
+ if(status == Windows::Foundation::AsyncStatus::Completed)
887
933
  {
934
+ //
935
+ // NOTE: it's important to modify the count _before_ calling the completion handler
936
+ // since this might not always be called with the connection mutex but from a Windows
937
+ // thread pool thread if we chained multiple Async calls (GetGetOutputStreamAsync and
938
+ // StoreAsync for example, see the UDPTransceiver implementation). So we can't modify
939
+ // the AsyncInfo structure after calling the completed callback.
940
+ //
888
941
  info->count = static_cast<int>(operation->GetResults());
942
+ _completedHandler(op);
943
+ return;
889
944
  }
890
- else
945
+ else if(!checkIfErrorOrCompleted(op, operation, status))
891
946
  {
892
947
  if(!info->completedHandler)
893
948
  {
@@ -903,6 +958,7 @@ IceInternal::NativeInfo::queueOperation(SocketOperation op, IAsyncOperation<unsi
903
958
  });
904
959
  }
905
960
  operation->Completed = info->completedHandler;
961
+ info->operation = operation;
906
962
  }
907
963
  }
908
964
 
@@ -937,7 +993,7 @@ IceInternal::NativeInfo::completed(SocketOperation operation)
937
993
  }
938
994
 
939
995
  bool
940
- IceInternal::NativeInfo::checkIfErrorOrCompleted(SocketOperation op, IAsyncInfo^ info, bool connect)
996
+ IceInternal::NativeInfo::checkIfErrorOrCompleted(SocketOperation op, IAsyncInfo^ info, Windows::Foundation::AsyncStatus status, bool connect)
941
997
  {
942
998
  //
943
999
  // NOTE: It's important to only check for info->Status once as it
@@ -948,7 +1004,6 @@ IceInternal::NativeInfo::checkIfErrorOrCompleted(SocketOperation op, IAsyncInfo^
948
1004
  // error. A canceled async status can occur if there's a timeout
949
1005
  // and the socket is closed.
950
1006
  //
951
- Windows::Foundation::AsyncStatus status = info->Status;
952
1007
  if(status == Windows::Foundation::AsyncStatus::Completed)
953
1008
  {
954
1009
  _completedHandler(op);
@@ -1059,10 +1114,7 @@ IceInternal::getAddresses(const string& host, int port, ProtocolSupport, Ice::En
1059
1114
  }
1060
1115
  catch(Platform::Exception^ pex)
1061
1116
  {
1062
- DNSException ex(__FILE__, __LINE__);
1063
- ex.error = (int)SocketError::GetStatus(pex->HResult);
1064
- ex.host = host;
1065
- throw ex;
1117
+ throw DNSException(__FILE__, __LINE__, (int)SocketError::GetStatus(pex->HResult), host);
1066
1118
  }
1067
1119
 
1068
1120
  }
@@ -1072,9 +1124,6 @@ IceInternal::getAddresses(const string& host, int port, ProtocolSupport protocol
1072
1124
  bool preferIPv6, bool canBlock)
1073
1125
  {
1074
1126
  vector<Address> result;
1075
- Address addr;
1076
-
1077
- memset(&addr.saStorage, 0, sizeof(sockaddr_storage));
1078
1127
 
1079
1128
  //
1080
1129
  // We don't use getaddrinfo when host is empty as it's not portable (some old Linux
@@ -1082,24 +1131,14 @@ IceInternal::getAddresses(const string& host, int port, ProtocolSupport protocol
1082
1131
  //
1083
1132
  if(host.empty())
1084
1133
  {
1085
- if(protocol != EnableIPv4)
1086
- {
1087
- addr.saIn6.sin6_family = AF_INET6;
1088
- addr.saIn6.sin6_port = htons(port);
1089
- addr.saIn6.sin6_addr = in6addr_loopback;
1090
- result.push_back(addr);
1091
- }
1092
- if(protocol != EnableIPv6)
1093
- {
1094
- addr.saIn.sin_family = AF_INET;
1095
- addr.saIn.sin_port = htons(port);
1096
- addr.saIn.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
1097
- result.push_back(addr);
1098
- }
1134
+ result = getLoopbackAddresses(protocol, port);
1099
1135
  sortAddresses(result, protocol, selType, preferIPv6);
1100
1136
  return result;
1101
1137
  }
1102
1138
 
1139
+ Address addr;
1140
+ memset(&addr.saStorage, 0, sizeof(sockaddr_storage));
1141
+
1103
1142
  struct addrinfo* info = 0;
1104
1143
  int retry = 5;
1105
1144
 
@@ -1143,10 +1182,7 @@ IceInternal::getAddresses(const string& host, int port, ProtocolSupport protocol
1143
1182
  }
1144
1183
  else if(rs != 0)
1145
1184
  {
1146
- DNSException ex(__FILE__, __LINE__);
1147
- ex.error = rs;
1148
- ex.host = host;
1149
- throw ex;
1185
+ throw DNSException(__FILE__, __LINE__, rs, host);
1150
1186
  }
1151
1187
 
1152
1188
  for(struct addrinfo* p = info; p != ICE_NULLPTR; p = p->ai_next)
@@ -1180,9 +1216,7 @@ IceInternal::getAddresses(const string& host, int port, ProtocolSupport protocol
1180
1216
 
1181
1217
  if(result.empty())
1182
1218
  {
1183
- DNSException ex(__FILE__, __LINE__);
1184
- ex.host = host;
1185
- throw ex;
1219
+ throw DNSException(__FILE__, __LINE__, 0, host);
1186
1220
  }
1187
1221
  sortAddresses(result, protocol, selType, preferIPv6);
1188
1222
  return result;
@@ -1240,7 +1274,8 @@ IceInternal::getAddressForServer(const string& host, int port, ProtocolSupport p
1240
1274
  #endif
1241
1275
  return addr;
1242
1276
  }
1243
- vector<Address> addrs = getAddresses(host, port, protocol, Ice::ICE_ENUM(EndpointSelectionType, Ordered), preferIPv6, canBlock);
1277
+ vector<Address> addrs = getAddresses(host, port, protocol, Ice::ICE_ENUM(EndpointSelectionType, Ordered),
1278
+ preferIPv6, canBlock);
1244
1279
  return addrs.empty() ? Address() : addrs[0];
1245
1280
  }
1246
1281
 
@@ -1376,9 +1411,7 @@ IceInternal::createServerSocket(bool udp, const Address& addr, ProtocolSupport p
1376
1411
  }
1377
1412
  #endif
1378
1413
  closeSocketNoThrow(fd);
1379
- SocketException ex(__FILE__, __LINE__);
1380
- ex.error = getSocketErrno();
1381
- throw ex;
1414
+ throw SocketException(__FILE__, __LINE__, getSocketErrno());
1382
1415
  }
1383
1416
  }
1384
1417
  return fd;
@@ -1430,9 +1463,7 @@ IceInternal::closeSocket(SOCKET fd)
1430
1463
  int error = WSAGetLastError();
1431
1464
  if(closesocket(fd) == SOCKET_ERROR)
1432
1465
  {
1433
- SocketException ex(__FILE__, __LINE__);
1434
- ex.error = getSocketErrno();
1435
- throw ex;
1466
+ throw SocketException(__FILE__, __LINE__, getSocketErrno());
1436
1467
  }
1437
1468
  WSASetLastError(error);
1438
1469
  #else
@@ -1449,9 +1480,7 @@ IceInternal::closeSocket(SOCKET fd)
1449
1480
  if(close(fd) == SOCKET_ERROR)
1450
1481
  # endif
1451
1482
  {
1452
- SocketException ex(__FILE__, __LINE__);
1453
- ex.error = getSocketErrno();
1454
- throw ex;
1483
+ throw SocketException(__FILE__, __LINE__, getSocketErrno());
1455
1484
  }
1456
1485
  errno = error;
1457
1486
  #endif
@@ -1472,9 +1501,7 @@ IceInternal::fdToLocalAddress(SOCKET fd, Address& addr)
1472
1501
  socklen_t len = static_cast<socklen_t>(sizeof(sockaddr_storage));
1473
1502
  if(getsockname(fd, &addr.sa, &len) == SOCKET_ERROR)
1474
1503
  {
1475
- SocketException ex(__FILE__, __LINE__);
1476
- ex.error = getSocketErrno();
1477
- throw ex;
1504
+ throw SocketException(__FILE__, __LINE__, getSocketErrno());
1478
1505
  }
1479
1506
  #else
1480
1507
  StreamSocket^ stream = dynamic_cast<StreamSocket^>(fd);
@@ -1505,9 +1532,7 @@ IceInternal::fdToRemoteAddress(SOCKET fd, Address& addr)
1505
1532
  }
1506
1533
  else
1507
1534
  {
1508
- SocketException ex(__FILE__, __LINE__);
1509
- ex.error = getSocketErrno();
1510
- throw ex;
1535
+ throw SocketException(__FILE__, __LINE__, getSocketErrno());
1511
1536
  }
1512
1537
  }
1513
1538
 
@@ -1672,7 +1697,7 @@ IceInternal::getHostsForEndpointExpand(const string& host, ProtocolSupport proto
1672
1697
  hosts.push_back(wstringToString(h->CanonicalName->Data(), getProcessStringConverter()));
1673
1698
  }
1674
1699
  }
1675
- if(includeLoopback)
1700
+ if(hosts.empty() || includeLoopback)
1676
1701
  {
1677
1702
  if(protocolSupport != EnableIPv6)
1678
1703
  {
@@ -1690,7 +1715,22 @@ IceInternal::getHostsForEndpointExpand(const string& host, ProtocolSupport proto
1690
1715
  vector<string>
1691
1716
  IceInternal::getInterfacesForMulticast(const string& intf, ProtocolSupport protocolSupport)
1692
1717
  {
1693
- vector<string> interfaces = getHostsForEndpointExpand(intf, protocolSupport, true);
1718
+ vector<string> interfaces;
1719
+ if(intf.empty() || intf == "0.0.0.0" || intf == "::" || intf == "0:0:0:0:0:0:0:0")
1720
+ {
1721
+ for(IIterator<HostName^>^ it = NetworkInformation::GetHostNames()->First(); it->HasCurrent; it->MoveNext())
1722
+ {
1723
+ HostName^ h = it->Current;
1724
+ if(h->IPInformation != nullptr && h->IPInformation->NetworkAdapter != nullptr)
1725
+ {
1726
+ string s = wstringToString(h->CanonicalName->Data(), getProcessStringConverter());
1727
+ if(find(interfaces.begin(), interfaces.end(), s) == interfaces.end())
1728
+ {
1729
+ interfaces.push_back(s);
1730
+ }
1731
+ }
1732
+ }
1733
+ }
1694
1734
  if(interfaces.empty())
1695
1735
  {
1696
1736
  interfaces.push_back(intf);
@@ -1705,7 +1745,7 @@ IceInternal::getHostsForEndpointExpand(const string& host, ProtocolSupport proto
1705
1745
  bool ipv4Wildcard = false;
1706
1746
  if(isWildcard(host, protocolSupport, ipv4Wildcard))
1707
1747
  {
1708
- vector<Address> addrs = getLocalAddresses(ipv4Wildcard ? EnableIPv4 : protocolSupport, includeLoopback);
1748
+ vector<Address> addrs = getLocalAddresses(ipv4Wildcard ? EnableIPv4 : protocolSupport, includeLoopback, false);
1709
1749
  for(vector<Address>::const_iterator p = addrs.begin(); p != addrs.end(); ++p)
1710
1750
  {
1711
1751
  //
@@ -1718,6 +1758,15 @@ IceInternal::getHostsForEndpointExpand(const string& host, ProtocolSupport proto
1718
1758
  hosts.push_back(inetAddrToString(*p));
1719
1759
  }
1720
1760
  }
1761
+ if(hosts.empty())
1762
+ {
1763
+ // Return loopback if no other local addresses are available.
1764
+ addrs = getLoopbackAddresses(protocolSupport);
1765
+ for(vector<Address>::const_iterator p = addrs.begin(); p != addrs.end(); ++p)
1766
+ {
1767
+ hosts.push_back(inetAddrToString(*p));
1768
+ }
1769
+ }
1721
1770
  }
1722
1771
  return hosts; // An empty host list indicates to just use the given host.
1723
1772
  }
@@ -1729,7 +1778,7 @@ IceInternal::getInterfacesForMulticast(const string& intf, ProtocolSupport proto
1729
1778
  bool ipv4Wildcard = false;
1730
1779
  if(isWildcard(intf, protocolSupport, ipv4Wildcard))
1731
1780
  {
1732
- vector<Address> addrs = getLocalAddresses(ipv4Wildcard ? EnableIPv4 : protocolSupport, true);
1781
+ vector<Address> addrs = getLocalAddresses(ipv4Wildcard ? EnableIPv4 : protocolSupport, true, true);
1733
1782
  for(vector<Address>::const_iterator p = addrs.begin(); p != addrs.end(); ++p)
1734
1783
  {
1735
1784
  interfaces.push_back(inetAddrToString(*p)); // We keep link local addresses for multicast
@@ -1958,9 +2007,7 @@ IceInternal::setBlock(SOCKET fd, bool block)
1958
2007
  if(ioctlsocket(fd, FIONBIO, &arg) == SOCKET_ERROR)
1959
2008
  {
1960
2009
  closeSocketNoThrow(fd);
1961
- SocketException ex(__FILE__, __LINE__);
1962
- ex.error = WSAGetLastError();
1963
- throw ex;
2010
+ throw SocketException(__FILE__, __LINE__, WSAGetLastError());
1964
2011
  }
1965
2012
  }
1966
2013
  else
@@ -1969,9 +2016,7 @@ IceInternal::setBlock(SOCKET fd, bool block)
1969
2016
  if(ioctlsocket(fd, FIONBIO, &arg) == SOCKET_ERROR)
1970
2017
  {
1971
2018
  closeSocketNoThrow(fd);
1972
- SocketException ex(__FILE__, __LINE__);
1973
- ex.error = WSAGetLastError();
1974
- throw ex;
2019
+ throw SocketException(__FILE__, __LINE__, WSAGetLastError());
1975
2020
  }
1976
2021
  }
1977
2022
  #else
@@ -1982,9 +2027,7 @@ IceInternal::setBlock(SOCKET fd, bool block)
1982
2027
  if(fcntl(fd, F_SETFL, flags) == SOCKET_ERROR)
1983
2028
  {
1984
2029
  closeSocketNoThrow(fd);
1985
- SocketException ex(__FILE__, __LINE__);
1986
- ex.error = errno;
1987
- throw ex;
2030
+ throw SocketException(__FILE__, __LINE__, errno);
1988
2031
  }
1989
2032
  }
1990
2033
  else
@@ -1994,9 +2037,7 @@ IceInternal::setBlock(SOCKET fd, bool block)
1994
2037
  if(fcntl(fd, F_SETFL, flags) == SOCKET_ERROR)
1995
2038
  {
1996
2039
  closeSocketNoThrow(fd);
1997
- SocketException ex(__FILE__, __LINE__);
1998
- ex.error = errno;
1999
- throw ex;
2040
+ throw SocketException(__FILE__, __LINE__, errno);
2000
2041
  }
2001
2042
  }
2002
2043
  #endif
@@ -2010,9 +2051,7 @@ IceInternal::setSendBufferSize(SOCKET fd, int sz)
2010
2051
  if(setsockopt(fd, SOL_SOCKET, SO_SNDBUF, reinterpret_cast<char*>(&sz), int(sizeof(int))) == SOCKET_ERROR)
2011
2052
  {
2012
2053
  closeSocketNoThrow(fd);
2013
- SocketException ex(__FILE__, __LINE__);
2014
- ex.error = getSocketErrno();
2015
- throw ex;
2054
+ throw SocketException(__FILE__, __LINE__, getSocketErrno());
2016
2055
  }
2017
2056
  #else
2018
2057
  StreamSocket^ stream = dynamic_cast<StreamSocket^>(fd);
@@ -2033,9 +2072,7 @@ IceInternal::getSendBufferSize(SOCKET fd)
2033
2072
  static_cast<unsigned int>(len) != sizeof(sz))
2034
2073
  {
2035
2074
  closeSocketNoThrow(fd);
2036
- SocketException ex(__FILE__, __LINE__);
2037
- ex.error = getSocketErrno();
2038
- throw ex;
2075
+ throw SocketException(__FILE__, __LINE__, getSocketErrno());
2039
2076
  }
2040
2077
  return sz;
2041
2078
  #else
@@ -2060,9 +2097,7 @@ IceInternal::setRecvBufferSize(SOCKET fd, int sz)
2060
2097
  if(setsockopt(fd, SOL_SOCKET, SO_RCVBUF, reinterpret_cast<char*>(&sz), int(sizeof(int))) == SOCKET_ERROR)
2061
2098
  {
2062
2099
  closeSocketNoThrow(fd);
2063
- SocketException ex(__FILE__, __LINE__);
2064
- ex.error = getSocketErrno();
2065
- throw ex;
2100
+ throw SocketException(__FILE__, __LINE__, getSocketErrno());
2066
2101
  }
2067
2102
  }
2068
2103
  #endif
@@ -2077,9 +2112,7 @@ IceInternal::getRecvBufferSize(SOCKET fd)
2077
2112
  static_cast<unsigned int>(len) != sizeof(sz))
2078
2113
  {
2079
2114
  closeSocketNoThrow(fd);
2080
- SocketException ex(__FILE__, __LINE__);
2081
- ex.error = getSocketErrno();
2082
- throw ex;
2115
+ throw SocketException(__FILE__, __LINE__, getSocketErrno());
2083
2116
  }
2084
2117
  return sz;
2085
2118
  #else
@@ -2118,9 +2151,7 @@ IceInternal::setMcastGroup(SOCKET fd, const Address& group, const string& intf)
2118
2151
  if(rc == SOCKET_ERROR)
2119
2152
  {
2120
2153
  closeSocketNoThrow(fd);
2121
- SocketException ex(__FILE__, __LINE__);
2122
- ex.error = getSocketErrno();
2123
- throw ex;
2154
+ throw SocketException(__FILE__, __LINE__, getSocketErrno());
2124
2155
  }
2125
2156
  }
2126
2157
  }
@@ -2190,9 +2221,7 @@ IceInternal::setMcastInterface(SOCKET fd, const string& intf, const Address& add
2190
2221
  if(rc == SOCKET_ERROR)
2191
2222
  {
2192
2223
  closeSocketNoThrow(fd);
2193
- SocketException ex(__FILE__, __LINE__);
2194
- ex.error = getSocketErrno();
2195
- throw ex;
2224
+ throw SocketException(__FILE__, __LINE__, getSocketErrno());
2196
2225
  }
2197
2226
  }
2198
2227
  #endif
@@ -2218,9 +2247,7 @@ IceInternal::setMcastTtl(SOCKET fd, int ttl, const Address& addr)
2218
2247
  if(rc == SOCKET_ERROR)
2219
2248
  {
2220
2249
  closeSocketNoThrow(fd);
2221
- SocketException ex(__FILE__, __LINE__);
2222
- ex.error = getSocketErrno();
2223
- throw ex;
2250
+ throw SocketException(__FILE__, __LINE__, getSocketErrno());
2224
2251
  }
2225
2252
  }
2226
2253
  #endif
@@ -2238,9 +2265,7 @@ IceInternal::setReuseAddress(SOCKET fd, bool reuse)
2238
2265
  if(setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, reinterpret_cast<char*>(&flag), int(sizeof(int))) == SOCKET_ERROR)
2239
2266
  {
2240
2267
  closeSocketNoThrow(fd);
2241
- SocketException ex(__FILE__, __LINE__);
2242
- ex.error = getSocketErrno();
2243
- throw ex;
2268
+ throw SocketException(__FILE__, __LINE__, getSocketErrno());
2244
2269
  }
2245
2270
  }
2246
2271
  #endif
@@ -2365,9 +2390,7 @@ IceInternal::doBind(SOCKET fd, const Address& addr, const string&)
2365
2390
  if(::bind(fd, &addr.sa, size) == SOCKET_ERROR)
2366
2391
  {
2367
2392
  closeSocketNoThrow(fd);
2368
- SocketException ex(__FILE__, __LINE__);
2369
- ex.error = getSocketErrno();
2370
- throw ex;
2393
+ throw SocketException(__FILE__, __LINE__, getSocketErrno());
2371
2394
  }
2372
2395
 
2373
2396
  Address local;
@@ -2570,9 +2593,7 @@ repeatListen:
2570
2593
  }
2571
2594
 
2572
2595
  closeSocketNoThrow(fd);
2573
- SocketException ex(__FILE__, __LINE__);
2574
- ex.error = getSocketErrno();
2575
- throw ex;
2596
+ throw SocketException(__FILE__, __LINE__, getSocketErrno());
2576
2597
  }
2577
2598
  }
2578
2599
 
@@ -2603,21 +2624,15 @@ repeatConnect:
2603
2624
  closeSocketNoThrow(fd);
2604
2625
  if(connectionRefused())
2605
2626
  {
2606
- ConnectionRefusedException ex(__FILE__, __LINE__);
2607
- ex.error = getSocketErrno();
2608
- throw ex;
2627
+ throw ConnectionRefusedException(__FILE__, __LINE__, getSocketErrno());
2609
2628
  }
2610
2629
  else if(connectFailed())
2611
2630
  {
2612
- ConnectFailedException ex(__FILE__, __LINE__);
2613
- ex.error = getSocketErrno();
2614
- throw ex;
2631
+ throw ConnectFailedException(__FILE__, __LINE__, getSocketErrno());
2615
2632
  }
2616
2633
  else
2617
2634
  {
2618
- SocketException ex(__FILE__, __LINE__);
2619
- ex.error = getSocketErrno();
2620
- throw ex;
2635
+ throw SocketException(__FILE__, __LINE__, getSocketErrno());
2621
2636
  }
2622
2637
  }
2623
2638
 
@@ -2633,9 +2648,7 @@ repeatConnect:
2633
2648
  fdToLocalAddress(fd, localAddr);
2634
2649
  if(compareAddress(addr, localAddr) == 0)
2635
2650
  {
2636
- ConnectionRefusedException ex(__FILE__, __LINE__);
2637
- ex.error = 0; // No appropriate errno
2638
- throw ex;
2651
+ throw ConnectionRefusedException(__FILE__, __LINE__, 0); // No appropriate errno
2639
2652
  }
2640
2653
  }
2641
2654
  catch(const LocalException&)
@@ -2668,9 +2681,7 @@ IceInternal::doFinishConnect(SOCKET fd)
2668
2681
  socklen_t len = static_cast<socklen_t>(sizeof(int));
2669
2682
  if(getsockopt(fd, SOL_SOCKET, SO_ERROR, reinterpret_cast<char*>(&val), &len) == SOCKET_ERROR)
2670
2683
  {
2671
- SocketException ex(__FILE__, __LINE__);
2672
- ex.error = getSocketErrno();
2673
- throw ex;
2684
+ throw SocketException(__FILE__, __LINE__, getSocketErrno());
2674
2685
  }
2675
2686
 
2676
2687
  if(val > 0)
@@ -2682,21 +2693,15 @@ IceInternal::doFinishConnect(SOCKET fd)
2682
2693
  #endif
2683
2694
  if(connectionRefused())
2684
2695
  {
2685
- ConnectionRefusedException ex(__FILE__, __LINE__);
2686
- ex.error = getSocketErrno();
2687
- throw ex;
2696
+ throw ConnectionRefusedException(__FILE__, __LINE__, getSocketErrno());
2688
2697
  }
2689
2698
  else if(connectFailed())
2690
2699
  {
2691
- ConnectFailedException ex(__FILE__, __LINE__);
2692
- ex.error = getSocketErrno();
2693
- throw ex;
2700
+ throw ConnectFailedException(__FILE__, __LINE__, getSocketErrno());
2694
2701
  }
2695
2702
  else
2696
2703
  {
2697
- SocketException ex(__FILE__, __LINE__);
2698
- ex.error = getSocketErrno();
2699
- throw ex;
2704
+ throw SocketException(__FILE__, __LINE__, getSocketErrno());
2700
2705
  }
2701
2706
  }
2702
2707
 
@@ -2711,9 +2716,7 @@ IceInternal::doFinishConnect(SOCKET fd)
2711
2716
  Address remoteAddr;
2712
2717
  if(fdToRemoteAddress(fd, remoteAddr) && compareAddress(remoteAddr, localAddr) == 0)
2713
2718
  {
2714
- ConnectionRefusedException ex(__FILE__, __LINE__);
2715
- ex.error = 0; // No appropriate errno
2716
- throw ex;
2719
+ throw ConnectionRefusedException(__FILE__, __LINE__, 0); // No appropriate errno
2717
2720
  }
2718
2721
  #endif
2719
2722
  }
@@ -2735,9 +2738,7 @@ repeatAccept:
2735
2738
  goto repeatAccept;
2736
2739
  }
2737
2740
 
2738
- SocketException ex(__FILE__, __LINE__);
2739
- ex.error = getSocketErrno();
2740
- throw ex;
2741
+ throw SocketException(__FILE__, __LINE__, getSocketErrno());
2741
2742
  }
2742
2743
 
2743
2744
  setTcpNoDelay(ret);
@@ -2818,9 +2819,7 @@ IceInternal::createPipe(SOCKET fds[2])
2818
2819
 
2819
2820
  if(::pipe(fds) != 0)
2820
2821
  {
2821
- SyscallException ex(__FILE__, __LINE__);
2822
- ex.error = getSystemErrno();
2823
- throw ex;
2822
+ throw SyscallException(__FILE__, __LINE__, getSocketErrno());
2824
2823
  }
2825
2824
 
2826
2825
  try
@@ -2855,16 +2854,12 @@ IceInternal::checkConnectErrorCode(const char* file, int line, HRESULT herr)
2855
2854
  {
2856
2855
  if(herr == E_ACCESSDENIED)
2857
2856
  {
2858
- SocketException ex(file, line);
2859
- ex.error = static_cast<int>(herr);
2860
- throw ex;
2857
+ throw SocketException(file, line, static_cast<int>(herr));
2861
2858
  }
2862
2859
  SocketErrorStatus error = SocketError::GetStatus(herr);
2863
2860
  if(error == SocketErrorStatus::ConnectionRefused)
2864
2861
  {
2865
- ConnectionRefusedException ex(file, line);
2866
- ex.error = static_cast<int>(error);
2867
- throw ex;
2862
+ throw ConnectionRefusedException(file, line, static_cast<int>(error));
2868
2863
  }
2869
2864
  else if(error == SocketErrorStatus::NetworkDroppedConnectionOnReset ||
2870
2865
  error == SocketErrorStatus::ConnectionTimedOut ||
@@ -2873,21 +2868,15 @@ IceInternal::checkConnectErrorCode(const char* file, int line, HRESULT herr)
2873
2868
  error == SocketErrorStatus::ConnectionResetByPeer ||
2874
2869
  error == SocketErrorStatus::SoftwareCausedConnectionAbort)
2875
2870
  {
2876
- ConnectFailedException ex(file, line);
2877
- ex.error = static_cast<int>(error);
2878
- throw ex;
2871
+ throw ConnectFailedException(file, line, static_cast<int>(error));
2879
2872
  }
2880
2873
  else if(error == SocketErrorStatus::HostNotFound)
2881
2874
  {
2882
- DNSException ex(file, line);
2883
- ex.error = static_cast<int>(error);
2884
- throw ex;
2875
+ throw DNSException(file, line, static_cast<int>(error), "");
2885
2876
  }
2886
2877
  else
2887
2878
  {
2888
- SocketException ex(file, line);
2889
- ex.error = static_cast<int>(error);
2890
- throw ex;
2879
+ throw SocketException(file, line, static_cast<int>(error));
2891
2880
  }
2892
2881
  }
2893
2882
 
@@ -2896,30 +2885,22 @@ IceInternal::checkErrorCode(const char* file, int line, HRESULT herr)
2896
2885
  {
2897
2886
  if(herr == E_ACCESSDENIED)
2898
2887
  {
2899
- SocketException ex(file, line);
2900
- ex.error = static_cast<int>(herr);
2901
- throw ex;
2888
+ throw SocketException(file, line, static_cast<int>(herr));
2902
2889
  }
2903
2890
  SocketErrorStatus error = SocketError::GetStatus(herr);
2904
2891
  if(error == SocketErrorStatus::NetworkDroppedConnectionOnReset ||
2905
2892
  error == SocketErrorStatus::SoftwareCausedConnectionAbort ||
2906
2893
  error == SocketErrorStatus::ConnectionResetByPeer)
2907
2894
  {
2908
- ConnectionLostException ex(file, line);
2909
- ex.error = static_cast<int>(error);
2910
- throw ex;
2895
+ throw ConnectionLostException(file, line, static_cast<int>(error));
2911
2896
  }
2912
2897
  else if(error == SocketErrorStatus::HostNotFound)
2913
2898
  {
2914
- DNSException ex(file, line);
2915
- ex.error = static_cast<int>(error);
2916
- throw ex;
2899
+ throw DNSException(file, line, static_cast<int>(error), "");
2917
2900
  }
2918
2901
  else
2919
2902
  {
2920
- SocketException ex(file, line);
2921
- ex.error = static_cast<int>(error);
2922
- throw ex;
2903
+ throw SocketException(file, line, static_cast<int>(error));
2923
2904
  }
2924
2905
  }
2925
2906
 
@@ -2989,9 +2970,7 @@ IceInternal::doConnectAsync(SOCKET fd, const Address& addr, const Address& sourc
2989
2970
 
2990
2971
  if(::bind(fd, &bindAddr.sa, size) == SOCKET_ERROR)
2991
2972
  {
2992
- SocketException ex(__FILE__, __LINE__);
2993
- ex.error = getSocketErrno();
2994
- throw ex;
2973
+ throw SocketException(__FILE__, __LINE__, getSocketErrno());
2995
2974
  }
2996
2975
 
2997
2976
  LPFN_CONNECTEX ConnectEx = ICE_NULLPTR; // a pointer to the 'ConnectEx()' function
@@ -3007,9 +2986,7 @@ IceInternal::doConnectAsync(SOCKET fd, const Address& addr, const Address& sourc
3007
2986
  ICE_NULLPTR,
3008
2987
  ICE_NULLPTR) == SOCKET_ERROR)
3009
2988
  {
3010
- SocketException ex(__FILE__, __LINE__);
3011
- ex.error = getSocketErrno();
3012
- throw ex;
2989
+ throw SocketException(__FILE__, __LINE__, getSocketErrno());
3013
2990
  }
3014
2991
 
3015
2992
  if(!ConnectEx(fd, &addr.sa, size, 0, 0, 0, &info))
@@ -3018,21 +2995,15 @@ IceInternal::doConnectAsync(SOCKET fd, const Address& addr, const Address& sourc
3018
2995
  {
3019
2996
  if(connectionRefused())
3020
2997
  {
3021
- ConnectionRefusedException ex(__FILE__, __LINE__);
3022
- ex.error = getSocketErrno();
3023
- throw ex;
2998
+ throw ConnectionRefusedException(__FILE__, __LINE__, getSocketErrno());
3024
2999
  }
3025
3000
  else if(connectFailed())
3026
3001
  {
3027
- ConnectFailedException ex(__FILE__, __LINE__);
3028
- ex.error = getSocketErrno();
3029
- throw ex;
3002
+ throw ConnectFailedException(__FILE__, __LINE__, getSocketErrno());
3030
3003
  }
3031
3004
  else
3032
3005
  {
3033
- SocketException ex(__FILE__, __LINE__);
3034
- ex.error = getSocketErrno();
3035
- throw ex;
3006
+ throw SocketException(__FILE__, __LINE__, getSocketErrno());
3036
3007
  }
3037
3008
  }
3038
3009
  }
@@ -3051,29 +3022,21 @@ IceInternal::doFinishConnectAsync(SOCKET fd, AsyncInfo& info)
3051
3022
  WSASetLastError(info.error);
3052
3023
  if(connectionRefused())
3053
3024
  {
3054
- ConnectionRefusedException ex(__FILE__, __LINE__);
3055
- ex.error = getSocketErrno();
3056
- throw ex;
3025
+ throw ConnectionRefusedException(__FILE__, __LINE__, getSocketErrno());
3057
3026
  }
3058
3027
  else if(connectFailed())
3059
3028
  {
3060
- ConnectFailedException ex(__FILE__, __LINE__);
3061
- ex.error = getSocketErrno();
3062
- throw ex;
3029
+ throw ConnectFailedException(__FILE__, __LINE__, getSocketErrno());
3063
3030
  }
3064
3031
  else
3065
3032
  {
3066
- SocketException ex(__FILE__, __LINE__);
3067
- ex.error = getSocketErrno();
3068
- throw ex;
3033
+ throw SocketException(__FILE__, __LINE__, getSocketErrno());
3069
3034
  }
3070
3035
  }
3071
3036
 
3072
3037
  if(setsockopt(fd, SOL_SOCKET, SO_UPDATE_CONNECT_CONTEXT, ICE_NULLPTR, 0) == SOCKET_ERROR)
3073
3038
  {
3074
- SocketException ex(__FILE__, __LINE__);
3075
- ex.error = getSocketErrno();
3076
- throw ex;
3039
+ throw SocketException(__FILE__, __LINE__, getSocketErrno());
3077
3040
  }
3078
3041
  }
3079
3042
  #endif