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
@@ -110,6 +110,10 @@ public:
110
110
 
111
111
  std::string prefix() const;
112
112
 
113
+ #ifdef ICE_SWIFT
114
+ dispatch_queue_t getDispatchQueue() const ICE_NOEXCEPT;
115
+ #endif
116
+
113
117
  private:
114
118
 
115
119
  void run(const EventHandlerThreadPtr&);
@@ -127,10 +131,14 @@ private:
127
131
  std::string nextThreadId();
128
132
 
129
133
  const InstancePtr _instance;
130
- #ifdef ICE_CPP11_MAPPING
134
+ #ifdef ICE_SWIFT
135
+ const dispatch_queue_t _dispatchQueue;
136
+ #else // Ice for Swift does not support a dispatcher
137
+ # ifdef ICE_CPP11_MAPPING
131
138
  std::function<void(std::function<void()>, const std::shared_ptr<Ice::Connection>&)> _dispatcher;
132
- #else
139
+ # else
133
140
  const Ice::DispatcherPtr _dispatcher;
141
+ # endif
134
142
  #endif
135
143
  ThreadPoolWorkQueuePtr _workQueue;
136
144
  bool _destroyed;
@@ -242,6 +242,16 @@ Timer::run()
242
242
  {
243
243
  consoleErr << "IceUtil::Timer::run(): uncaught exception" << endl;
244
244
  }
245
+
246
+ if(token.delay == IceUtil::Time())
247
+ {
248
+ //
249
+ // If thisthe task is not a repeated task, clear the task reference now rather than
250
+ // in the synchronization block above. Clearing the task reference might end up
251
+ // calling user code which could trigger a deadlock. See also issue #352.
252
+ //
253
+ token.task = ICE_NULLPTR;
254
+ }
245
255
  }
246
256
  }
247
257
  }
@@ -214,7 +214,17 @@ IceInternal::UdpEndpointI::options() const
214
214
 
215
215
  if(_mcastInterface.length() > 0)
216
216
  {
217
- s << " --interface " << _mcastInterface;
217
+ s << " --interface ";
218
+ bool addQuote = _mcastInterface.find(':') != string::npos;
219
+ if(addQuote)
220
+ {
221
+ s << "\"";
222
+ }
223
+ s << _mcastInterface;
224
+ if(addQuote)
225
+ {
226
+ s << "\"";
227
+ }
218
228
  }
219
229
 
220
230
  if(_mcastTtl != -1)
@@ -259,13 +259,21 @@ IceInternal::UdpTransceiver::read(Buffer& buf)
259
259
  assert(buf.i == buf.b.begin());
260
260
  assert(_fd != INVALID_SOCKET);
261
261
 
262
- const int packetSize = min(_maxPacketSize, _rcvSize - _udpOverhead);
262
+ #ifdef _WIN32
263
+ int packetSize = min(_maxPacketSize, _rcvSize - _udpOverhead);
264
+ #else
265
+ const size_t packetSize = static_cast<size_t>(min(_maxPacketSize, _rcvSize - _udpOverhead));
266
+ #endif
263
267
  buf.b.resize(packetSize);
264
268
  buf.i = buf.b.begin();
265
269
 
266
270
  repeat:
267
271
 
272
+ #ifdef _WIN32
273
+ int ret;
274
+ #else
268
275
  ssize_t ret;
276
+ #endif
269
277
  if(_state == StateConnected)
270
278
  {
271
279
  ret = ::recv(_fd, reinterpret_cast<char*>(&buf.b[0]), packetSize, 0);
@@ -341,7 +349,7 @@ repeat:
341
349
  }
342
350
  }
343
351
 
344
- buf.b.resize(ret);
352
+ buf.b.resize(static_cast<size_t>(ret));
345
353
  buf.i = buf.b.end();
346
354
  return SocketOperationNone;
347
355
  #endif
@@ -2,7 +2,7 @@
2
2
  // Copyright (c) ZeroC, Inc. All rights reserved.
3
3
  //
4
4
  //
5
- // Ice version 3.7.2
5
+ // Ice version 3.7.3
6
6
  //
7
7
  // <auto-generated>
8
8
  //
@@ -34,10 +34,10 @@
34
34
  # if ICE_INT_VERSION / 100 != 307
35
35
  # error Ice version mismatch!
36
36
  # endif
37
- # if ICE_INT_VERSION % 100 > 50
37
+ # if ICE_INT_VERSION % 100 >= 50
38
38
  # error Beta header file detected
39
39
  # endif
40
- # if ICE_INT_VERSION % 100 < 2
40
+ # if ICE_INT_VERSION % 100 < 3
41
41
  # error Ice patch level mismatch!
