zeroc-ice 3.8.0 → 3.8.2

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 (169) hide show
  1. checksums.yaml +4 -4
  2. data/dist/IceRuby/Operation.cpp +22 -6
  3. data/dist/IceRuby/Slice.cpp +1 -1
  4. data/dist/ice/cpp/include/Ice/Communicator.h +4 -4
  5. data/dist/ice/cpp/include/Ice/Config.h +2 -2
  6. data/dist/ice/cpp/include/Ice/Connection.h +3 -3
  7. data/dist/ice/cpp/include/Ice/Endpoint.h +2 -2
  8. data/dist/ice/cpp/include/Ice/Exception.h +1 -1
  9. data/dist/ice/cpp/include/Ice/Initialize.h +1 -1
  10. data/dist/ice/cpp/include/Ice/LocalExceptions.h +22 -1
  11. data/dist/ice/cpp/include/Ice/Logger.h +3 -3
  12. data/dist/ice/cpp/include/Ice/NativePropertiesAdmin.h +2 -0
  13. data/dist/ice/cpp/include/Ice/ObjectAdapter.h +3 -3
  14. data/dist/ice/cpp/include/Ice/ObserverHelper.h +1 -0
  15. data/dist/ice/cpp/include/Ice/OutputStream.h +27 -5
  16. data/dist/ice/cpp/include/Ice/Properties.h +3 -3
  17. data/dist/ice/cpp/include/Ice/Proxy.h +1 -1
  18. data/dist/ice/cpp/include/Ice/SSL/ClientAuthenticationOptions.h +10 -2
  19. data/dist/ice/cpp/include/Ice/SSL/ServerAuthenticationOptions.h +10 -2
  20. data/dist/ice/cpp/include/generated/Ice/BuiltinSequences.h +2 -2
  21. data/dist/ice/cpp/include/generated/Ice/Context.h +2 -2
  22. data/dist/ice/cpp/include/generated/Ice/EndpointTypes.h +2 -2
  23. data/dist/ice/cpp/include/generated/Ice/Identity.h +2 -2
  24. data/dist/ice/cpp/include/generated/Ice/Locator.h +9 -11
  25. data/dist/ice/cpp/include/generated/Ice/LocatorRegistry.h +2 -2
  26. data/dist/ice/cpp/include/generated/Ice/Metrics.h +7 -7
  27. data/dist/ice/cpp/include/generated/Ice/OperationMode.h +2 -2
  28. data/dist/ice/cpp/include/generated/Ice/Process.h +2 -2
  29. data/dist/ice/cpp/include/generated/Ice/PropertiesAdmin.h +2 -2
  30. data/dist/ice/cpp/include/generated/Ice/PropertyDict.h +2 -2
  31. data/dist/ice/cpp/include/generated/Ice/RemoteLogger.h +2 -2
  32. data/dist/ice/cpp/include/generated/Ice/ReplyStatus.h +8 -4
  33. data/dist/ice/cpp/include/generated/Ice/Router.h +7 -7
  34. data/dist/ice/cpp/include/generated/Ice/SliceChecksumDict.h +2 -2
  35. data/dist/ice/cpp/include/generated/Ice/Version.h +2 -2
  36. data/dist/ice/cpp/include/generated/IceDiscovery/Lookup.h +2 -2
  37. data/dist/ice/cpp/include/generated/IceLocatorDiscovery/Lookup.h +2 -2
  38. data/dist/ice/cpp/src/Ice/CollocatedRequestHandler.cpp +5 -3
  39. data/dist/ice/cpp/src/Ice/ConnectionFactory.h +8 -8
  40. data/dist/ice/cpp/src/Ice/ConnectionI.cpp +28 -11
  41. data/dist/ice/cpp/src/Ice/ConnectionI.h +1 -1
  42. data/dist/ice/cpp/src/Ice/Demangle.cpp +1 -0
  43. data/dist/ice/cpp/src/Ice/FileUtil.cpp +3 -67
  44. data/dist/ice/cpp/src/Ice/FileUtil.h +0 -3
  45. data/dist/ice/cpp/src/Ice/IPEndpointI.cpp +4 -0
  46. data/dist/ice/cpp/src/Ice/IncomingRequest.cpp +1 -1
  47. data/dist/ice/cpp/src/Ice/InputStream.cpp +28 -17
  48. data/dist/ice/cpp/src/Ice/LocalException.cpp +1 -1
  49. data/dist/ice/cpp/src/Ice/LocalExceptions.cpp +6 -0
  50. data/dist/ice/cpp/src/Ice/OutgoingAsync.cpp +1 -1
  51. data/dist/ice/cpp/src/Ice/OutgoingResponse.cpp +127 -127
  52. data/dist/ice/cpp/src/Ice/OutgoingResponseInternal.h +21 -0
  53. data/dist/ice/cpp/src/Ice/OutputStream.cpp +80 -115
  54. data/dist/ice/cpp/src/Ice/PropertyNames.cpp +3 -2
  55. data/dist/ice/cpp/src/Ice/ProxyFunctions.cpp +4 -4
  56. data/dist/ice/cpp/src/Ice/Reference.cpp +15 -15
  57. data/dist/ice/cpp/src/Ice/ReferenceFactory.cpp +16 -13
  58. data/dist/ice/cpp/src/Ice/ResourceConfig.h +2 -2
  59. data/dist/ice/cpp/src/Ice/SSL/OpenSSLEngine.cpp +29 -20
  60. data/dist/ice/cpp/src/Ice/SSL/OpenSSLEngine.h +1 -2
  61. data/dist/ice/cpp/src/Ice/SSL/OpenSSLTransceiverI.cpp +14 -3
  62. data/dist/ice/cpp/src/Ice/SSL/RFC2253.cpp +3 -3
  63. data/dist/ice/cpp/src/Ice/SSL/SSLEndpointI.cpp +1 -1
  64. data/dist/ice/cpp/src/Ice/SSL/SSLEngine.h +4 -10
  65. data/dist/ice/cpp/src/Ice/SSL/SSLUtil.cpp +21 -2
  66. data/dist/ice/cpp/src/Ice/SSL/SSLUtil.h +15 -1
  67. data/dist/ice/cpp/src/Ice/SSL/SchannelEngine.cpp +67 -48
  68. data/dist/ice/cpp/src/Ice/SSL/SchannelEngine.h +1 -5
  69. data/dist/ice/cpp/src/Ice/SSL/SchannelTransceiverI.cpp +14 -2
  70. data/dist/ice/cpp/src/Ice/SSL/SecureTransportEngine.cpp +111 -15
  71. data/dist/ice/cpp/src/Ice/SSL/SecureTransportEngine.h +7 -2
  72. data/dist/ice/cpp/src/Ice/SSL/SecureTransportTransceiverI.h +1 -1
  73. data/dist/ice/cpp/src/Ice/SSL/SecureTransportUtil.cpp +3 -16
  74. data/dist/ice/cpp/src/Ice/SSL/TrustManager.cpp +12 -1
  75. data/dist/ice/cpp/src/Ice/ServantManager.h +1 -1
  76. data/dist/ice/cpp/src/Ice/StringConverter.cpp +4 -0
  77. data/dist/ice/cpp/src/Ice/TcpEndpointI.cpp +2 -2
  78. data/dist/ice/cpp/src/Ice/UdpEndpointI.cpp +2 -2
  79. data/dist/ice/cpp/src/Ice/WSAcceptor.cpp +8 -3
  80. data/dist/ice/cpp/src/Ice/WSAcceptor.h +5 -1
  81. data/dist/ice/cpp/src/Ice/WSEndpoint.cpp +45 -2
  82. data/dist/ice/cpp/src/Ice/WSTransceiver.cpp +118 -7
  83. data/dist/ice/cpp/src/Ice/WSTransceiver.h +12 -1
  84. data/dist/ice/cpp/src/Ice/generated/BuiltinSequences.cpp +2 -2
  85. data/dist/ice/cpp/src/Ice/generated/Context.cpp +2 -2
  86. data/dist/ice/cpp/src/Ice/generated/EndpointTypes.cpp +2 -2
  87. data/dist/ice/cpp/src/Ice/generated/Identity.cpp +2 -2
  88. data/dist/ice/cpp/src/Ice/generated/Locator.cpp +2 -2
  89. data/dist/ice/cpp/src/Ice/generated/LocatorRegistry.cpp +2 -2
  90. data/dist/ice/cpp/src/Ice/generated/Metrics.cpp +2 -2
  91. data/dist/ice/cpp/src/Ice/generated/OperationMode.cpp +2 -2
  92. data/dist/ice/cpp/src/Ice/generated/Process.cpp +2 -2
  93. data/dist/ice/cpp/src/Ice/generated/PropertiesAdmin.cpp +2 -2
  94. data/dist/ice/cpp/src/Ice/generated/PropertyDict.cpp +2 -2
  95. data/dist/ice/cpp/src/Ice/generated/RemoteLogger.cpp +2 -2
  96. data/dist/ice/cpp/src/Ice/generated/ReplyStatus.cpp +4 -2
  97. data/dist/ice/cpp/src/Ice/generated/Router.cpp +2 -2
  98. data/dist/ice/cpp/src/Ice/generated/SliceChecksumDict.cpp +2 -2
  99. data/dist/ice/cpp/src/Ice/generated/Version.cpp +2 -2
  100. data/dist/ice/cpp/src/IceDiscovery/LocatorI.cpp +2 -2
  101. data/dist/ice/cpp/src/IceDiscovery/LookupI.cpp +4 -3
  102. data/dist/ice/cpp/src/IceDiscovery/LookupI.h +2 -1
  103. data/dist/ice/cpp/src/IceDiscovery/generated/Lookup.cpp +2 -2
  104. data/dist/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +6 -18
  105. data/dist/ice/cpp/src/IceLocatorDiscovery/generated/Lookup.cpp +2 -2
  106. data/dist/ice/cpp/src/Slice/DocCommentParser.cpp +6 -6
  107. data/dist/ice/cpp/src/Slice/DocCommentParser.h +4 -2
  108. data/dist/ice/cpp/src/Slice/FileTracker.h +1 -0
  109. data/dist/ice/cpp/src/Slice/Grammar.cpp +261 -264
  110. data/dist/ice/cpp/src/Slice/MetadataValidation.cpp +39 -7
  111. data/dist/ice/cpp/src/Slice/MetadataValidation.h +3 -2
  112. data/dist/ice/cpp/src/Slice/Parser.cpp +192 -155
  113. data/dist/ice/cpp/src/Slice/Parser.h +44 -9
  114. data/dist/ice/cpp/src/Slice/Preprocessor.cpp +76 -20
  115. data/dist/ice/cpp/src/Slice/Preprocessor.h +0 -1
  116. data/dist/ice/cpp/src/Slice/Scanner.cpp +1 -1
  117. data/dist/ice/cpp/src/Slice/SliceUtil.cpp +44 -58
  118. data/dist/ice/cpp/src/Slice/StringLiteralUtil.cpp +3 -10
  119. data/dist/ice/cpp/src/Slice/Util.h +7 -3
  120. data/dist/ice/cpp/src/slice2rb/Main.cpp +2 -2
  121. data/dist/ice/cpp/src/slice2rb/Ruby.cpp +1 -1
  122. data/dist/ice/cpp/src/slice2rb/RubyUtil.cpp +10 -8
  123. data/dist/ice/cpp/src/slice2rb/RubyUtil.h +10 -13
  124. data/dist/ice/mcpp/directive.c +5 -2
  125. data/dist/ice/mcpp/mcpp_main.c +1 -1
  126. data/dist/ice/mcpp/support.c +6 -6
  127. data/dist/ice/mcpp/system.c +5 -5
  128. data/dist/ice/slice/Ice/Identity.ice +3 -0
  129. data/dist/ice/slice/Ice/Locator.ice +6 -5
  130. data/dist/ice/slice/Ice/LocatorRegistry.ice +3 -0
  131. data/dist/ice/slice/Ice/Metrics.ice +1 -1
  132. data/dist/ice/slice/Ice/OperationMode.ice +8 -0
  133. data/dist/ice/slice/Ice/Process.ice +3 -0
  134. data/dist/ice/slice/Ice/ReplyStatus.ice +13 -0
  135. data/dist/lib/Glacier2/Metrics.rb +1 -1
  136. data/dist/lib/Glacier2/PermissionsVerifier.rb +3 -3
  137. data/dist/lib/Glacier2/Router.rb +8 -8
  138. data/dist/lib/Glacier2/SSLInfo.rb +1 -1
  139. data/dist/lib/Glacier2/Session.rb +15 -15
  140. data/dist/lib/Ice/BuiltinSequences.rb +1 -1
  141. data/dist/lib/Ice/Context.rb +1 -1
  142. data/dist/lib/Ice/EndpointTypes.rb +1 -1
  143. data/dist/lib/Ice/Identity.rb +1 -1
  144. data/dist/lib/Ice/LocalExceptions.rb +3 -0
  145. data/dist/lib/Ice/Locator.rb +5 -5
  146. data/dist/lib/Ice/LocatorRegistry.rb +4 -4
  147. data/dist/lib/Ice/Metrics.rb +7 -7
  148. data/dist/lib/Ice/OperationMode.rb +1 -1
  149. data/dist/lib/Ice/Process.rb +3 -3
  150. data/dist/lib/Ice/PropertiesAdmin.rb +4 -4
  151. data/dist/lib/Ice/PropertyDict.rb +1 -1
  152. data/dist/lib/Ice/ProxyFunctions.rb +8 -4
  153. data/dist/lib/Ice/RemoteLogger.rb +6 -6
  154. data/dist/lib/Ice/ReplyStatus.rb +3 -2
  155. data/dist/lib/Ice/Router.rb +5 -5
  156. data/dist/lib/Ice/SliceChecksumDict.rb +1 -1
  157. data/dist/lib/Ice/Version.rb +1 -1
  158. data/dist/lib/IceBox/ServiceManager.rb +8 -8
  159. data/dist/lib/IceGrid/Admin.rb +83 -83
  160. data/dist/lib/IceGrid/Descriptor.rb +1 -1
  161. data/dist/lib/IceGrid/Exception.rb +1 -1
  162. data/dist/lib/IceGrid/FileParser.rb +2 -2
  163. data/dist/lib/IceGrid/Registry.rb +13 -13
  164. data/dist/lib/IceGrid/Session.rb +6 -6
  165. data/dist/lib/IceGrid/UserAccountMapper.rb +2 -2
  166. data/dist/lib/IceStorm/IceStorm.rb +16 -16
  167. data/dist/lib/IceStorm/Metrics.rb +1 -1
  168. data/ice.gemspec +1 -1
  169. metadata +2 -1
