Back to Main PageBack

OpenFusion TAO Fixed Bugs

Fixed in 2.1.1.0

Bug No. Description
TAO-73 Possiable thread unsafe singleton TAO::Unknown_IDL_Type::lock_i () initialization, used with any demarshaling, moved into dynamic library loading initalization. This now happens prior to main which is single threaded.
TAO-72 tao_idl generated ValueType OBV_* classes now also generates a _copy_value method where this class is supposed to be the final "most derived" class. It is still left to the end user to provide such a method in their own most derived class when this is not the case. TAO can be built specifically to treat _copy_value as a pure or non-pure virtual function. Originally TAO treated this method as non-pure and did not require an implimentation to be provided (which is fine if the end user is not using the _copy_value funcionality in their own code, as TAO also didn't use it), however this is actually non-complient with the CORBA spec. TAO can now also be built to use the _copy_value method instead of reference counting "copying" insertions into anys; in such cases obviosuly the _copy_value method is required to be implemented. There are problems taking this general approach however, as the automatically generated _copy_value is not capable of duplicating cyclic graphs held in valuetypes, which realistially require the reference counting insertions to be utalised and/or knowledge of the actual use of the valuetype.
TAO-70 Updated tags.html to match prism_release.html concerning error/minor codes; and fixed some meaningless errno copies being thrown from the core.
TAO-69 Fixed tao_idl typecode generation for unions (in the *C.cpp files) where multiple case labels are defined for a single type. Previously although the marsheling/demarsheling code provided all of these correctly, the typecode information only provided the first case for each type. This effected the ability to extract these types from anys where the alternate cases were being used.
TAO-66 Fixed MIOP server multi-threaded notify deadlocking problem. Also deactivated eager MIOP completed message socket de-queuing.
TAO-65 Reverted the GIOP_Message_Base.cpp change for the TAO-57 MIOP Memory leak. This was ending up double deleting the Data_Block under certain circumstances.
TAO-63 Fixed MIOP server thread pool message processing serialization.
TAO-59 Fixed memory leak in MIOP server message processing.
TAO-58 Fixed older Linux problem with ‑ORBListenOnALL 1 UIPMC option not finding IP interface devices during the join. Added the new ‑ORBListenerInterface UIPMC option to provide detailed control over which IP interfaces are to be listened on for which mutlicast addresses. This works in a similar way to the existing ‑ORBPreferredInterfaces ORB_init command line option but for UDP server listeners instead of client senders. See the TAO_UIPMC_Protocol_Factory section in the docs/release/TAO/Options.html document for details.
TAO-57 Added MIOP configuration options -ORBSendThrottling and -ORBEagerDequeueing, along with #define overrides for their default settings; see descriptions in docs/release/tao/Options.html for details. Fixed possible ZIOP decompression leak.
TAO-56 Added MIOP test interacting with PICurrent/Portable_Interceptors.
TAO-55 Added MIOP test for mixed MIOP/AMI client.
TAO-54 Added MIOP test for MIOP server spawning FT upcalls.
TAO-48 Fix for the CORBA::INTERNAL exception raised by the Portable Interceptors code due to the mismatched popTSC calls. If an exception is thrown from inside the user code for the send_request_interception (which as this send was unsuccessful, there is no corresponding pushTSC), or either of the two receive_reply_interception or receive_other_interception points (which have already performed the popTSC operation), the call to the handle_any_exception or the handle_all_exeption helper functions does not now call popTSC.
TAO895 Fixed the enforcement of the ZIOP::COMPRESSION_MIN_RATIO_POLICY. All compression ratios are calculated according to the ZIOP spec as (RATIO = Compressed_length / Uncompressed_length) and so form a valid range between ("Best compression" 0.00 < ratio < 1.00 "No compression"). TAO will never send a compressed ZIOP message if it is larger than the uncompressed GIOP message in any case, but otherwise if this policy is specified, the achieved ratio MUST be smaller or equal to the policy value. The whole point of this policy is to enforce a minimum level of compression so as not to overload the server with pointless message decompression operations. (Setting a policy value of 0.3, for example, means that to send compressed messages, the individual message must be 30% or less of the size of the uncompressed message. If this policy is not specified, ANY compression, however small the effect, will be allowed.
TAO893

Added the -ORBAllowZIOPNoServerPolicies <0|1> option to the ORB. This option takes a boolean 0 (off/disable) or 1 (on/enable); if enabled, it allows a client to ZIOP compress without having any server-side ZIOP available compressor's list policies embedded in the IOR. This option allows the client to use ZIOP with MIOP and/or services configured via CORBALOCs that have no such compression list policies embedded. The client has to trust that the server is configured to match its own compressor's list policy, and compresses accordingly.

NOTE that any server that cannot decompress the client's used ZIOP compressor will reject the request as it simply cannot decode or handle it (the client-side comms will timeout or lock-up for any such incorrect two-way requests, or be oblivious to the failure with any incorrectly configured one-way requests).

The default setting is 0 (false) i.e. to disallow compression in such cases and conform to the ZIOP specification which requires the server-side policies to be published for the client-side to check; but this can be changed by adding #define TAO_ALLOW_ZIOP_NO_SERVER_POLICIES_DEFAULT true to TAO's config.h

TAO891 Added CORBALOC support to the existing -ORBPreferredInterfaces option.
TAO889 Fixed memory leak in CosPropertyService (incorrect heap allocation of CosPropertyService::MultipleExceptions in TAO_PropertySet::define_properties() should have been stack based).
TAO886 Reverted a bug fix when #define ALLOW_UNICAST_MIOP is defined to stop MIOP erroring (and issuing any diagnostics) when attempting to join a unicast address.
TAO881 Added ACE_DEBUG ((LM_ERROR)) output to (de)marshaling problems when TAO_STRICT_ENUM_MARSHALLING is defined to allow the end user to track down which enum is at fault.
TAO877 Redefined MIOP_MAX_DGRAM_SIZE to use the ACE_MAX_UDP_PACKET_SIZE definition which has been resized to 65,507 bytes. The field size sets a theoretical limit of 65,535 bytes (8 byte header + 65,527 bytes of data) for a UDP datagram. The practical limit for the data length which is imposed by the underlying IPv4 protocol, however, is 65,507 bytes (65,535 - 8 byte UDP header - 20 byte IP header).
TAO876 Added support for -ORBPreferredInterfaces to the UIPMC transport. For IPv4 traffic a local interface IP address should be specified as the mapping, e.g. -ORBPreferredInterfaces 225.*=192.168.0.2. If IPv6 support is enabled and IPv6 addresses are in use then a local interface name should be specified, e.g. -ORBPreferredInterfaces FF01:*=eth0
TAO870 (including TAO764, TAO836, TAO840) Enhanced MIOP implementation; this now supports fragmentation. See MIOP_Strategy_Factory in docs/release/TAO/Options.html for details.
TAO863 Provided Full ZIOP 1.0 support in Prismtech Distributions. ZIOP has been fully tested and will compress messages as required according to the ZIOP specification in both directions (i.e. in both the Request, Client->Server, and Reply, Server->Client directions.) Prismtech currently supports the ZLIB, BZIP2 and RLE compressors with ZIOP, the 3rd-party run-time libraries for which must be installed and made available (via LD_LIBRARY_PATH or equivalent) on the end user systems during run-time, if they are to be utilised by the user's applications.
TAO859 Implemented derived DynamicAnys: "DynValueCommon, DynValueBox and DynValue" and support their creation via CORBA::Any and CORBA::TypeCode using the DynAnyFactory. Allow these Dynamic ValueTypes to be imported from and exported to standard Anys.
TAO801 Improved the performance of the TAO_IDL compiler when processing large input files with many module re-openings. (Updated to fix an unintentional bug that was introduced causing tao_idl to possibly fail when processing multiple input idl files on the same command line.)

PrismTech TOP
Top