42
42
  # endif
43
43
  #endif
@@ -2,7 +2,7 @@
2
2
  // Copyright (c) ZeroC, Inc. All rights reserved.
3
3
  //
4
4
  //
5
- // Ice version 3.7.2
5
+ // Ice version 3.7.3
6
6
  //
7
7
  // <auto-generated>
8
8
  //
@@ -34,10 +34,10 @@
34
34
  # if ICE_INT_VERSION / 100 != 307
35
35
  # error Ice version mismatch!
36
36
  # endif
37
- # if ICE_INT_VERSION % 100 > 50
37
+ # if ICE_INT_VERSION % 100 >= 50
38
38
  # error Beta header file detected
39
39
  # endif
40
- # if ICE_INT_VERSION % 100 < 2
40
+ # if ICE_INT_VERSION % 100 < 3
41
41
  # error Ice patch level mismatch!
42
42
  # endif
43
43
  #endif
@@ -588,11 +588,11 @@ IceInternal::WSTransceiver::read(Buffer& buf)
588
588
  // no more than the payload length. The remaining of the buffer will be
589
589
  // sent over in another frame.
590
590
  //
591
- size_t readSz = _readPayloadLength - (buf.i - _readStart); // Already read
591
+ size_t readSz = _readPayloadLength - static_cast<size_t>(buf.i - _readStart); // Already read
592
592
  if(static_cast<size_t>(buf.b.end() - buf.i) > readSz)
593
593
  {
594
594
  size_t size = buf.b.size();
595
- buf.b.resize(buf.i - buf.b.begin() + readSz);
595
+ buf.b.resize(static_cast<size_t>(buf.i - buf.b.begin()) + readSz);
596
596
  s = _delegate->read(buf);
597
597
  buf.b.resize(size);
598
598
  }
@@ -1394,7 +1394,7 @@ IceInternal::WSTransceiver::preRead(Buffer& buf)
1394
1394
  return false;
1395
1395
  }
1396
1396
 
1397
- size_t n = min(_readBuffer.i - _readI, buf.b.end() - buf.i);
1397
+ size_t n = min(static_cast<size_t>(_readBuffer.i - _readI), static_cast<size_t>(buf.b.end() - buf.i));
1398
1398
 
1399
1399
  if(n > _readPayloadLength)
1400
1400
  {
@@ -1435,13 +1435,13 @@ IceInternal::WSTransceiver::postRead(Buffer& buf)
1435
1435
  // Unmask the data we just read.
1436
1436
  //
1437
1437
  IceInternal::Buffer::Container::iterator p = _readStart;
1438
- for(size_t n = _readStart - _readFrameStart; p < buf.i; ++p, ++n)
1438
+ for(size_t n = static_cast<size_t>(_readStart - _readFrameStart); p < buf.i; ++p, ++n)
1439
1439
  {
1440
1440
  *p ^= _readMask[n % 4];
1441
1441
  }
1442
1442
  }
1443
1443
 
1444
- _readPayloadLength -= buf.i - _readStart;
1444
+ _readPayloadLength -= static_cast<size_t>(buf.i - _readStart);
1445
1445
  _readStart = buf.i;
1446
1446
  if(_readPayloadLength == 0)
1447
1447
  {
@@ -1474,7 +1474,7 @@ IceInternal::WSTransceiver::preWrite(Buffer& buf)
1474
1474
  {
1475
1475
  prepareWriteHeader(OP_PING, 0); // Don't send any payload
1476
1476
 
1477
- _writeBuffer.b.resize(_writeBuffer.i - _writeBuffer.b.begin());
1477
+ _writeBuffer.b.resize(static_cast<size_t>(_writeBuffer.i - _writeBuffer.b.begin()));
1478
1478
  _writeState = WriteStateControlFrame;
1479
1479
  _writeBuffer.i = _writeBuffer.b.begin();
1480
1480
  }
@@ -1483,7 +1483,7 @@ IceInternal::WSTransceiver::preWrite(Buffer& buf)
1483
1483
  prepareWriteHeader(OP_PONG, _pingPayload.size());
1484
1484
  if(_pingPayload.size() > static_cast<size_t>(_writeBuffer.b.end() - _writeBuffer.i))
1485
1485
  {
1486
- size_t pos = _writeBuffer.i - _writeBuffer.b.begin();
1486
+ size_t pos = static_cast<size_t>(_writeBuffer.i - _writeBuffer.b.begin());
1487
1487
  _writeBuffer.b.resize(pos + _pingPayload.size());
1488
1488
  _writeBuffer.i = _writeBuffer.b.begin() + pos;
1489
1489
  }
@@ -1491,7 +1491,7 @@ IceInternal::WSTransceiver::preWrite(Buffer& buf)
1491
1491
  _writeBuffer.i += _pingPayload.size();
1492
1492
  _pingPayload.clear();
1493
1493
 
1494
- _writeBuffer.b.resize(_writeBuffer.i - _writeBuffer.b.begin());
1494
+ _writeBuffer.b.resize(static_cast<size_t>(_writeBuffer.i - _writeBuffer.b.begin()));
1495
1495
  _writeState = WriteStateControlFrame;
1496
1496
  _writeBuffer.i = _writeBuffer.b.begin();
1497
1497
  }