@@ -1,6 +1,6 @@
1
1
  // Copyright (c) ZeroC, Inc.
2
2
 
3
- // slice2cpp version 3.8.0
3
+ // slice2cpp version 3.8.2
4
4
  // <auto-generated>Generated from Slice file 'Metrics.ice'.</auto-generated>
5
5
  // clang-format off
6
6
 
@@ -18,7 +18,7 @@
18
18
  # if ICE_INT_VERSION % 100 >= 50
19
19
  # error Beta header file detected
20
20
  # endif
21
- # if ICE_INT_VERSION % 100 < 0
21
+ # if ICE_INT_VERSION % 100 < 2
22
22
  # error Ice patch level mismatch!
23
23
  # endif
24
24
  #endif
@@ -217,7 +217,7 @@ namespace IceMX
217
217
  /// @param[out] timestamp The local time of the process when the metrics objects were retrieved.
218
218
  /// @param context The request context.
219
219
  /// @return The metrics view data, a dictionary of metric maps for each metrics class configured with the view.
220
- /// The @p timestamp allows the client to compute averages which are not dependent of the invocation latency for
220
+ /// The `timestamp` allows the client to compute averages which are not dependent on the invocation latency for
221
221
  /// this operation.
222
222
  /// @throws IceMX::UnknownMetricsView Thrown when the metrics view cannot be found.
