zeroc-ice 3.7.2 → 3.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (283) hide show
  1. checksums.yaml +5 -5
  2. data/ext/Config.h +4 -0
  3. data/ext/Operation.cpp +5 -5
  4. data/ext/Properties.cpp +1 -1
  5. data/ext/Proxy.cpp +16 -2
  6. data/ext/Types.cpp +45 -40
  7. data/ext/Util.cpp +1 -1
  8. data/ext/Util.h +10 -8
  9. data/ext/ice/cpp/include/Ice/Config.h +4 -0
  10. data/ext/ice/cpp/include/Ice/FactoryTableInit.h +1 -1
  11. data/ext/ice/cpp/include/Ice/IconvStringConverter.h +4 -3
  12. data/ext/ice/cpp/include/Ice/InputStream.h +4 -4
  13. data/ext/ice/cpp/include/Ice/Optional.h +11 -0
  14. data/ext/ice/cpp/include/Ice/OutgoingAsync.h +1 -1
  15. data/ext/ice/cpp/include/Ice/OutputStream.h +5 -5
  16. data/ext/ice/cpp/include/Ice/Proxy.h +17 -5
  17. data/ext/ice/cpp/include/Ice/StreamHelpers.h +1 -1
  18. data/ext/ice/cpp/include/Ice/Value.h +1 -1
  19. data/ext/ice/cpp/include/IceUtil/Atomic.h +1 -1
  20. data/ext/ice/cpp/include/IceUtil/Config.h +16 -6
  21. data/ext/ice/cpp/include/IceUtil/ConsoleUtil.h +4 -4
  22. data/ext/ice/cpp/include/IceUtil/Optional.h +8 -0
  23. data/ext/ice/cpp/include/IceUtil/OutputUtil.h +17 -14
  24. data/ext/ice/cpp/include/IceUtil/Random.h +1 -1
  25. data/ext/ice/cpp/include/IceUtil/ResourceConfig.h +2 -2
  26. data/ext/ice/cpp/include/IceUtil/ScannerConfig.h +6 -0
  27. data/ext/ice/cpp/include/IceUtil/StringConverter.h +1 -1
  28. data/ext/ice/cpp/include/generated/Ice/BuiltinSequences.h +3 -3
  29. data/ext/ice/cpp/include/generated/Ice/Communicator.h +3 -3
  30. data/ext/ice/cpp/include/generated/Ice/CommunicatorF.h +3 -3
  31. data/ext/ice/cpp/include/generated/Ice/Connection.h +33 -36
  32. data/ext/ice/cpp/include/generated/Ice/ConnectionF.h +3 -3
  33. data/ext/ice/cpp/include/generated/Ice/Current.h +20 -21
  34. data/ext/ice/cpp/include/generated/Ice/Endpoint.h +24 -24
  35. data/ext/ice/cpp/include/generated/Ice/EndpointF.h +3 -3
  36. data/ext/ice/cpp/include/generated/Ice/EndpointTypes.h +3 -3
  37. data/ext/ice/cpp/include/generated/Ice/FacetMap.h +3 -3
  38. data/ext/ice/cpp/include/generated/Ice/Identity.h +4 -5
  39. data/ext/ice/cpp/include/generated/Ice/ImplicitContext.h +3 -3
  40. data/ext/ice/cpp/include/generated/Ice/ImplicitContextF.h +3 -3
  41. data/ext/ice/cpp/include/generated/Ice/Instrumentation.h +15 -15
  42. data/ext/ice/cpp/include/generated/Ice/InstrumentationF.h +3 -3
  43. data/ext/ice/cpp/include/generated/Ice/LocalException.h +27 -93
  44. data/ext/ice/cpp/include/generated/Ice/Locator.h +27 -32
  45. data/ext/ice/cpp/include/generated/Ice/LocatorF.h +3 -3
  46. data/ext/ice/cpp/include/generated/Ice/Logger.h +3 -3
  47. data/ext/ice/cpp/include/generated/Ice/LoggerF.h +3 -3
  48. data/ext/ice/cpp/include/generated/Ice/Metrics.h +75 -79
  49. data/ext/ice/cpp/include/generated/Ice/ObjectAdapter.h +3 -3
  50. data/ext/ice/cpp/include/generated/Ice/ObjectAdapterF.h +3 -3
  51. data/ext/ice/cpp/include/generated/Ice/ObjectFactory.h +3 -3
  52. data/ext/ice/cpp/include/generated/Ice/Plugin.h +3 -3
  53. data/ext/ice/cpp/include/generated/Ice/PluginF.h +3 -3
  54. data/ext/ice/cpp/include/generated/Ice/Process.h +3 -3
  55. data/ext/ice/cpp/include/generated/Ice/ProcessF.h +3 -3
  56. data/ext/ice/cpp/include/generated/Ice/Properties.h +3 -3
  57. data/ext/ice/cpp/include/generated/Ice/PropertiesAdmin.h +9 -9
  58. data/ext/ice/cpp/include/generated/Ice/PropertiesF.h +3 -3
  59. data/ext/ice/cpp/include/generated/Ice/RemoteLogger.h +9 -11
  60. data/ext/ice/cpp/include/generated/Ice/Router.h +22 -22
  61. data/ext/ice/cpp/include/generated/Ice/RouterF.h +3 -3
  62. data/ext/ice/cpp/include/generated/Ice/ServantLocator.h +3 -3
  63. data/ext/ice/cpp/include/generated/Ice/ServantLocatorF.h +3 -3
  64. data/ext/ice/cpp/include/generated/Ice/SliceChecksumDict.h +3 -3
  65. data/ext/ice/cpp/include/generated/Ice/ValueFactory.h +3 -3
  66. data/ext/ice/cpp/include/generated/Ice/Version.h +15 -17
  67. data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfo.h +3 -3
  68. data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfoF.h +3 -3
  69. data/ext/ice/cpp/include/generated/IceSSL/EndpointInfo.h +3 -3
  70. data/ext/ice/cpp/src/Ice/ArgVector.cpp +3 -3
  71. data/ext/ice/cpp/src/Ice/Base64.cpp +11 -12
  72. data/ext/ice/cpp/src/Ice/BatchRequestQueue.cpp +1 -1
  73. data/ext/ice/cpp/src/Ice/Buffer.cpp +2 -2
  74. data/ext/ice/cpp/src/Ice/BuiltinSequences.cpp +3 -3
  75. data/ext/ice/cpp/src/Ice/Communicator.cpp +3 -3
  76. data/ext/ice/cpp/src/Ice/CommunicatorF.cpp +3 -3
  77. data/ext/ice/cpp/src/Ice/CommunicatorI.cpp +19 -0
  78. data/ext/ice/cpp/src/Ice/CommunicatorI.h +5 -0
  79. data/ext/ice/cpp/src/Ice/Connection.cpp +3 -3
  80. data/ext/ice/cpp/src/Ice/ConnectionF.cpp +3 -3
  81. data/ext/ice/cpp/src/Ice/ConnectionI.cpp +31 -16
  82. data/ext/ice/cpp/src/Ice/Current.cpp +3 -3
  83. data/ext/ice/cpp/src/Ice/DispatchInterceptor.cpp +13 -0
  84. data/ext/ice/cpp/src/Ice/DynamicLibrary.cpp +6 -5
  85. data/ext/ice/cpp/src/Ice/Endpoint.cpp +3 -3
  86. data/ext/ice/cpp/src/Ice/EndpointF.cpp +3 -3
  87. data/ext/ice/cpp/src/Ice/EndpointTypes.cpp +3 -3
  88. data/ext/ice/cpp/src/Ice/Exception.cpp +5 -5
  89. data/ext/ice/cpp/src/Ice/FacetMap.cpp +3 -3
  90. data/ext/ice/cpp/src/Ice/HashUtil.h +1 -1
  91. data/ext/ice/cpp/src/Ice/IPEndpointI.cpp +12 -1
  92. data/ext/ice/cpp/src/Ice/Identity.cpp +3 -3
  93. data/ext/ice/cpp/src/Ice/ImplicitContext.cpp +3 -3
  94. data/ext/ice/cpp/src/Ice/ImplicitContextF.cpp +3 -3
  95. data/ext/ice/cpp/src/Ice/Incoming.cpp +2 -0
  96. data/ext/ice/cpp/src/Ice/Initialize.cpp +4 -3
  97. data/ext/ice/cpp/src/Ice/InputStream.cpp +19 -19
  98. data/ext/ice/cpp/src/Ice/Instance.cpp +28 -8
  99. data/ext/ice/cpp/src/Ice/Instrumentation.cpp +3 -3
  100. data/ext/ice/cpp/src/Ice/InstrumentationF.cpp +3 -3
  101. data/ext/ice/cpp/src/Ice/LocalException.cpp +3 -3
  102. data/ext/ice/cpp/src/Ice/Locator.cpp +7 -7
  103. data/ext/ice/cpp/src/Ice/LocatorF.cpp +3 -3
  104. data/ext/ice/cpp/src/Ice/Logger.cpp +3 -3
  105. data/ext/ice/cpp/src/Ice/LoggerAdminI.cpp +1 -7
  106. data/ext/ice/cpp/src/Ice/LoggerF.cpp +3 -3
  107. data/ext/ice/cpp/src/Ice/LoggerI.cpp +6 -0
  108. data/ext/ice/cpp/src/Ice/Metrics.cpp +5 -5
  109. data/ext/ice/cpp/src/Ice/Network.cpp +23 -22
  110. data/ext/ice/cpp/src/Ice/Network.h +1 -1
  111. data/ext/ice/cpp/src/Ice/OSLogLoggerI.cpp +57 -0
  112. data/ext/ice/cpp/src/Ice/OSLogLoggerI.h +40 -0
  113. data/ext/ice/cpp/src/Ice/Object.cpp +9 -7
  114. data/ext/ice/cpp/src/Ice/ObjectAdapter.cpp +3 -3
  115. data/ext/ice/cpp/src/Ice/ObjectAdapterF.cpp +3 -3
  116. data/ext/ice/cpp/src/Ice/ObjectAdapterI.cpp +13 -1
  117. data/ext/ice/cpp/src/Ice/ObjectAdapterI.h +4 -0
  118. data/ext/ice/cpp/src/Ice/ObjectFactory.cpp +3 -3
  119. data/ext/ice/cpp/src/Ice/OutgoingAsync.cpp +1 -1
  120. data/ext/ice/cpp/src/Ice/OutputStream.cpp +24 -24
  121. data/ext/ice/cpp/src/Ice/Plugin.cpp +3 -3
  122. data/ext/ice/cpp/src/Ice/PluginF.cpp +3 -3
  123. data/ext/ice/cpp/src/Ice/Process.cpp +3 -3
  124. data/ext/ice/cpp/src/Ice/ProcessF.cpp +3 -3
  125. data/ext/ice/cpp/src/Ice/Properties.cpp +3 -3
  126. data/ext/ice/cpp/src/Ice/PropertiesAdmin.cpp +4 -4
  127. data/ext/ice/cpp/src/Ice/PropertiesF.cpp +3 -3
  128. data/ext/ice/cpp/src/Ice/PropertyNames.cpp +2 -1
  129. data/ext/ice/cpp/src/Ice/PropertyNames.h +1 -1
  130. data/ext/ice/cpp/src/Ice/Proxy.cpp +6 -0
  131. data/ext/ice/cpp/src/Ice/ProxyFactory.cpp +1 -1
  132. data/ext/ice/cpp/src/Ice/ReferenceFactory.cpp +1 -1
  133. data/ext/ice/cpp/src/Ice/RegisterPluginsInit.cpp +3 -2
  134. data/ext/ice/cpp/src/Ice/RemoteLogger.cpp +3 -3
  135. data/ext/ice/cpp/src/Ice/Router.cpp +6 -6
  136. data/ext/ice/cpp/src/Ice/RouterF.cpp +3 -3
  137. data/ext/ice/cpp/src/Ice/SHA1.cpp +2 -2
  138. data/ext/ice/cpp/src/Ice/Selector.cpp +18 -13
  139. data/ext/ice/cpp/src/Ice/ServantLocator.cpp +3 -3
  140. data/ext/ice/cpp/src/Ice/ServantLocatorF.cpp +3 -3
  141. data/ext/ice/cpp/src/Ice/SliceChecksumDict.cpp +3 -3
  142. data/ext/ice/cpp/src/Ice/StreamSocket.cpp +6 -6
  143. data/ext/ice/cpp/src/Ice/TcpAcceptor.cpp +6 -0
  144. data/ext/ice/cpp/src/Ice/TcpConnector.cpp +5 -0
  145. data/ext/ice/cpp/src/Ice/TcpEndpointI.cpp +5 -0
  146. data/ext/ice/cpp/src/Ice/TcpTransceiver.cpp +5 -0
  147. data/ext/ice/cpp/src/Ice/ThreadPool.cpp +63 -0
  148. data/ext/ice/cpp/src/Ice/ThreadPool.h +10 -2
  149. data/ext/ice/cpp/src/Ice/Timer.cpp +10 -0
  150. data/ext/ice/cpp/src/Ice/UdpEndpointI.cpp +11 -1
  151. data/ext/ice/cpp/src/Ice/UdpTransceiver.cpp +10 -2
  152. data/ext/ice/cpp/src/Ice/ValueFactory.cpp +3 -3
  153. data/ext/ice/cpp/src/Ice/Version.cpp +3 -3
  154. data/ext/ice/cpp/src/Ice/WSTransceiver.cpp +16 -15
  155. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.cpp +3 -3
  156. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.h +3 -3
  157. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.cpp +3 -3
  158. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.h +3 -3
  159. data/ext/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +37 -8
  160. data/ext/ice/cpp/src/IceSSL/CertificateI.cpp +3 -3
  161. data/ext/ice/cpp/src/IceSSL/ConnectionInfo.cpp +3 -3
  162. data/ext/ice/cpp/src/IceSSL/ConnectionInfoF.cpp +3 -3
  163. data/ext/ice/cpp/src/IceSSL/EndpointInfo.cpp +3 -3
  164. data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +4 -16
  165. data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.h +0 -1
  166. data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +40 -3
  167. data/ext/ice/cpp/src/IceSSL/SChannelEngine.cpp +0 -7
  168. data/ext/ice/cpp/src/IceSSL/SChannelEngine.h +0 -2
  169. data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.cpp +18 -6
  170. data/ext/ice/cpp/src/IceSSL/SSLEngine.cpp +19 -7
  171. data/ext/ice/cpp/src/IceSSL/SSLEngine.h +2 -0
  172. data/ext/ice/cpp/src/IceSSL/SecureTransportCertificateI.cpp +32 -21
  173. data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +21 -6
  174. data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.cpp +19 -16
  175. data/ext/ice/cpp/src/IceSSL/Util.cpp +11 -5
  176. data/ext/ice/cpp/src/IceUtil/FileUtil.cpp +1 -1
  177. data/ext/ice/cpp/src/IceUtil/Options.cpp +3 -3
  178. data/ext/ice/cpp/src/IceUtil/OutputUtil.cpp +40 -10
  179. data/ext/ice/cpp/src/IceUtil/Random.cpp +2 -2
  180. data/ext/ice/cpp/src/IceUtil/StringConverter.cpp +5 -5
  181. data/ext/ice/cpp/src/IceUtil/StringUtil.cpp +3 -3
  182. data/ext/ice/cpp/src/IceUtil/Time.cpp +3 -3
  183. data/ext/ice/cpp/src/IceUtil/UUID.cpp +5 -5
  184. data/ext/ice/cpp/src/IceUtil/UtilException.cpp +4 -4
  185. data/ext/ice/cpp/src/Slice/CPlusPlusUtil.cpp +13 -9
  186. data/ext/ice/cpp/src/Slice/CPlusPlusUtil.h +1 -1
  187. data/ext/ice/cpp/src/Slice/Grammar.cpp +8 -0
  188. data/ext/ice/cpp/src/Slice/JavaUtil.cpp +1 -2
  189. data/ext/ice/cpp/src/Slice/MD5I.cpp +8 -0
  190. data/ext/ice/cpp/src/Slice/Parser.cpp +60 -112
  191. data/ext/ice/cpp/src/Slice/Parser.h +27 -1
  192. data/ext/ice/cpp/src/Slice/Preprocessor.cpp +2 -1
  193. data/ext/ice/cpp/src/Slice/PythonUtil.cpp +10 -10
  194. data/ext/ice/cpp/src/Slice/RubyUtil.cpp +1 -1
  195. data/ext/ice/cpp/src/Slice/Scanner.cpp +8 -0
  196. data/ext/ice/cpp/src/Slice/StringLiteralUtil.cpp +11 -6
  197. data/ext/ice/mcpp/Makefile +2 -5
  198. data/ice.gemspec +1 -1
  199. data/lib/Glacier2/Metrics.rb +1 -1
  200. data/lib/Glacier2/PermissionsVerifier.rb +1 -1
  201. data/lib/Glacier2/PermissionsVerifierF.rb +1 -1
  202. data/lib/Glacier2/Router.rb +1 -1
  203. data/lib/Glacier2/RouterF.rb +1 -1
  204. data/lib/Glacier2/SSLInfo.rb +1 -1
  205. data/lib/Glacier2/Session.rb +1 -1
  206. data/lib/Ice/BuiltinSequences.rb +1 -1
  207. data/lib/Ice/Communicator.rb +1 -1
  208. data/lib/Ice/CommunicatorF.rb +1 -1
  209. data/lib/Ice/Connection.rb +1 -1
  210. data/lib/Ice/ConnectionF.rb +1 -1
  211. data/lib/Ice/Current.rb +1 -1
  212. data/lib/Ice/Endpoint.rb +1 -1
  213. data/lib/Ice/EndpointF.rb +1 -1
  214. data/lib/Ice/EndpointTypes.rb +1 -1
  215. data/lib/Ice/FacetMap.rb +1 -1
  216. data/lib/Ice/Identity.rb +1 -1
  217. data/lib/Ice/ImplicitContext.rb +1 -1
  218. data/lib/Ice/ImplicitContextF.rb +1 -1
  219. data/lib/Ice/Instrumentation.rb +1 -1
  220. data/lib/Ice/InstrumentationF.rb +1 -1
  221. data/lib/Ice/LocalException.rb +1 -1
  222. data/lib/Ice/Locator.rb +1 -1
  223. data/lib/Ice/LocatorF.rb +1 -1
  224. data/lib/Ice/Logger.rb +1 -1
  225. data/lib/Ice/LoggerF.rb +1 -1
  226. data/lib/Ice/Metrics.rb +1 -1
  227. data/lib/Ice/ObjectAdapter.rb +1 -1
  228. data/lib/Ice/ObjectAdapterF.rb +1 -1
  229. data/lib/Ice/ObjectFactory.rb +1 -1
  230. data/lib/Ice/Plugin.rb +1 -1
  231. data/lib/Ice/PluginF.rb +1 -1
  232. data/lib/Ice/Process.rb +1 -1
  233. data/lib/Ice/ProcessF.rb +1 -1
  234. data/lib/Ice/Properties.rb +1 -1
  235. data/lib/Ice/PropertiesAdmin.rb +1 -1
  236. data/lib/Ice/PropertiesF.rb +1 -1
  237. data/lib/Ice/RemoteLogger.rb +1 -1
  238. data/lib/Ice/Router.rb +1 -1
  239. data/lib/Ice/RouterF.rb +1 -1
  240. data/lib/Ice/ServantLocator.rb +1 -1
  241. data/lib/Ice/ServantLocatorF.rb +1 -1
  242. data/lib/Ice/SliceChecksumDict.rb +1 -1
  243. data/lib/Ice/ValueFactory.rb +1 -1
  244. data/lib/Ice/Version.rb +1 -1
  245. data/lib/IceBox/IceBox.rb +1 -1
  246. data/lib/IceGrid/Admin.rb +1 -1
  247. data/lib/IceGrid/Descriptor.rb +1 -1
  248. data/lib/IceGrid/Exception.rb +1 -1
  249. data/lib/IceGrid/FileParser.rb +1 -1
  250. data/lib/IceGrid/PluginFacade.rb +1 -1
  251. data/lib/IceGrid/Registry.rb +1 -1
  252. data/lib/IceGrid/Session.rb +1 -1
  253. data/lib/IceGrid/UserAccountMapper.rb +1 -1
  254. data/lib/IcePatch2/FileInfo.rb +1 -1
  255. data/lib/IcePatch2/FileServer.rb +1 -1
  256. data/lib/IceStorm/IceStorm.rb +1 -1
  257. data/lib/IceStorm/Metrics.rb +1 -1
  258. data/slice/Glacier2/Metrics.ice +1 -1
  259. data/slice/Ice/Communicator.ice +57 -25
  260. data/slice/Ice/Connection.ice +14 -14
  261. data/slice/Ice/Current.ice +1 -1
  262. data/slice/Ice/Endpoint.ice +6 -6
  263. data/slice/Ice/EndpointF.ice +1 -1
  264. data/slice/Ice/FacetMap.ice +1 -1
  265. data/slice/Ice/ImplicitContext.ice +6 -6
  266. data/slice/Ice/Instrumentation.ice +6 -6
  267. data/slice/Ice/Logger.ice +6 -6
  268. data/slice/Ice/Metrics.ice +12 -9
  269. data/slice/Ice/ObjectAdapter.ice +43 -31
  270. data/slice/Ice/ObjectFactory.ice +1 -1
  271. data/slice/Ice/Plugin.ice +2 -2
  272. data/slice/Ice/Properties.ice +10 -10
  273. data/slice/Ice/ServantLocator.ice +4 -2
  274. data/slice/Ice/ValueFactory.ice +3 -3
  275. data/slice/IceBT/EndpointInfo.ice +1 -1
  276. data/slice/IceGrid/PluginFacade.ice +4 -4
  277. data/slice/IceIAP/ConnectionInfo.ice +1 -1
  278. data/slice/IceIAP/EndpointInfo.ice +1 -1
  279. data/slice/IceSSL/ConnectionInfo.ice +3 -2
  280. data/slice/IceSSL/ConnectionInfoF.ice +1 -1
  281. data/slice/IceSSL/EndpointInfo.ice +1 -1
  282. data/slice/IceStorm/Metrics.ice +1 -1
  283. metadata +5 -3