@@ -1513,7 +1513,7 @@ IceInternal::WSTransceiver::preWrite(Buffer& buf)
1513
1513
  }
1514
1514
 
1515
1515
  _writeState = WriteStateControlFrame;
1516
- _writeBuffer.b.resize(_writeBuffer.i - _writeBuffer.b.begin());
1516
+ _writeBuffer.b.resize(static_cast<size_t>(_writeBuffer.i - _writeBuffer.b.begin()));
1517
1517
  _writeBuffer.i = _writeBuffer.b.begin();
1518
1518
  }
1519
1519
  else
@@ -1543,7 +1543,7 @@ IceInternal::WSTransceiver::preWrite(Buffer& buf)
1543
1543
  _writeBuffer.i = _writeBuffer.b.begin();
1544
1544
  }
1545
1545
 
1546
- size_t n = buf.i - buf.b.begin();
1546
+ size_t n = static_cast<size_t>(buf.i - buf.b.begin());
1547
1547
  for(; n < buf.b.size() && _writeBuffer.i < _writeBuffer.b.end(); ++_writeBuffer.i, ++n)
1548
1548
  {
1549
1549
  *_writeBuffer.i = buf.b[n] ^ _writeMask[n % 4];
@@ -1551,20 +1551,21 @@ IceInternal::WSTransceiver::preWrite(Buffer& buf)
1551
1551
  _writePayloadLength = n;
1552
1552
  if(_writeBuffer.i < _writeBuffer.b.end())
1553
1553
  {
1554
- _writeBuffer.b.resize(_writeBuffer.i - _writeBuffer.b.begin());
1554
+ _writeBuffer.b.resize(static_cast<size_t>(_writeBuffer.i - _writeBuffer.b.begin()));
1555
1555
  }
1556
1556
  _writeBuffer.i = _writeBuffer.b.begin();
1557
1557
  }
1558
1558
  else if(_writePayloadLength == 0)
1559
1559
  {
1560
- size_t n = min(_writeBuffer.b.end() - _writeBuffer.i, buf.b.end() - buf.i);
1560
+ size_t n = min(static_cast<size_t>(_writeBuffer.b.end() - _writeBuffer.i),
1561
+ static_cast<size_t>(buf.b.end() - buf.i));
1561
1562
  memcpy(_writeBuffer.i, buf.i, n);
1562
1563
  _writeBuffer.i += n;
1563
1564
  buf.i += n;
1564
1565
  _writePayloadLength = n;
1565
1566
  if(_writeBuffer.i < _writeBuffer.b.end())
1566
1567
  {
1567
- _writeBuffer.b.resize(_writeBuffer.i - _writeBuffer.b.begin());
1568
+ _writeBuffer.b.resize(static_cast<size_t>(_writeBuffer.i - _writeBuffer.b.begin()));
1568
1569
  }
1569
1570
  _writeBuffer.i = _writeBuffer.b.begin();
1570
1571
  }
@@ -1670,7 +1671,7 @@ IceInternal::WSTransceiver::readBuffered(IceInternal::Buffer::Container::size_ty
1670
1671
  }
1671
1672
  else