223
223
  MetricsView getMetricsView(std::string_view view, std::int64_t& timestamp, const Ice::Context& context = Ice::noExplicitContext) const;
@@ -227,7 +227,7 @@ namespace IceMX
227
227
  /// @param context The request context.
228
228
  /// @return A future that becomes available when the invocation completes. This future holds:
229
229
  /// - `returnValue` The metrics view data, a dictionary of metric maps for each metrics class configured with the view.
230
- /// The @p timestamp allows the client to compute averages which are not dependent of the invocation latency for
230
+ /// The `timestamp` allows the client to compute averages which are not dependent on the invocation latency for
231
231
  /// this operation.
232
232
  /// - `timestamp` The local time of the process when the metrics objects were retrieved.
233
233
  [[nodiscard]] std::future<std::tuple<MetricsView, std::int64_t>> getMetricsViewAsync(std::string_view view, const Ice::Context& context = Ice::noExplicitContext) const;
@@ -236,7 +236,7 @@ namespace IceMX
236
236
  /// @param view The name of the metrics view.
237
237
  /// @param response The response callback. It accepts:
238
238
  /// - `returnValue` The metrics view data, a dictionary of metric maps for each metrics class configured with the view.
239
- /// The @p timestamp allows the client to compute averages which are not dependent of the invocation latency for
239
+ /// The `timestamp` allows the client to compute averages which are not dependent on the invocation latency for
240
240
  /// this operation.
241
241
  /// - `timestamp` The local time of the process when the metrics objects were retrieved.
242
242
  /// @param exception The exception callback.
