zeroc-ice 3.7.2 → 3.7.3

Sign up to get free protection for your applications and to get access to all the features.
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
  //