1672
1673
  {
1673
- IceInternal::Buffer::Container::size_type available = _readBuffer.i - _readI;
1674
+ size_t available = static_cast<size_t>(_readBuffer.i - _readI);
1674
1675
  if(available < sz)
1675
1676
  {
1676
1677
  if(_readI != &_readBuffer.b[0])
@@ -1728,7 +1729,7 @@ IceInternal::WSTransceiver::prepareWriteHeader(Byte opCode, IceInternal::Buffer:
1728
1729
  // Use an extra 64 bits to encode the payload length.
1729
1730
  //
1730
1731
  *_writeBuffer.i++ = static_cast<Byte>(127);
1731
- ice_htonll(payloadLength, _writeBuffer.i);
1732
+ ice_htonll(static_cast<Long>(payloadLength), _writeBuffer.i);
1732
1733
  _writeBuffer.i += 8;
1733
1734
  }
1734
1735
 
@@ -2,7 +2,7 @@
2
2
  // Copyright (c) ZeroC, Inc. All rights reserved.
3
3
  //
4
4
  //
5
- // Ice version 3.7.2
5
+ // Ice version 3.7.3
6
6
  //
7
7
  // <auto-generated>
8
8
  //
@@ -34,10 +34,10 @@
34
34
  # if ICE_INT_VERSION / 100 != 307
35
35
  # error Ice version mismatch!
36
36
  # endif
37
- # if ICE_INT_VERSION % 100 > 50
37
+ # if ICE_INT_VERSION % 100 >= 50
38
38
  # error Beta header file detected
39
39
  # endif
40
- # if ICE_INT_VERSION % 100 < 2
40
+ # if ICE_INT_VERSION % 100 < 3
41
41
  # error Ice patch level mismatch!
42
42
  # endif
43
43
  #endif
@@ -2,7 +2,7 @@
2
2
  // Copyright (c) ZeroC, Inc. All rights reserved.
3
3
  //
4
4
  //
5
- // Ice version 3.7.2
5
+ // Ice version 3.7.3
6
6
  //
7
7
  // <auto-generated>
8
8
  //
@@ -39,10 +39,10 @@
39
39
  # if ICE_INT_VERSION / 100 != 307
40
40
  # error Ice version mismatch!
41
41
  # endif
42
- # if ICE_INT_VERSION % 100 > 50
42
+ # if ICE_INT_VERSION % 100 >= 50
43
43
  # error Beta header file detected
44
44
  # endif
45
- # if ICE_INT_VERSION % 100 < 2
45
+ # if ICE_INT_VERSION % 100 < 3
46
46
  # error Ice patch level mismatch!
47
47
  # endif
48
48
  #endif
@@ -2,7 +2,7 @@
2
2
  // Copyright (c) ZeroC, Inc. All rights reserved.
3
3
  //
4
4
  //
5
- // Ice version 3.7.2
5
+ // Ice version 3.7.3
6
6
  //
7
7
  // <auto-generated>
8
8
  //
@@ -35,10 +35,10 @@
35
35
  # if ICE_INT_VERSION / 100 != 307
36
36
  # error Ice version mismatch!
37
37
  # endif
38
- # if ICE_INT_VERSION % 100 > 50
38
+ # if ICE_INT_VERSION % 100 >= 50
39
39
  # error Beta header file detected
40
40
  # endif
41
- # if ICE_INT_VERSION % 100 < 2
41
+ # if ICE_INT_VERSION % 100 < 3
42
42
  # error Ice patch level mismatch!
43
43
  # endif
44
44
  #endif
@@ -2,7 +2,7 @@
2
2
  // Copyright (c) ZeroC, Inc. All rights reserved.
3
3
  //
4
4
  //
5
- // Ice version 3.7.2
5
+ // Ice version 3.7.3
6
6
  //
7
7
  // <auto-generated>
8
8
  //
@@ -41,10 +41,10 @@
41
41
  # if ICE_INT_VERSION / 100 != 307
42
42
  # error Ice version mismatch!
43
43
  # endif
44
- # if ICE_INT_VERSION % 100 > 50
44
+ # if ICE_INT_VERSION % 100 >= 50
45
45
  # error Beta header file detected
46
46
  # endif
47
- # if ICE_INT_VERSION % 100 < 2
47
+ # if ICE_INT_VERSION % 100 < 3
48
48
  # error Ice patch level mismatch!
49
49
  # endif
50
50
  #endif
@@ -106,9 +106,9 @@ private:
106
106
 
107
107
  LookupPrxPtr _lookup;
108
108
  vector<pair<LookupPrxPtr, LookupReplyPrxPtr> > _lookups;
109
- const IceUtil::Time _timeout;
110
- const int _retryCount;
111
- const IceUtil::Time _retryDelay;
109
+ IceUtil::Time _timeout;
110
+ int _retryCount;
111
+ IceUtil::Time _retryDelay;
112
112
  const IceUtil::TimerPtr _timer;
113
113
  const int _traceLevel;
114
114
 
@@ -119,6 +119,7 @@ private:
119
119
  Ice::LocatorPrxPtr _voidLocator;
120
120
 
121
121
  IceUtil::Time _nextRetry;
122
+ bool _pending;
122
123
  int _pendingRetryCount;
123
124
  size_t _failureCount;
124
125
  bool _warnOnce;
@@ -574,10 +575,24 @@ LocatorI::LocatorI(const string& name,
574
575
  _warned(false),
575
576
  _locator(lookup->ice_getCommunicator()->getDefaultLocator()),
576
577
  _voidLocator(voidLocator),
578
+ _pending(false),
577
579
  _pendingRetryCount(0),
578
580
  _failureCount(0),
579
581
  _warnOnce(true)
580
582
  {
583
+ if(_timeout < IceUtil::Time::milliSeconds(0))
584
+ {
585
+ _timeout = IceUtil::Time::milliSeconds(300);
586
+ }
587
+ if(_retryCount < 0)
588
+ {
589
+ _retryCount = 0;
590
+ }
591
+ if(_retryDelay < IceUtil::Time::milliSeconds(0))
592
+ {
593
+ _retryDelay = IceUtil::Time::milliSeconds(0);
594
+ }
595
+
581
596
  //
582
597
  // Create one lookup proxy per endpoint from the given proxy. We want to send a multicast
583
598
  // datagram on each endpoint.
@@ -669,7 +684,7 @@ LocatorI::getLocators(const string& instanceName, const IceUtil::Time& waitTime)
669
684
  else
670
685
  {
671
686
  Lock sync(*this);
672
- while(_locators.find(instanceName) == _locators.end() && _pendingRetryCount > 0)
687
+ while(_locators.find(instanceName) == _locators.end() && _pending)
673
688
  {
674
689
  timedWait(waitTime);
675
690
  }
@@ -725,10 +740,11 @@ LocatorI::foundLocator(const Ice::LocatorPrxPtr& locator)
725
740
  return;
726
741
  }
727
742
 
728
- if(_pendingRetryCount > 0) // No need to retry, we found a locator.
743
+ if(_pending) // No need to continue, we found a locator.
729
744
  {
730
745
  _timer->cancel(ICE_SHARED_FROM_THIS);
731
746
  _pendingRetryCount = 0;
747
+ _pending = false;
732
748
  }
733
749
 
734
750
  if(_traceLevel > 0)
@@ -821,8 +837,9 @@ LocatorI::invoke(const Ice::LocatorPrxPtr& locator, const RequestPtr& request)
821
837
  _pendingRequests.push_back(request);
822
838
  }
823
839
 
824
- if(_pendingRetryCount == 0) // No request in progress
840
+ if(!_pending) // No request in progress
825
841
  {
842
+ _pending = true;
826
843
  _failureCount = 0;
827
844
  _pendingRetryCount = _retryCount;
828
845
  try
@@ -877,6 +894,7 @@ LocatorI::invoke(const Ice::LocatorPrxPtr& locator, const RequestPtr& request)
877
894
  (*p)->invoke(_voidLocator);
878
895
  }
879
896
  _pendingRequests.clear();
897
+ _pending = false;
880
898
  _pendingRetryCount = 0;
881
899
  }
882
900
  }
@@ -887,13 +905,14 @@ void
887
905
  LocatorI::exception(const Ice::LocalException& ex)
888
906
  {
889
907
  Lock sync(*this);
890
- if(++_failureCount == _lookups.size() && _pendingRetryCount > 0)
908
+ if(++_failureCount == _lookups.size() && _pending)
891
909
  {
892
910
  //
893
911
  // All the lookup calls failed, cancel the timer and propagate the error to the requests.
894
912
  //
895
913
  _timer->cancel(ICE_SHARED_FROM_THIS);
896
914
  _pendingRetryCount = 0;
915
+ _pending = false;
897
916
 
898
917
  if(_warnOnce)
899
918
  {
@@ -932,8 +951,15 @@ void
932
951
  LocatorI::runTimerTask()
933
952
  {
934
953
  Lock sync(*this);
935
- if(--_pendingRetryCount > 0)
954
+ if(!_pending)
936
955
  {
956
+ assert(_pendingRequests.empty());
957
+ return; // The request failed
958
+ }
959
+
960
+ if(_pendingRetryCount > 0)
961
+ {
962
+ --_pendingRetryCount;
937
963
  try
938
964
  {
939
965
  if(_traceLevel > 1)
@@ -976,6 +1002,9 @@ LocatorI::runTimerTask()
976
1002
  _pendingRetryCount = 0;
977
1003
  }
978
1004
 
1005
+ assert(_pendingRetryCount == 0);
1006
+ _pending = false;
1007
+
979
1008
  if(_traceLevel > 0)
980
1009
  {
981
1010
  Ice::Trace out(_lookup->ice_getCommunicator()->getLogger(), "Lookup");