@@ -929,7 +929,7 @@ namespace IceMX
929
929
  /// @param[out] timestamp The local time of the process when the metrics objects were retrieved.
930
930
  /// @param current The Current object of the incoming request.
931
931
  /// @return The metrics view data, a dictionary of metric maps for each metrics class configured with the view.
932
- /// The @p timestamp allows the client to compute averages which are not dependent of the invocation latency for
932
+ /// The `timestamp` allows the client to compute averages which are not dependent on the invocation latency for
933
933
  /// this operation.
934
934
  /// @throws IceMX::UnknownMetricsView Thrown when the metrics view cannot be found.
935
935
  virtual MetricsView getMetricsView(std::string view, std::int64_t& timestamp, const Ice::Current& current) = 0;
@@ -1027,7 +1027,7 @@ namespace IceMX
1027
1027
  /// @param view The name of the metrics view.
1028
1028
  /// @param response The response callback. It accepts:
1029
1029
  /// - `returnValue` The metrics view data, a dictionary of metric maps for each metrics class configured with the view.
1030
- /// The @p timestamp allows the client to compute averages which are not dependent of the invocation latency for
1030
+ /// The `timestamp` allows the client to compute averages which are not dependent on the invocation latency for
1031
1031
  /// this operation.
1032
1032
  /// - `timestamp` The local time of the process when the metrics objects were retrieved.
1033
1033
  /// @param exception The exception callback.
@@ -1,6 +1,6 @@
1
1
  // Copyright (c) ZeroC, Inc.
2
2
 
3
- // slice2cpp version 3.8.0
3
+ // slice2cpp version 3.8.2
4
4
  // <auto-generated>Generated from Slice file 'OperationMode.ice'.</auto-generated>
5
5
  // clang-format off
6
6
 
@@ -18,7 +18,7 @@
18
18
  # if ICE_INT_VERSION % 100 >= 50
19
19
  # error Beta header file detected
20
20
  # endif
21
- # if ICE_INT_VERSION % 100 < 0
21
+ # if ICE_INT_VERSION % 100 < 2
22
22
  # error Ice patch level mismatch!
23
23
  # endif
24
24
  #endif
@@ -1,6 +1,6 @@
1
1
  // Copyright (c) ZeroC, Inc.
2
2
 
3
- // slice2cpp version 3.8.0
3
+ // slice2cpp version 3.8.2
4
4
  // <auto-generated>Generated from Slice file 'Process.ice'.</auto-generated>
5
5
  // clang-format off
6
6
 
@@ -18,7 +18,7 @@
18
18
  # if ICE_INT_VERSION % 100 >= 50
19
19
  # error Beta header file detected
20
20
  # endif
21
- # if ICE_INT_VERSION % 100 < 0
21
+ # if ICE_INT_VERSION % 100 < 2
22
22
  # error Ice patch level mismatch!
23
23
  # endif
24
24
  #endif
@@ -1,6 +1,6 @@
1
1
  // Copyright (c) ZeroC, Inc.
2
2
 
3
- // slice2cpp version 3.8.0
3
+ // slice2cpp version 3.8.2
4
4
  // <auto-generated>Generated from Slice file 'PropertiesAdmin.ice'.</auto-generated>
5
5
  // clang-format off
6
6
 
@@ -18,7 +18,7 @@
18
18
  # if ICE_INT_VERSION % 100 >= 50
19
19
  # error Beta header file detected
20
20
  # endif
21
- # if ICE_INT_VERSION % 100 < 0
21
+ # if ICE_INT_VERSION % 100 < 2
22
22
  # error Ice patch level mismatch!
23
23
  # endif
24
24
  #endif
@@ -1,6 +1,6 @@
1
1
  // Copyright (c) ZeroC, Inc.
2
2
 
3
- // slice2cpp version 3.8.0
3
+ // slice2cpp version 3.8.2
4
4
  // <auto-generated>Generated from Slice file 'PropertyDict.ice'.</auto-generated>
5
5
  // clang-format off
6
6
 
@@ -19,7 +19,7 @@
19
19
  # if ICE_INT_VERSION % 100 >= 50
20
20
  # error Beta header file detected
21
21
  # endif
22
- # if ICE_INT_VERSION % 100 < 0
22
+ # if ICE_INT_VERSION % 100 < 2
23
23
  # error Ice patch level mismatch!
24
24
  # endif
25
25
  #endif
@@ -1,6 +1,6 @@
1
1
  // Copyright (c) ZeroC, Inc.
2
2
 
3
- // slice2cpp version 3.8.0
3
+ // slice2cpp version 3.8.2
4
4
  // <auto-generated>Generated from Slice file 'RemoteLogger.ice'.</auto-generated>
5
5
  // clang-format off
6
6
 
@@ -19,7 +19,7 @@
19
19
  # if ICE_INT_VERSION % 100 >= 50
20
20
  # error Beta header file detected
21
21
  # endif
22
- # if ICE_INT_VERSION % 100 < 0
22
+ # if ICE_INT_VERSION % 100 < 2
23
23
  # error Ice patch level mismatch!
24
24
  # endif
25
25
  #endif
@@ -1,6 +1,6 @@
1
1
  // Copyright (c) ZeroC, Inc.
2
2
 
3
- // slice2cpp version 3.8.0
3
+ // slice2cpp version 3.8.2
4
4
  // <auto-generated>Generated from Slice file 'ReplyStatus.ice'.</auto-generated>
5
5
  // clang-format off
6
6
 
@@ -18,7 +18,7 @@
18
18
  # if ICE_INT_VERSION % 100 >= 50
19
19
  # error Beta header file detected
20
20
  # endif
21
- # if ICE_INT_VERSION % 100 < 0
21
+ # if ICE_INT_VERSION % 100 < 2
22
22
  # error Ice patch level mismatch!
23
23
  # endif
24
24
  #endif
@@ -63,7 +63,11 @@ namespace Ice
63
63
  InvalidData = 8,