@@ -120,7 +120,8 @@ checkTrustResult(SecTrustRef trust,
120
120
  //
121
121
  if(engine->getCheckCertName() && !host.empty())
122
122
  {
123
- UniqueRef<SecPolicyRef> policy(SecPolicyCreateSSL(false, toCFString(host)));
123
+ UniqueRef<CFStringRef> hostref(toCFString(host));
124
+ UniqueRef<SecPolicyRef> policy(SecPolicyCreateSSL(false, hostref.get()));
124
125
  UniqueRef<CFArrayRef> policies;
125
126
  if((err = SecTrustCopyPolicies(trust, &policies.get())))
126
127
  {
@@ -212,8 +213,10 @@ IceSSL::SecureTransport::TransceiverI::initialize(IceInternal::Buffer& readBuffe
212
213
  //
213
214
  if(_delegate->getNativeInfo()->fd() != INVALID_SOCKET)
214
215
  {
215
- _maxSendPacketSize = std::max(512, IceInternal::getSendBufferSize(_delegate->getNativeInfo()->fd()));
216
- _maxRecvPacketSize = std::max(512, IceInternal::getRecvBufferSize(_delegate->getNativeInfo()->fd()));
216
+ _maxSendPacketSize =
217
+ static_cast<size_t>(std::max(512, IceInternal::getSendBufferSize(_delegate->getNativeInfo()->fd())));
218
+ _maxRecvPacketSize =
219
+ static_cast<size_t>(std::max(512, IceInternal::getRecvBufferSize(_delegate->getNativeInfo()->fd())));
217
220
  }
218
221
  else
219
222
  {
@@ -239,6 +242,18 @@ IceSSL::SecureTransport::TransceiverI::initialize(IceInternal::Buffer& readBuffe
239
242
  throw SecurityException(__FILE__, __LINE__, "IceSSL: setting SSL connection failed\n" +
240
243
  sslErrorToString(err));
241
244
  }
245
+
246
+ //
247
+ // Enable SNI
248
+ //
249
+ if(!_incoming && _engine->getServerNameIndication() && !_host.empty() && !IceInternal::isIpAddress(_host))
250
+ {
251
+ if((err = SSLSetPeerDomainName(_ssl.get(), _host.data(), _host.length())))
252
+ {
253
+ throw SecurityException(__FILE__, __LINE__, "IceSSL: setting SNI host failed `" + _host + "'\n" +
254
+ sslErrorToString(err));
255
+ }
256
+ }
242
257
  }
243
258
 
244
259
  SSLSessionState state;
@@ -289,7 +304,7 @@ IceSSL::SecureTransport::TransceiverI::initialize(IceInternal::Buffer& readBuffe
289
304
  throw ProtocolException(__FILE__, __LINE__, os.str());
290
305
  }
291
306
 
292
- for(int i = 0, count = SecTrustGetCertificateCount(_trust.get()); i < count; ++i)
307
+ for(CFIndex i = 0, count = SecTrustGetCertificateCount(_trust.get()); i < count; ++i)
293
308
  {
294
309
  SecCertificateRef cert = SecTrustGetCertificateAtIndex(_trust.get(), i);
295
310
  CFRetain(cert);
@@ -583,7 +598,7 @@ IceSSL::SecureTransport::TransceiverI::writeRaw(const char* data, size_t* length
583
598
  IceInternal::SocketOperation op = _delegate->write(buf);
584
599
  if(op == IceInternal::SocketOperationWrite)
585
600
  {
586
- *length = buf.i - buf.b.begin();
601
+ *length = static_cast<size_t>(buf.i - buf.b.begin());
587
602
  _tflags |= SSLWantWrite;
588
603
  return errSSLWouldBlock;
589
604
  }
@@ -616,7 +631,7 @@ IceSSL::SecureTransport::TransceiverI::readRaw(char* data, size_t* length) const
616
631
  IceInternal::SocketOperation op = _delegate->read(buf);
617
632
  if(op == IceInternal::SocketOperationRead)
618
633
  {
619
- *length = buf.i - buf.b.begin();
634
+ *length = static_cast<size_t>(buf.i - buf.b.begin());
620
635
  _tflags |= SSLWantRead;
621
636
  return errSSLWouldBlock;
622
637
  }
@@ -36,12 +36,13 @@ readCertFile(const string& file)
36
36
  }
37
37
 
38
38
  is.seekg(0, is.end);
39
- size_t size = is.tellg();
39
+ size_t size = static_cast<size_t>(is.tellg());
40
40
  is.seekg(0, is.beg);
41
41
 
42
- UniqueRef<CFMutableDataRef> data(CFDataCreateMutable(kCFAllocatorDefault, size));
43
- CFDataSetLength(data.get(), size);
44
- is.read(reinterpret_cast<char*>(CFDataGetMutableBytePtr(data.get())), size);
42
+ UniqueRef<CFMutableDataRef> data(CFDataCreateMutable(kCFAllocatorDefault, static_cast<CFIndex>(size)));
43
+ CFDataSetLength(data.get(), static_cast<CFIndex>(size));
44
+ is.read(reinterpret_cast<char*>(CFDataGetMutableBytePtr(data.get())),
45
+ static_cast<streamsize>(size));
45
46
  if(!is.good())
46
47
  {
47
48
  throw CertificateReadException(__FILE__, __LINE__, "error reading file " + file);
@@ -112,7 +113,7 @@ isCA(SecCertificateRef cert)
112
113
  if(property)
113
114
  {
114
115
  CFArrayRef propertyValues = static_cast<CFArrayRef>(CFDictionaryGetValue(property.get(), kSecPropertyKeyValue));
115
- for(int i = 0, size = CFArrayGetCount(propertyValues); i < size; ++i)
116
+ for(CFIndex i = 0, size = CFArrayGetCount(propertyValues); i < size; ++i)
116
117
  {
117
118
  CFDictionaryRef dict = static_cast<CFDictionaryRef>(CFArrayGetValueAtIndex(propertyValues, i));
118
119
  CFStringRef label = static_cast<CFStringRef>(CFDictionaryGetValue(dict, kSecPropertyKeyLabel));
@@ -243,7 +244,7 @@ openKeychain(const std::string& path, const std::string& keychainPassword)
243
244
  if(err == noErr)
244
245
  {
245
246
  const char* pass = keychainPassword.empty() ? 0 : keychainPassword.c_str();
246
- if((err = SecKeychainUnlock(keychain.get(), keychainPassword.size(), pass, pass != 0)))
247
+ if((err = SecKeychainUnlock(keychain.get(), static_cast<UInt32>(keychainPassword.size()), pass, pass != 0)))
247
248
  {
248
249
  throw PluginInitializationException(__FILE__, __LINE__,
249
250
  "IceSSL: unable to unlock keychain:\n" + sslErrorToString(err));
@@ -253,7 +254,8 @@ openKeychain(const std::string& path, const std::string& keychainPassword)
253
254
  {
254
255
  const char* pass = keychainPassword.empty() ? 0 : keychainPassword.c_str();
255
256
  keychain.reset(0);
256
- if((err = SecKeychainCreate(keychainPath.c_str(), keychainPassword.size(), pass, pass == 0, 0, &keychain.get())))
257
+ if((err = SecKeychainCreate(keychainPath.c_str(),
258
+ static_cast<UInt32>(keychainPassword.size()), pass, pass == 0, 0, &keychain.get())))
257
259
  {
258
260
  throw PluginInitializationException(__FILE__, __LINE__,
259
261
  "IceSSL: unable to create keychain:\n" + sslErrorToString(err));
@@ -354,9 +356,9 @@ loadPrivateKey(const string& file, SecCertificateRef cert, SecKeychainRef keycha
354
356
  // private key into the keychain and add the certificate.
355
357
  //
356
358
  UniqueRef<CFArrayRef> items(loadKeychainItems(file, kSecItemTypePrivateKey, keychain, password, prompt, retryMax));
357
- int count = CFArrayGetCount(items.get());
359
+ CFIndex count = CFArrayGetCount(items.get());
358
360
  UniqueRef<SecKeyRef> key;
359
- for(int i = 0; i < count; ++i)
361
+ for(CFIndex i = 0; i < count; ++i)
360
362
  {
361
363
  SecKeychainItemRef itemRef =
362
364
  static_cast<SecKeychainItemRef>(const_cast<void*>(CFArrayGetValueAtIndex(items.get(), 0)));
@@ -405,7 +407,7 @@ loadPrivateKey(const string& file, SecCertificateRef cert, SecKeychainRef keycha
405
407
  SecKeychainAttribute attr;
406
408
  attr.tag = kSecKeyLabel;
407
409
  attr.data = const_cast<UInt8*>(CFDataGetBytePtr(hash.get()));
408
- attr.length = CFDataGetLength(hash.get());
410
+ attr.length = static_cast<UInt32>(CFDataGetLength(hash.get()));
409
411
  attributes.push_back(attr);
410
412
  }
411
413
 
@@ -421,13 +423,13 @@ loadPrivateKey(const string& file, SecCertificateRef cert, SecKeychainRef keycha
421
423
  SecKeychainAttribute attr;
422
424
  attr.tag = kSecKeyPrintName;
423
425
  attr.data = const_cast<char*>(label.c_str());
424
- attr.length = label.size();
426
+ attr.length = static_cast<UInt32>(label.size());
425
427
  attributes.push_back(attr);
426
428
  }
427
429
 
428
430
  SecKeychainAttributeList attrs;
429
431
  attrs.attr = &attributes[0];
430
- attrs.count = attributes.size();
432
+ attrs.count = static_cast<UInt32>(attributes.size());
431
433
  SecKeychainItemModifyAttributesAndData(reinterpret_cast<SecKeychainItemRef>(key.get()), &attrs, 0, 0);
432
434
 
433
435
  UniqueRef<SecIdentityRef> identity;
@@ -485,7 +487,8 @@ loadCerts(const string& file)
485
487
  }
486
488
 
487
489
  vector<unsigned char> data(IceInternal::Base64::decode(string(&buffer[startpos], size)));
488
- UniqueRef<CFDataRef> certdata(CFDataCreate(kCFAllocatorDefault, &data[0], data.size()));
490
+ UniqueRef<CFDataRef> certdata(CFDataCreate(kCFAllocatorDefault, &data[0],
491
+ static_cast<CFIndex>(data.size())));
489
492
  UniqueRef<SecCertificateRef> cert(SecCertificateCreateWithData(0, certdata.get()));
490
493
  if(!cert)
491
494
  {
@@ -637,7 +640,7 @@ IceSSL::SecureTransport::loadCACertificates(const string& file)
637
640
  #else
638
641
  UniqueRef<CFArrayRef> items(loadKeychainItems(file, kSecItemTypeCertificate, 0, "", 0, 0));
639
642
  UniqueRef<CFArrayRef> certificateAuthorities(CFArrayCreateMutable(kCFAllocatorDefault, 0, &kCFTypeArrayCallBacks));
640
- int count = CFArrayGetCount(items.get());
643
+ CFIndex count = CFArrayGetCount(items.get());
641
644
  for(CFIndex i = 0; i < count; ++i)
642
645
  {
643
646
  SecCertificateRef cert =
@@ -760,7 +763,7 @@ IceSSL::SecureTransport::findCertificateChain(const std::string& keychainPath,
760
763
  {
761
764
  throw PluginInitializationException(__FILE__, __LINE__, "IceSSL: invalid value `" + value + "'");
762
765
  }
763
- UniqueRef<CFDataRef> v(CFDataCreate(kCFAllocatorDefault, &buffer[0], buffer.size()));
766
+ UniqueRef<CFDataRef> v(CFDataCreate(kCFAllocatorDefault, &buffer[0], static_cast<CFIndex>(buffer.size())));
764
767
  CFDictionarySetValue(query.get(), field == "SUBJECTKEYID" ? kSecAttrSubjectKeyID : kSecAttrSerialNumber,
765
768
  v.get());
766
769
  valid = true;
@@ -800,7 +803,7 @@ IceSSL::SecureTransport::findCertificateChain(const std::string& keychainPath,
800
803
  "IceSSL: error evaluating trust:\n" + sslErrorToString(err));
801
804
  }
802
805
 
803
- int chainLength = SecTrustGetCertificateCount(trust.get());
806
+ CFIndex chainLength = SecTrustGetCertificateCount(trust.get());
804
807
  UniqueRef<CFArrayRef> items(CFArrayCreateMutable(kCFAllocatorDefault, chainLength, &kCFTypeArrayCallBacks));
805
808
  for(int i = 0; i < chainLength; ++i)
806
809
  {
@@ -20,6 +20,12 @@
20
20
 
21
21
  #include <fstream>
22
22
 
23
+ #ifdef __IBMCPP__
24
+ // Work-around for xlC visibility bug
25
+ // See "ifstream::tellg visibility error" thread on IBM xlC forum
26
+ extern template class std::fpos<char*>;
27
+ #endif
28
+
23
29
  using namespace std;
24
30
  using namespace Ice;
25
31
  using namespace IceInternal;
@@ -36,8 +42,8 @@ IceSSL::fromCFString(CFStringRef v)
36
42
  {
37
43
  CFIndex size = CFStringGetMaximumSizeForEncoding(CFStringGetLength(v), kCFStringEncodingUTF8);
38
44
  vector<char> buffer;
39
- buffer.resize(size + 1);
40
- CFStringGetCString(v, &buffer[0], buffer.size(), kCFStringEncodingUTF8);
45
+ buffer.resize(static_cast<size_t>(size + 1));
46
+ CFStringGetCString(v, &buffer[0], static_cast<CFIndex>(buffer.size()), kCFStringEncodingUTF8);
41
47
  s.assign(&buffer[0]);
42
48
  }
43
49
  return s;
@@ -118,12 +124,12 @@ IceSSL::readFile(const string& file, vector<char>& buffer)
118
124
  }
119
125
 
120
126
  is.seekg(0, is.end);
121
- buffer.resize(static_cast<int>(is.tellg()));
127
+ buffer.resize(static_cast<size_t>(is.tellg()));
122
128
  is.seekg(0, is.beg);
123
129
 
124
130
  if(!buffer.empty())
125
131
  {
126
- is.read(&buffer[0], buffer.size());
132
+ is.read(&buffer[0], static_cast<streamsize>(buffer.size()));
127
133
  if(!is.good())
128
134
  {
129
135
  throw CertificateReadException(__FILE__, __LINE__, "error reading file " + file);
@@ -134,7 +140,7 @@ IceSSL::readFile(const string& file, vector<char>& buffer)
134
140
  bool
135
141
  IceSSL::checkPath(const string& path, const string& defaultDir, bool dir, string& resolved)
136
142
  {
137
- #if defined(ICE_USE_SECURE_TRANSPORT_IOS)
143
+ #if defined(ICE_USE_SECURE_TRANSPORT_IOS) || defined(ICE_SWIFT)
138
144
  CFBundleRef bundle = CFBundleGetMainBundle();
139
145
  if(bundle)
140
146
  {
@@ -379,7 +379,7 @@ IceUtilInternal::rmdir(const string& path)
379
379
  int
380
380
  IceUtilInternal::mkdir(const string& path, int perm)
381
381
  {
382
- return ::mkdir(path.c_str(), perm);
382
+ return ::mkdir(path.c_str(), static_cast<mode_t>(perm));
383
383
  }
384
384
 
385
385
  FILE*
@@ -431,7 +431,7 @@ IceUtilInternal::Options::split(const string& line)
431
431
  j < i + 3 && j < l.size() && octalDigits.find_first_of(c = l[j]) != string::npos;
432
432
  ++j)
433
433
  {
434
- us = us * 8 + c - '0';
434
+ us = us * 8 + static_cast<unsigned short>(c - '0');
435
435
  }
436
436
  i = j - 1;
437
437
  arg.push_back(static_cast<char>(us));
@@ -529,7 +529,7 @@ IceUtilInternal::Options::split(const string& line)
529
529
  }
530
530
  default:
531
531
  {
532
- assert(!"Impossible parse state");
532
+ assert(false); // Impossible parse state
533
533
  break;
534
534
  }
535
535
  }
@@ -559,7 +559,7 @@ IceUtilInternal::Options::split(const string& line)
559
559
  }
560
560
  default:
561
561
  {
562
- assert(!"Impossible parse state");
562
+ assert(false); // Impossible parse state
563
563
  break;
564
564
  }
565
565
  }
@@ -235,33 +235,43 @@ IceUtilInternal::OutputBase::operator!() const
235
235
  // Output
236
236
  // ----------------------------------------------------------------------
237
237
 
238
- IceUtilInternal::Output::Output() :
238
+ IceUtilInternal::Output::Output(bool breakBeforeBlock, bool shortEmptyBlock) :
239
239
  OutputBase(),
240
240
  _blockStart("{"),
241
241
  _blockEnd("}"),
242
- _par(-1)
242
+ _par(-1),
243
+ _breakBeforeBlock(breakBeforeBlock),
244
+ _shortEmptyBlock(shortEmptyBlock),
245
+ _emptyBlock(false)
243
246
  {
244
247
  }
245
248
 
246
- IceUtilInternal::Output::Output(ostream& os) :
249
+ IceUtilInternal::Output::Output(ostream& os, bool breakBeforeBlock, bool shortEmptyBlock) :
247
250
  OutputBase(os),
248
251
  _blockStart("{"),
249
252
  _blockEnd("}"),
250
- _par(-1)
253
+ _par(-1),
254
+ _breakBeforeBlock(breakBeforeBlock),
255
+ _shortEmptyBlock(shortEmptyBlock),
256
+ _emptyBlock(false)
251
257
  {
252
258
  }
253
259
 
254
- IceUtilInternal::Output::Output(const char* s) :
260
+ IceUtilInternal::Output::Output(const char* s, bool breakBeforeBlock, bool shortEmptyBlock) :
255
261
  OutputBase(s),
256
262
  _blockStart("{"),
257
263
  _blockEnd("}"),
258
- _par(-1)
264
+ _par(-1),
265
+ _breakBeforeBlock(breakBeforeBlock),
266
+ _shortEmptyBlock(shortEmptyBlock),
267
+ _emptyBlock(false)
259
268
  {
260
269
  }
261
270
 
262
271
  void
263
272
  IceUtilInternal::Output::print(const string& s)
264
273
  {
274
+ _emptyBlock = false;
265
275
  if(_par >= 0)
266
276
  {
267
277
  if(++_par > 1) // No comma for the first parameter.
@@ -277,22 +287,41 @@ IceUtilInternal::Output::sb()
277
287
  {
278
288
  if(_blockStart.length())
279
289
  {
280
- newline();
290
+ if(_breakBeforeBlock)
291
+ {
292
+ newline();
293
+ }
294
+ else
295
+ {
296
+ _out << ' ';
297
+ }
281
298
  _out << _blockStart;
282
299
  }
283
300
  ++_pos;
284
301
  inc();
285
302
  _separator = false;
303
+ _emptyBlock = true;
286
304
  }
287
305
 
288
306
  void
289
307
  IceUtilInternal::Output::eb()
290
308
  {
291
309
  dec();
292
- if(_blockEnd.length())
310
+ if(_emptyBlock && _shortEmptyBlock)
311
+ {
312
+ if(_blockEnd.length())
313
+ {
314
+ _separator = true;
315
+ _out << _blockEnd;
316
+ }
317
+ }
318
+ else
293
319
  {
294
- newline();
295
- _out << _blockEnd;
320
+ if(_blockEnd.length())
321
+ {
322
+ newline();
323
+ _out << _blockEnd;
324
+ }
296
325
  }
297
326
  --_pos;
298
327
  }
@@ -300,6 +329,7 @@ IceUtilInternal::Output::eb()
300
329
  void
301
330
  IceUtilInternal::Output::spar(char c)
302
331
  {
332
+ _emptyBlock = false;
303
333
  _out << c;
304
334
  _par = 0;
305
335
  }
@@ -147,7 +147,7 @@ IceUtilInternal::generateRandom(char* buffer, size_t size)
147
147
  }
148
148
  else
149
149
  {
150
- index += bytesRead;
150
+ index += static_cast<size_t>(bytesRead);
151
151
  reads++;
152
152
  }
153
153
  }
@@ -174,7 +174,7 @@ IceUtilInternal::random(int limit)
174
174
  #endif
175
175
  if(limit > 0)
176
176
  {
177
- r = r % limit;
177
+ r = r % static_cast<unsigned int>(limit);
178
178
  }
179
179
  return r;
180
180
  }
@@ -92,7 +92,7 @@ public:
92
92
  do
93
93
  {
94
94
  assert(factor <= 4);
95
- const size_t chunkSize = std::max<size_t>((sourceEnd - sourceStart) * factor, 4);
95
+ const size_t chunkSize = std::max<size_t>(static_cast<size_t>(sourceEnd - sourceStart) * factor, 4);
96
96
  ++factor; // at the next round, we'll allocate more bytes per remaining source character
97
97
 
98
98
  targetStart = reinterpret_cast<char*>(buffer.getMoreBytes(chunkSize, reinterpret_cast<Byte*>(targetNext)));
@@ -145,7 +145,7 @@ public:
145
145
 
146
146
  virtual void fromUTF8(const Byte* sourceStart, const Byte* sourceEnd, wstring& target) const
147
147
  {
148
- const size_t sourceSize = sourceEnd - sourceStart;
148
+ const size_t sourceSize = static_cast<size_t>(sourceEnd - sourceStart);
149
149
 
150
150
  if(sourceSize == 0)
151
151
  {
@@ -173,7 +173,7 @@ public:
173
173
  throw IllegalConversionException(__FILE__, __LINE__, "codecvt.in failure");
174
174
  }
175
175
 
176
- target.resize(targetNext - targetStart);
176
+ target.resize(static_cast<size_t>(targetNext - targetStart));
177
177
  }
178
178
  }
179
179
 
@@ -275,7 +275,7 @@ public:
275
275
  size_t bytesUsed = 0;
276
276
  if(firstUnused != 0)
277
277
  {
278
- bytesUsed = firstUnused - reinterpret_cast<const Byte*>(_buffer.data());
278
+ bytesUsed = static_cast<size_t>(firstUnused - reinterpret_cast<const Byte*>(_buffer.data()));
279
279
  }
280
280
 
281
281
  if(_buffer.size() < howMany + bytesUsed)
@@ -289,7 +289,7 @@ public:
289
289
  void swap(string& other, const Byte* tail)
290
290
  {
291
291
  assert(tail >= reinterpret_cast<const Byte*>(_buffer.data()));
292
- _buffer.resize(tail - reinterpret_cast<const Byte*>(_buffer.data()));
292
+ _buffer.resize(static_cast<size_t>(tail - reinterpret_cast<const Byte*>(_buffer.data())));
293
293
  other.swap(_buffer);
294
294
  }
295
295
 
@@ -22,11 +22,11 @@ toHexDigit(Byte b)
22
22
  assert(b < 16);
23
23
  if(b < 10)
24
24
  {
25
- return '0' + b;
25
+ return static_cast<char>('0' + b);
26
26
  }
27
27
  else
28
28
  {
29
- return 'a' - 10 + b;
29
+ return static_cast<char>('a' - 10 + b);
30
30
  }
31
31
  }
32
32
 
@@ -289,7 +289,7 @@ checkChar(const string& s, string::size_type pos)
289
289
  ostr << " has invalid ordinal value " << static_cast<int>(c);
290
290
  throw IllegalArgumentException(__FILE__, __LINE__, ostr.str());
291
291
  }
292
- return c;
292
+ return static_cast<char>(c);
293
293
  }
294
294
 
295
295
  //