64
64
 
65
65
  /// The caller is not authorized to access the requested resource.
66
- Unauthorized = 9
66
+ Unauthorized = 9,
67
+
68
+ /// The dispatch failed because the request requires a feature that the server or the target servant does not
69
+ /// support.
70
+ NotSupported = 10
67
71
  };
68
72
 
69
73
  /// Outputs the enumerator name or underlying value of a ReplyStatus to a stream.
@@ -81,7 +85,7 @@ namespace Ice
81
85
  {
82
86
  static constexpr StreamHelperCategory helper = StreamHelperCategoryEnum;
83
87
  static constexpr int minValue = 0;
84
- static constexpr int maxValue = 9;
88
+ static constexpr int maxValue = 10;
85
89
  static constexpr int minWireSize = 1;
86
90
  static constexpr bool fixedLength = false;
87
91
  };
@@ -1,6 +1,6 @@
1
1
  // Copyright (c) ZeroC, Inc.
2
2
 
3
- // slice2cpp version 3.8.0
3
+ // slice2cpp version 3.8.2
4
4
  // <auto-generated>Generated from Slice file 'Router.ice'.</auto-generated>
5
5
  // clang-format off
6
6
 
@@ -18,7 +18,7 @@
18
18
  # if ICE_INT_VERSION % 100 >= 50
19
19
  # error Beta header file detected
20
20
  # endif
21
- # if ICE_INT_VERSION % 100 < 0
21
+ # if ICE_INT_VERSION % 100 < 2
22
22
  # error Ice patch level mismatch!
23
23
  # endif
24
24
  #endif
@@ -83,7 +83,7 @@ namespace Ice
83
83
  /// router. If a null proxy is returned, the client will forward requests to the router's endpoints.
84
84
  /// @param[out] hasRoutingTable Indicates whether or not the router supports a routing table. If `true`, the Ice
85
85
  /// runtime will call ::Ice::RouterPrx::addProxies to populate the routing table. The Ice runtime assumes the router has
86
- /// a routing table when @p hasRoutingTable is not set.
86
+ /// a routing table when `hasRoutingTable` is not set.
87
87
  /// @param context The request context.
88
88
  /// @return The router's client proxy.
89
89
  /// @remarks Introduced in Ice 3.7.
@@ -96,7 +96,7 @@ namespace Ice
96
96
  /// - `returnValue` The router's client proxy.
97
97
  /// - `hasRoutingTable` Indicates whether or not the router supports a routing table. If `true`, the Ice
98
98
  /// runtime will call ::Ice::RouterPrx::addProxies to populate the routing table. The Ice runtime assumes the router has
99
- /// a routing table when @p hasRoutingTable is not set.
99
+ /// a routing table when `hasRoutingTable` is not set.
100
100
  /// @remarks Introduced in Ice 3.7.
101
101
  [[nodiscard]] std::future<std::tuple<std::optional<Ice::ObjectPrx>, std::optional<bool>>> getClientProxyAsync(const Ice::Context& context = Ice::noExplicitContext) const;
102
102
 
@@ -106,7 +106,7 @@ namespace Ice
106
106
  /// - `returnValue` The router's client proxy.
107
107
  /// - `hasRoutingTable` Indicates whether or not the router supports a routing table. If `true`, the Ice
108
108
  /// runtime will call ::Ice::RouterPrx::addProxies to populate the routing table. The Ice runtime assumes the router has
109
- /// a routing table when @p hasRoutingTable is not set.
109
+ /// a routing table when `hasRoutingTable` is not set.
110
110
  /// @param exception The exception callback.
111
111
  /// @param sent The sent callback.
112
112
  /// @param context The request context.
@@ -307,7 +307,7 @@ namespace Ice
307
307
  /// router. If a null proxy is returned, the client will forward requests to the router's endpoints.
308
308
  /// @param[out] hasRoutingTable Indicates whether or not the router supports a routing table. If `true`, the Ice
309
309
  /// runtime will call ::Ice::RouterPrx::addProxies to populate the routing table. The Ice runtime assumes the router has
310
- /// a routing table when @p hasRoutingTable is not set.
310
+ /// a routing table when `hasRoutingTable` is not set.
311
311
  /// @param current The Current object of the incoming request.
312
312
  /// @return The router's client proxy.
313
313
  /// @remarks Introduced in Ice 3.7.
@@ -409,7 +409,7 @@ namespace Ice
409
409
  /// - `returnValue` The router's client proxy.
410
410
  /// - `hasRoutingTable` Indicates whether or not the router supports a routing table. If `true`, the Ice
411
411
  /// runtime will call ::Ice::RouterPrx::addProxies to populate the routing table. The Ice runtime assumes the router has
412
- /// a routing table when @p hasRoutingTable is not set.
412
+ /// a routing table when `hasRoutingTable` is not set.
413
413
  /// @param exception The exception callback.
414
414
  /// @param current The Current object of the incoming request.
415
415
  /// @remarks Introduced in Ice 3.7.
@@ -1,6 +1,6 @@
1
1
  // Copyright (c) ZeroC, Inc.
2
2
 
3
- // slice2cpp version 3.8.0
3
+ // slice2cpp version 3.8.2
4
4
  // <auto-generated>Generated from Slice file 'SliceChecksumDict.ice'.</auto-generated>
5
5
  // clang-format off
6
6
 
@@ -17,7 +17,7 @@
17
17
  # if ICE_INT_VERSION % 100 >= 50
18
18
  # error Beta header file detected
19
19
  # endif
20
- # if ICE_INT_VERSION % 100 < 0
20
+ # if ICE_INT_VERSION % 100 < 2
21
21
  # error Ice patch level mismatch!
22
22
  # endif
23
23
  #endif
@@ -1,6 +1,6 @@
1
1
  // Copyright (c) ZeroC, Inc.
2
2
 
3
- // slice2cpp version 3.8.0
3
+ // slice2cpp version 3.8.2
4
4
  // <auto-generated>Generated from Slice file 'Version.ice'.</auto-generated>
5
5
  // clang-format off
6
6
 
@@ -20,7 +20,7 @@
20
20
  # if ICE_INT_VERSION % 100 >= 50
21
21
  # error Beta header file detected
22
22
  # endif
23
- # if ICE_INT_VERSION % 100 < 0
23
+ # if ICE_INT_VERSION % 100 < 2
24
24
  # error Ice patch level mismatch!
25
25
  # endif
26
26
  #endif
@@ -1,6 +1,6 @@
1
1
  // Copyright (c) ZeroC, Inc.
2
2
 
3
- // slice2cpp version 3.8.0
3
+ // slice2cpp version 3.8.2
4
4
  // <auto-generated>Generated from Slice file 'Lookup.ice'.</auto-generated>
5
5
  // clang-format off
6
6
 
@@ -18,7 +18,7 @@
18
18
  # if ICE_INT_VERSION % 100 >= 50
19
19
  # error Beta header file detected
20
20
  # endif
21
- # if ICE_INT_VERSION % 100 < 0
21
+ # if ICE_INT_VERSION % 100 < 2
22
22
  # error Ice patch level mismatch!
23
23
  # endif
24
24
  #endif
@@ -1,6 +1,6 @@
1
1
  // Copyright (c) ZeroC, Inc.
2
2
 
3
- // slice2cpp version 3.8.0
3
+ // slice2cpp version 3.8.2
4
4
  // <auto-generated>Generated from Slice file 'Lookup.ice'.</auto-generated>
5
5
  // clang-format off
6
6
 
@@ -18,7 +18,7 @@
18
18
  # if ICE_INT_VERSION % 100 >= 50
19
19
  # error Beta header file detected
20
20
  # endif
21
- # if ICE_INT_VERSION % 100 < 0
21
+ # if ICE_INT_VERSION % 100 < 2
22
22
  # error Ice patch level mismatch!
23
23
  # endif
24
24
  #endif
@@ -107,13 +107,15 @@ CollocatedRequestHandler::invokeAsyncRequest(OutgoingAsyncBase* outAsync, int ba
107
107
  //
108
108
  outAsync->cancelable(shared_from_this());
109
109
 
110
+ auto outAsyncPtr = outAsync->shared_from_this();
111
+
110
112
  if (_response)
111
113
  {
112
114
  requestId = ++_requestId;
113
- _asyncRequests.insert(make_pair(requestId, outAsync->shared_from_this()));
115
+ _asyncRequests.insert(make_pair(requestId, outAsyncPtr));
114
116
  }
115
117
 
116
- _sendAsyncRequests.insert(make_pair(outAsync->shared_from_this(), requestId));
118
+ _sendAsyncRequests.insert(make_pair(outAsyncPtr, requestId));
117
119
  }
118
120
 
119
121
  OutputStream* os = outAsync->getOs();
@@ -348,7 +350,7 @@ CollocatedRequestHandler::sendResponse(OutgoingResponse response)
348
350
  is.swap(*q->second->getIs());
349
351
  if (q->second->response())
350
352
  {
351
- outAsync = q->second;
353
+ outAsync = std::move(q->second);
352
354
  }
353
355
  _asyncRequests.erase(q);
354
356
  }
@@ -88,11 +88,11 @@ namespace IceInternal
88
88
  std::function<void(Ice::ConnectionIPtr, bool)>,
89
89
  std::function<void(std::exception_ptr)>);
90
90
 
91
- virtual void connectionStartCompleted(const Ice::ConnectionIPtr&);
92
- virtual void connectionStartFailed(const Ice::ConnectionIPtr&, std::exception_ptr);
91
+ void connectionStartCompleted(const Ice::ConnectionIPtr&);
92
+ void connectionStartFailed(const Ice::ConnectionIPtr&, std::exception_ptr);
93
93
 
94
- virtual void connectors(const std::vector<ConnectorPtr>&);
95
- virtual void exception(std::exception_ptr);
94
+ void connectors(const std::vector<ConnectorPtr>&);
95
+ void exception(std::exception_ptr);
96
96
 
97
97
  void getConnectors();
98
98
  void nextEndpoint();
@@ -193,8 +193,8 @@ namespace IceInternal
193
193
  //
194
194
 
195
195
  #if defined(ICE_USE_IOCP)
196
- virtual bool startAsync(SocketOperation);
197
- virtual bool finishAsync(SocketOperation);
196
+ bool startAsync(SocketOperation) final;
197
+ bool finishAsync(SocketOperation) final;
198
198
  #endif
199
199
 
200
200
  void message(ThreadPoolCurrent&) override;
@@ -205,8 +205,8 @@ namespace IceInternal
205
205
  [[nodiscard]] std::string toString() const override;
206
206
  NativeInfoPtr getNativeInfo() override;
207
207
 
208
- virtual void connectionStartCompleted(const Ice::ConnectionIPtr&);
209
- virtual void connectionStartFailed(const Ice::ConnectionIPtr&, std::exception_ptr);
208
+ void connectionStartCompleted(const Ice::ConnectionIPtr&);
209
+ void connectionStartFailed(const Ice::ConnectionIPtr&, std::exception_ptr);
210
210
  void initialize();
211
211
  ~IncomingConnectionFactory() override;
212
212
 
@@ -12,7 +12,8 @@
12
12
  #include "Ice/Properties.h"
13
13
  #include "IdleTimeoutTransceiverDecorator.h"
14
14
  #include "Instance.h"
15
- #include "ObjectAdapterI.h" // For getThreadPool()
15
+ #include "ObjectAdapterI.h" // For getThreadPool()
16
+ #include "OutgoingResponseInternal.h"
16
17
  #include "ReferenceFactory.h" // For createProxy().
17
18
  #include "RequestHandler.h" // For RetryException
18
19
  #include "ThreadPool.h"
@@ -118,7 +119,7 @@ namespace
118
119
  string createBadMagicMessage(const byte m[])
119
120
  {
120
121
  ostringstream os;
121
- os << "bag magic in message header: ";
122
+ os << "bad magic in message header: ";
122
123
  for (size_t i = 0; i < sizeof(magic); ++i)
123
124
  {
124
125
  os << hex << setw(2) << setfill('0') << static_cast<int>(m[i]) << ' ';
@@ -1012,7 +1013,7 @@ Ice::ConnectionI::setAdapter(const ObjectAdapterPtr& adapter)
1012
1013
  {
1013
1014
  // Go through the adapter to set the adapter on this connection
1014
1015
  // to ensure the object adapter is still active.
1015
- dynamic_pointer_cast<ObjectAdapterI>(adapter)->setAdapterOnConnection(shared_from_this());
1016
+ static_pointer_cast<ObjectAdapterI>(adapter)->setAdapterOnConnection(shared_from_this());
1016
1017
  }
1017
1018
  else
1018
1019
  {
@@ -2717,7 +2718,7 @@ Ice::ConnectionI::sendNextMessages(vector<OutgoingMessage>& callbacks)
2717
2718
  _writeStream.swap(*message->stream);
2718
2719
  if (message->sent())
2719
2720
  {
2720
- callbacks.push_back(*message);
2721
+ callbacks.push_back(std::move(*message));
2721
2722
  }
2722
2723
  }
2723
2724
  _sendStreams.pop_front();
@@ -2850,7 +2851,7 @@ Ice::ConnectionI::sendMessage(OutgoingMessage& message)
2850
2851
  // message was queued.
2851
2852
  if (!_sendStreams.empty())
2852
2853
  {
2853
- _sendStreams.push_back(message);
2854
+ _sendStreams.push_back(std::move(message));
2854
2855
  _sendStreams.back().adopt(nullptr);
2855
2856
  return AsyncStatusQueued;
2856
2857
  }
@@ -2895,7 +2896,7 @@ Ice::ConnectionI::sendMessage(OutgoingMessage& message)
2895
2896
  return status;
2896
2897
  }
2897
2898
 
2898
- _sendStreams.push_back(message);
2899
+ _sendStreams.push_back(std::move(message));
2899
2900
  _sendStreams.back().adopt(&stream);
2900
2901
  }
2901
2902
  else
@@ -2945,7 +2946,7 @@ Ice::ConnectionI::sendMessage(OutgoingMessage& message)
2945
2946
  return status;
2946
2947
  }
2947
2948
 
2948
- _sendStreams.push_back(message);
2949
+ _sendStreams.push_back(std::move(message));
2949
2950
  _sendStreams.back().adopt(nullptr); // Adopt the stream.
2950
2951
  #ifdef ICE_HAS_BZIP2
2951
2952
  }
@@ -3254,13 +3255,28 @@ Ice::ConnectionI::parseMessage(int32_t& upcallCount, function<bool(InputStream&)
3254
3255
  stream.read(requestCount);
3255
3256
  if (requestCount < 0)
3256
3257
  {
3257
- requestCount = 0;
3258
3258
  throw MarshalException{
3259
3259
  __FILE__,
3260
3260
  __LINE__,
3261
3261
  "received batch request with " + to_string(requestCount) + " batches"};
3262
3262
  }
3263
3263
 
3264
+ // A batched request occupies at least 12 bytes on the wire (a 2-byte identity, a
3265
+ // 1-byte facet path, a 1-byte operation name, a 1-byte operation mode, a 1-byte
3266
+ // context, and a 6-byte parameters encapsulation). Reject a count larger than the
3267
+ // remaining message data could possibly hold. The message size is already capped
3268
+ // at Ice.MessageSizeMax (<= INT32_MAX bytes), so this also keeps requestCount well
3269
+ // within range when it is accumulated into the dispatch counters below.
3270
+ constexpr int32_t minBatchRequestSize = 12;
3271
+ if (requestCount > (stream.b.end() - stream.i) / minBatchRequestSize)
3272
+ {
3273
+ throw MarshalException{
3274
+ __FILE__,
3275
+ __LINE__,
3276
+ "received batch request with " + to_string(requestCount) +
3277
+ " batches, more than the message can contain"};
3278
+ }
3279
+
3264
3280
  upcall = [self = shared_from_this(), requestCount, adapter, compress](InputStream& messageStream)
3265
3281
  {
3266
3282
  self->dispatchAll(messageStream, requestCount, requestId, compress, adapter);
@@ -3298,7 +3314,7 @@ Ice::ConnectionI::parseMessage(int32_t& upcallCount, function<bool(InputStream&)
3298
3314
 
3299
3315
  if (q != _asyncRequests.end())
3300
3316
  {
3301
- auto outAsync = q->second;
3317
+ auto outAsync = std::move(q->second);
3302
3318
 
3303
3319
  if (q == _asyncRequestsHint)
3304
3320
  {
@@ -3438,9 +3454,10 @@ Ice::ConnectionI::dispatchAll(
3438
3454
  {
3439
3455
  // Received request on a connection without an object adapter.
3440
3456
  sendResponse(
3441
- makeOutgoingResponse(
3457
+ makeOutgoingResponseCore(
3442
3458
  make_exception_ptr(ObjectNotExistException{__FILE__, __LINE__}),
3443
- request.current()),
3459
+ request.current(),
3460
+ _instance.get()),
3444
3461
  0);
3445
3462
  }
3446
3463
 
@@ -72,7 +72,7 @@ namespace Ice
72
72
  public:
73
73
  std::shared_ptr<ConnectionI> shared_from_this()
74
74
  {
75
- return std::dynamic_pointer_cast<ConnectionI>(IceInternal::EventHandler::shared_from_this());
75
+ return std::static_pointer_cast<ConnectionI>(IceInternal::EventHandler::shared_from_this());
76
76
  }
77
77
 
78
78
  struct OutgoingMessage
@@ -3,6 +3,7 @@
3
3
  #include "Ice/Demangle.h"
4
4
 
5
5
  #if defined(__GNUC__) || defined(__clang__)
6
+ # include <cstdlib>
6
7
  # include <cxxabi.h>
7
8
  #endif
8
9
 
@@ -195,34 +195,6 @@ IceInternal::mkdir(const string& path, int)
195
195
  return ::_wmkdir(stringToWstring(path, Ice::getProcessStringConverter()).c_str());
196
196
  }
197
197
 
198
- FILE*
199
- IceInternal::fopen(const string& path, const string& mode)
200
- {
201
- //
202
- // Don't need to use a wide string converter, the wide strings are directly passed
203
- // to Windows API.
204
- //
205
- const Ice::StringConverterPtr converter = Ice::getProcessStringConverter();
206
- return ::_wfopen(stringToWstring(path, converter).c_str(), stringToWstring(mode, converter).c_str());
207
- }
208
-
209
- int
210
- IceInternal::open(const string& path, int flags)
211
- {
212
- //
213
- // Don't need to use a wide string converter, the wide string is directly passed
214
- // to Windows API.
215
- //
216
- if (flags & _O_CREAT)
217
- {
218
- return ::_wopen(stringToWstring(path, Ice::getProcessStringConverter()).c_str(), flags, _S_IREAD | _S_IWRITE);
219
- }
220
- else
221
- {
222
- return ::_wopen(stringToWstring(path, Ice::getProcessStringConverter()).c_str(), flags);
223
- }
224
- }
225
-
226
198
  int
227
199
  IceInternal::getcwd(string& cwd)
228
200
  {
@@ -249,16 +221,6 @@ IceInternal::unlink(const string& path)
249
221
  return _wunlink(stringToWstring(path, Ice::getProcessStringConverter()).c_str());
250
222
  }
251
223
 
252
- int
253
- IceInternal::close(int fd)
254
- {
255
- # ifdef _WIN32
256
- return _close(fd);
257
- # else
258
- return ::close(fd);
259
- # endif
260
- }
261
-
262
224
  IceInternal::FileLock::FileLock(const std::string& path) : _path(path)
263
225
  {
264
226
  //
@@ -351,26 +313,6 @@ IceInternal::mkdir(const string& path, int perm)
351
313
  return ::mkdir(path.c_str(), static_cast<mode_t>(perm));
352
314
  }
353
315
 
354
- FILE*
355
- IceInternal::fopen(const string& path, const string& mode)
356
- {
357
- return ::fopen(path.c_str(), mode.c_str());
358
- }
359
-
360
- int
361
- IceInternal::open(const string& path, int flags)
362
- {
363
- if (flags & O_CREAT)
364
- {
365
- // By default, create with rw-rw-rw- modified by the user's umask (same as fopen).
366
- return ::open(path.c_str(), flags, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
367
- }
368
- else
369
- {
370
- return ::open(path.c_str(), flags);
371
- }
372
- }
373
-
374
316
  int
375
317
  IceInternal::getcwd(string& cwd)
376
318
  {
@@ -389,15 +331,9 @@ IceInternal::unlink(const string& path)
389
331
  return ::unlink(path.c_str());
390
332
  }
391
333
 
392
- int
393
- IceInternal::close(int fd)
394
- {
395
- return ::close(fd);
396
- }
397
-
398
334
  IceInternal::FileLock::FileLock(const std::string& path) : _path(path)
399
335
  {
400
- _fd = ::open(path.c_str(), O_RDWR | O_CREAT, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP);
336
+ _fd = ::open(path.c_str(), O_RDWR | O_CREAT | O_NOFOLLOW, S_IRUSR | S_IWUSR);
401
337
  if (_fd < 0)
402
338
  {
403
339
  throw FileLockException(__FILE__, __LINE__, errno, _path);
@@ -417,7 +353,7 @@ IceInternal::FileLock::FileLock(const std::string& path) : _path(path)
417
353
  if (::fcntl(_fd, F_SETLK, &lock) == -1)
418
354
  {
419
355
  int err = errno;
420
- close(_fd);
356
+ ::close(_fd);
421
357
  throw FileLockException(__FILE__, __LINE__, err, _path);
422
358
  }
423
359
 
@@ -436,7 +372,7 @@ IceInternal::FileLock::FileLock(const std::string& path) : _path(path)
436
372
  if (write(_fd, os.str().c_str(), os.str().size()) == -1)
437
373
  {
438
374
  int err = errno;
439
- close(_fd);
375
+ ::close(_fd);
440
376
  throw FileLockException(__FILE__, __LINE__, err, _path);
441
377
  }
442
378
  }
@@ -84,13 +84,10 @@ namespace IceInternal
84
84
  ICE_API int rmdir(const std::string&);
85
85
 
86
86
  ICE_API int mkdir(const std::string&, int);
87
- ICE_API FILE* fopen(const std::string&, const std::string&);
88
87
  ICE_API FILE* freopen(const std::string&, const std::string&, FILE*);
89
- ICE_API int open(const std::string&, int);
90
88
  ICE_API int getcwd(std::string&);
91
89
 
92
90
  ICE_API int unlink(const std::string&);
93
- ICE_API int close(int);
94
91
 
95
92
  //
96
93
  // This class is used to implement process file locking. This class
@@ -419,6 +419,10 @@ IceInternal::IPEndpointI::IPEndpointI(ProtocolInstancePtr instance, InputStream*
419
419
  s->read(const_cast<string&>(_host), false);
420
420
  const_cast<string&>(_normalizedHost) = normalizeIPv6Address(_host);
421
421
  s->read(const_cast<int32_t&>(_port));
422
+ if (_port < 0 || _port > 65535)
423
+ {
424
+ throw MarshalException{__FILE__, __LINE__, "port value '" + to_string(_port) + "' is out of range"};
425
+ }
422
426
  }
423
427
 
424
428
  IceInternal::EndpointHostResolver::EndpointHostResolver(const InstancePtr& instance)