## 1 Orber Release Notes

### 1.1 Orber 3.2.12, Release Notes

#### 1.1.1 Improvements and new features

- Orber now check if an external IOR contains any TAG_ALTERNATE_IIOP_ADDRESS components when trying to setup a connection to another ORB.
  Own id: OTP-4294
- It is now possible to add TAG_ALTERNATE_IIOP_ADDRESS components to a local object reference. See corba:add_alternate_iiop_address/3.
  Own id: OTP-4294
- Orber now allows unions with no default value defined and a discriminator out of range to be sent via IIOP. The value-field is set to the atom undefined.
  Own id: OTP-4295
- The corba module now exports a function, print_object/1/2, which prints IOR's in a more readable form.
  Own id: OTP-4296

#### 1.1.2 Fixed bugs and malfunctions

- Since "all" ORB's accept ISO-8859-1 encoding of chars and strings, Orber assumed that it could be used at all time to reduce the overhead. The JDK-1.3 only accepts ISO 646:1991 IRV (US-ASCII), even though ISO-8859-1 is default, which is why Orber now checks which codeset is accepted.
  Own Id: OTP-4298
- When invoking a Locate Request, Orber in some cases did not reply with a Locate Reply header (used a Reply header).
  Own Id: OTP-4293

#### 1.1.3 Incompatibilities

-

#### 1.1.4 Known bugs and problems

- The same as in the last release.

### 1.2 Orber 3.2.11, Release Notes

#### 1.2.1 Improvements and new features

- If the underlying OS was not configured to allow Erlang to use the fully qualified host name the result could an incorrect IP-address. Hence, if you want to upgrade to Orber-3.2.11 and the fully qualified name must be used you must upgrade your kernel version. Most likely, this change will NOT cause any problems, but if in doubt please contact support or use the mailing-list. See also the release notes for Orber-3.2.6.
  Own id: OTP-3966

#### 1.2.2 Fixed bugs and malfunctions

- When looking up Initial Service (e.g. using `corbaloc`, `corbaname` or `corba:resolve_initial_references_remote/2`) and communicating via SSL, Orber used the wrong port number.
  Own Id: OTP-4264

#### 1.2.3 Incompatibilities

-

#### 1.2.4 Known bugs and problems

- The same as in the last release.

### 1.3 Orber 3.2.10, Release Notes

#### 1.3.1 Improvements and new features

- It is now possible to add new initial references, which can, for example, be accessed via `corba:resolve_initial_references/1` or the `corbaloc` schema.
  Own Id: OTP-4258
- The orber module now exports functions, `iiop_connections` and `iiop_connections_pending`, which, respectively, list all currently open connections to other ORB's and connections which are in process of being set up to another ORB.
  Own Id: OTP-4262
- Orber now allows the user to define an interval of ports which Orber is may use (i.e. ports on the local machine) when trying to connect to another ORB. This behavior is usefull if Orber resides behind a firewill which only allow applications to use certain ports when communicating with the outside world. If this option is set, it is absolutely necessary to set `iiop_connection_timeout`. If not, there is risk that Orber run out of ports, which will result in communicatio failure. This option cannot be used when using SSL since it does not support this feature. The default behavior is that any available port will be used (as before).
  Own Id: OTP-4260
- One can now install Orber's NameService as disc_copies, but the default behavior is that Orber uses ram_copies.
  Own Id: OTP-4259
- A pre-compiled IIOP-trace interceptor is now included in the Orber release. For more information, see the `Debugging` chapter in the User's Guide.
  Own Id: OTP-4257
- It is now possible to set Orber's configuration parameters in, for example, an Erlang shell. Consult `corba:orb_init/1` and `orber:configure/2`.
  Own Id: OTP-4261
- The Orber release now include `OrberWeb`, which is an extension of the `WebTool` application (first released in R8B). Hence, `WebTool` must be installed to enable this feature. For more information, see the chapter `OrberWeb` in the User's Guide. `OrberWeb` is intended to be used during test and development.
  Own Id: OTP-4257

#### 1.3.2 Fixed bugs and malfunctions

- When setting up two Orber ORB's, where one of the ORB's domain name was a prefix of the other ORB's, communication via IIOP would fail. To eliminate any further configuration problems, one may not use `^G` (i.e. `"\007"`) in the domain name. Due to this change it is not possible to upgrade during run-time.
  Own Id: OTP-4229
- When using a mix of IIOP-versions (1.0 vs 1.1/1.2) and sending/receiving IOR's to/from Orber could result in a MARSHAL exception.
  Own Id: OTP-4230
- Encoding/decoding of wchar/wstring when using IIOP-1.2 do now follow the OMG standard. If your ORB do not follow the standard, contact support for information how to make a work-around to solve this problem. In most cases it is sufficient to configure the ORB's to communicate via IIOP-1.1.
  Own Id: OTP-4263

#### 1.3.3 Incompatibilities

- The encoding/decoding of wchar/wstring when using IIOP-1.2 have been updated. See above.
  Own Id: OTP-4263
- Orber no longer returns a 'EXIT' message when trying to install Orber, i.e., invoking orber:install/1/2, on a disc-less node. But if if the installtion failes due to any other reason, Orber still return a 'EXIT' message.
  Own Id: OTP-4256

#### 1.3.4 Known bugs and problems

- `OrberWeb` only tested with `Netscape-4.75`. Furthermore, until `WebTool` reaches version 1.0 OrberWeb should also be considered to be a beta version.
  Own Id: OTP-4257
- `OrberWeb` do not escape arguments passed when, for example, creating a new context. Hence, for now you are recommended to only use letters.
  Own Id: OTP-4257

### 1.4 Orber 3.2.9, Release Notes

#### 1.4.1 Improvements and new features

-

#### 1.4.2 Fixed bugs and malfunctions

- External IOR:s containing unsupported or incorrectly placed TaggedComponents was corrupted when Orber forwarded the IOR via IIOP. This bug was introduced in 3.2.6.
  Own Id: OTP-4170

#### 1.4.3 Incompatibilities

-

#### 1.4.4 Known bugs and problems

-

### 1.5 Orber 3.2.8, Release Notes

#### 1.5.1 Improvements and new features

- Orber now support interceptors.
  Own Id: -

#### 1.5.2 Fixed bugs and malfunctions

-

#### 1.5.3 Incompatibilities

-

#### 1.5.4 Known bugs and problems

-

### 1.6 Orber 3.2.7, Release Notes

#### 1.6.1 Improvements and new features

- When Orber acted as server-side and communicating via IIOP the overhead was unreasonably large and memory consuming (depended on the IDL-specification). This have now been fixed and will, especially, improve the performance when invoking operations with no, or simple, arguments on a complex interface. This change will have little effect on objects started as pseudo since this problem did not affect them.
  Own Id: OTP-4063
- When Orber tried to set up a connection to another ORB which did not respond all IIOP access where blocked until the TCP protocol generated a timeout. Now only requests to that particular ORB are queued.
  Own Id: OTP-4060

#### 1.6.2 Fixed bugs and malfunctions

- It was not possible to invoke the operation CosNaming_BindingIterator:next_one via IIOP if no more bindings existed.
  Own id: OTP-4004

#### 1.6.3 Incompatibilities

-

#### 1.6.4 Known bugs and problems

-

### 1.7 Orber 3.2.6, Release Notes

#### 1.7.1 Improvements and new features

- Registering data in the IFR overhead reduced.
  Own id: OTP-3904
- The overhead for the function `is_a/1` have been reduced, which also affects remote `narrow` operations for inherited interfaces (e.g. using Java or C++ ORBs).
  Own id: OTP-3904
- If the underlying OS was not configured to allow Erlang to lookup the host-name by using the short-name the result was always the IP-adress 127.0.0.1 (loop-back). Now Orber uses the full name. Hence, make sure the `net_adm:localhost/0` and `inet:getaddr/2` return proper values.
  Own id: OTP-3966

#### 1.7.2 Fixed bugs and malfunctions

- The CONV_FRAME_CodeSetComponentInfo struct was not placed correctly in IOR:s. Each profile must be self-sustained which is why this information must be duplicated in each profile. Currently this only applies for the IIOP-profile but will also concern future protocols.
  Own id: OTP-3992

#### 1.7.3 Incompatibilities

-

#### 1.7.4 Known bugs and problems

-

### 1.8 Orber 3.2.5, Release Notes

#### 1.8.1 Improvements and new features

- Orber now defines the configuration variable, `iiop_setup_connection_timeout`, which makes it possible to timeout connection attempts to another ORB before the OS TCP timeout is activated.
  Own id: OTP-3961
- It is now possible to configure Orber to generate reports when abnormal situations occurs. For more information consult the User's Guide regarding the configuration parameter `orber_debug_level`. Note, it is not recommended to use this option for delivered systems since some of the reports is not to be considered as errors.
  Own id: OTP-3962
- Orber now accepts a list of addresses as value for the configuration parameter `orbInitRef`.
  Own id: OTP-3945
- Orber now includes services defined by the configuration parameter `orbInitRef` when invoking `corba:list_initial_services/0`.
  Own id: OTP-3946

#### 1.8.2 Fixed bugs and malfunctions

- When using the configuration variable 'orbDefaultInitRef' with a value pointing to another Orber-ORB it was not possible to install Orber since Orber used to create default `NamingContexts`. Orber no longer add these contexts.
  Own id: OTP-3943
- Orber accessed `corbaloc` addresses in reverse order. Now fixed.
  Own id: OTP-3944

#### 1.8.3 Incompatibilities

- When installing Orber no default `NamingContext's`, i.e., `host`, `hosts`, `resources`, `development`, `factories` and `workgroup`, will be added. These contexts was defined in a cancelled specification.
  Own id: OTP-3942
- `corbaloc` adrresses are now accessed in FIFO order (instead of LIFO).
  Own id: OTP-3944

#### 1.8.4 Known bugs and problems

-

### 1.9 Orber 3.2.4, Release Notes

#### 1.9.1 Improvements and new features

-

#### 1.9.2 Fixed bugs and malfunctions

- When communicating via IIOP using version 1.2 Orber used incorrect offset for reply bodies containing system exceptions, exceptions and location forward.
  Own id: OTP-3912
- Orber did not return correct IFR Id:s when raising system exceptions via IIOP.
  Own id: OTP-3911
- If two different processes concurrently manipulated a `CosNaming::NamingContext` the data could become corrupted. For single-node Orber this error occured in version 3.2.1, 3.2.2 and 3.2.3. For multi-node Orber this behaviour have been present at all time.
  Own id: OTP-3910

#### 1.9.3 Incompatibilities

- Since Orber now returns a different, and correct, IFR-id for systems exceptions other ORB:s and older versions of Orber might raise a different exception, probably MARSHAL or UNKNOWN. This only occurs when communicating via IIOP. It is not possible to upgrade during runtime. Use `orber:stop()`, load new version and restart Orber by invoking `orber:start()`.
  Own id: OTP-3911

#### 1.9.4 Known bugs and problems

-

### 1.10 Orber 3.2.3, Release Notes

#### 1.10.1 Improvements and new features

- Improved performance for all types, simple and complex, when communicating via IIOP. It is not possible to upgrade during runtime. Use `orber:stop()`, load new version and restart Orber by invoking `orber:start()`.
  Own id: OTP-3905

#### 1.10.2 Fixed bugs and malfunctions

- If a psuedo object raises an exception or exits the exception was only returned, not thrown.
  Own id: OTP-3907
- Orber defined an incorrect ID for CodeSets. This may cause INV_OBJREF or DATA_CONVERSION exceptions to be thrown, it depends on the other ORB.
  Own id: OTP-3899

#### 1.10.3 Incompatibilities

-

#### 1.10.4 Known bugs and problems

-

### 1.11 Orber 3.2.2, Release Notes

#### 1.11.1 Improvements and new features

- The behaviour of Orber when receiving unsupported or incorrect messages have now been improved.
  Own id: OTP-3903
- Time consumed by `oe_MyModule:oe_register()` decreased.
  Own id: OTP-3904

#### 1.11.2 Fixed bugs and malfunctions

- When Orber received a 'location_forward' reply, the result from the second invocation was never delivered to the client. Now fixed.
  Own id: OTP-3814

#### 1.11.3 Incompatibilities

-

#### 1.11.4 Known bugs and problems

-

### 1.12 Orber 3.2.1, Release Notes

#### 1.12.1 Improvements and new features

- It is now possible to use external `NamingContexts` when, for example, using `'CosNaming_NamingContextExt':bind_context/3`.
  Own id: OTP-3902

#### 1.12.2 Fixed bugs and malfunctions

-

#### 1.12.3 Incompatibilities

-

#### 1.12.4 Known bugs and problems

-

### 1.13 Orber 3.2, Release Notes

#### 1.13.1 Improvements and new features

- Orber now supports IIOP-version 1.2.
  Own id: OTP-3901
- Improved encoding and decoding performance for IIOP requests containing `struct`, `union` or user defined `exceptions`.
  Own id: OTP-3900

#### 1.13.2 Fixed bugs and malfunctions

- Setting the `bootstrap_port` configuration parameter to a value less than 1024 made it impossible to start Orber properly. Now fixed.
  Own id: OTP-3898

#### 1.13.3 Incompatibilities

-

#### 1.13.4 Known bugs and problems

-

### 1.14 Orber 3.1.8, Release Notes

#### 1.14.1 Improvements and new features

- Orber now accepts `Indirection/Repeated` `CORBA::TypeCode` as input and/or return value when communicating via IIOP.
  Own id: -

#### 1.14.2 Fixed bugs and malfunctions

- When another ORB replied with `location forward` Orber failed to decode this. Now fixed.
  Own id: OTP-3709
- Orber failed to encode `CORBA::TypeCode` containing `tk_alias`, e.g., sending an `#any{}` which encapsulates data defined by `typedef`.
  Own id: OTP-3689

#### 1.14.3 Incompatibilities

-

#### 1.14.4 Known bugs and problems

-

### 1.15 Orber 3.1.7, Release Notes

#### 1.15.1 Improvements and new features

- Earlier, Orber did not use the IIOP/GIOP version specified in an external object key when invoking an intra-ORB request.
  Own id: OTP-3663
- The OMG standard now support an Interoperable Naming Service. Initially there where two proposals of which Orber earlier supported one of them. Now both standards are supported.
  Own id: OTP-3664
- The OMG have redefined the operator, used when encoding requests via IIOP, for the function `corba_object:non_existent/1`. CORBA version 2.0 and 2.2 compliant ORB:s is supposed to support the old definition, while later versions, i.e., 2.3, is supposed to use the new operator (`_non_existent` instead of `_not_existent`). Orber accepts both versions.
  Own id: OTP-3679

#### 1.15.2 Fixed bugs and malfunctions

- If an Orber node crashed and was restarted the object keys could point to other processes than it should, which may cause problems if, for example, the other process termiantes due to it does not handle unknown messages. Now Orber GC object keys for objects residing on the crashed node. If Orber is started as a multi-node ORB of which one or more nodes runs an older Orber version they can still communicate but with an increased overhead. Hence, all nodes should be upgraded during a relatively short time. If Orber is stopped, i.e., orber:stop() or a shutdown is generated, objects residing on that node will be terminated.
  Own id: OTP-3678
- If an IDL-file contains two interfaces of which the first one contains an exception and the second interface, which inherits the first one, contain an operation which raises this exception the IFR failed since multiple references where found when invoking orber_ifr:lookup_id/2. Now fixed.
  Own id: OTP-3665

#### 1.15.3 Incompatibilities

- To be able to start Orber as lightweight the mnesia application cannot be listed in the "orber.app" file. You might find it necessary to add 'mnesia' to the applications-list. For example, you cannot upgrade an older version of Orber (not started as lightweight) to this version without adding mnesia to the application dependencies list.
  Own id: OTP-3666
- The function `corba_object:non_existent/1` have been updated to follow the CORBA 2.3 standard. Hence, Intra-ORB communication with ORB:s not supporting this standard will fail. The operation `corba_object:not_existent/1` allow users to use the old standard. Consult the ORB vendor's documentation to decide which functio to use.
  Own id: OTP-3679

#### 1.15.4 Known bugs and problems

-

### 1.16 Orber 3.1.6, Release Notes

#### 1.16.1 Improvements and new features

- Cosmetic update of internal functions.
  Own id: -

#### 1.16.2 Fixed bugs and malfunctions

-

#### 1.16.3 Incompatibilities

-

#### 1.16.4 Known bugs and problems

-

### 1.17 Orber 3.1.5, Release Notes

#### 1.17.1 Improvements and new features

-

#### 1.17.2 Fixed bugs and malfunctions

- When decoding TypeCode for an object reference, e.g., as a part of an #any{}, Orber failed. This is no longer the case.
  Own id: OTP-3631

#### 1.17.3 Incompatibilities

-

#### 1.17.4 Known bugs and problems

-

### 1.18 Orber 3.1.4, Release Notes

#### 1.18.1 Improvements and new features

- The function `start_lightweight/1` have been added to the `orber` module. This function allow us to start orber as lightweight without, or override, the configuration parameter `-orber lightweight`.
  Own id: -
- A new configuration parameter, 'iiop_connection_timeout Secs', is now available. This parameter's purpose, is to terminate the socket connection on the client side if a timespan of Secs seconds have passed. The connection will, however, NOT be terminated if a client still waits for a reply. For the last scenario to happen, the client have been configured to use a larger timeout value than the configuration parameter 'iiop_connection_timeout' have been set to.
  Own id: -
- Up until now, invoking an an operation with an extra Timeout parameter (using the IC option: ic:gen(IdlFile, [{timeout,"module::interface"}])), only applied to local Objects. Now, using the IC option above, when compiling the stubs, and adding the extra Timeout parameter, a timeout will also be triggered when calling Objects residing on other ORB:s. The return value, after a timeout has been triggered, have changed from an EXIT message to raising the system exception COMM_FAILURE. For more information, about how this feature interacts with the configuration parameter 'iiop_timeout', consult the documentation.
  Own id: -
- When using invalid intra-ORB configuration, i.e., incorrect Port/IP-address, when trying to connect to another ORB, a CRASH REPORT was generated if the configuration parameter '-boot start_sasl' was used. This behaviour has now changed.
  Own id: -

#### 1.18.2 Fixed bugs and malfunctions

- If a client-side ORB terminated the IIOP connection immediately there was a possibility that the server responsible detecting this did not.
  Own id: OTP-3593
- Setting the configuration parameter 'iiop_timeout' did not result in a correct behaviour, i.e., no timeout triggered.
  Own id: OTP-3555

#### 1.18.3 Incompatibilities

- When using the IC option, ic:gen(IdlFile, [{timeout,"module::interface"}]), an EXIT was the timeout result. Now, the system exception COMM_FAILURE is raised.

#### 1.18.4 Known bugs and problems

-

### 1.19 Orber 3.1.3, Release Notes

#### 1.19.1 Improvements and new features

-

#### 1.19.2 Fixed bugs and malfunctions

- Orber did not ignore unrecognized TaggedProfiles. Other vendors may have registered own TAG's with the OMG. These TAG's are valid but not necessarily handled by other vendors.
  Own id: OTP-3514
- When passing Object references over IIOP, decoding local references could fail. Now fixed.
  Own id: OTP-3515

#### 1.19.3 Incompatibilities

-

#### 1.19.4 Known bugs and problems

-

### 1.20 Orber 3.1.2, Release Notes

#### 1.20.1 Improvements and new features

-

#### 1.20.2 Fixed bugs and malfunctions

- Previously the OMG have published two suggestions for `Interoperable Name Service`, of which, the `CORBA 3` specify `orbos/98-10-11` to be implemented. Unfortunately, the Interoperable Name Service Orber supports, is the one not chosen. Hence, the `InitialReferences.idl` will not be according to the future standard. The modules name is now changed from `CORBA` to `Orber`. This will affect code which are using this interface. The idl specification must be recompiled and then `CORBA` must be changed to `Orber` in the client.
  Own id: OTP-3468, OTP-3155
- Now possible to run oe_unregister when the IDL-specification contains exceptions correctly.
  Own Id: OTP-3447
- Now possible to run oe_unregister when the IDL-specification contains attributes.
  Own Id: OTP-3439

#### 1.20.3 Incompatibilities

The change in `InitialReferences.idl` to clash with the Corba standard implies changes in code that use this interface. See the OTP-3468 and OTP-3155 in the `Fixed bugs and malfunctions` chapter above.

#### 1.20.4 Known bugs and problems

-

### 1.21 Orber 3.1.1, Release Notes

#### 1.21.1 Improvements and new features

-

#### 1.21.2 Fixed bugs and malfunctions

- When introducing the configuration parameter `ip_address` it was no longer possible to have the same default behaviour as before. Now fixed.
  Own Id: OTP-3431
- The internal request number handling never checked if maximum reached. Now the counter restart at 0 after reaching max.
  Own Id: OTP-3415
- Orber did not handle locate-requests correctly, i.e., not able to recognize the new internal representation of object references.
  Own Id: OTP-3414

#### 1.21.3 Incompatibilities

-

#### 1.21.4 Known bugs and problems

-

### 1.22 Orber 3.1, Release Notes

#### 1.22.1 Improvements and new features

- It is now possible to start Orber as lightweight.
  Own Id: -
- It is now possible to create pseudo objects, i.e., not server objects.
  Own Id: -
- One new system exception introduced; 'BAD_QOS'.
  Own Id: -
- Orber now supports the types 'long long' and 'unsigned long long'
  Own Id: -

#### 1.22.2 Fixed bugs and malfunctions

- Encoding typecode for complex exceptions (non-empty body) was not done correctly.
  Own Id: OTP-3390
- orber_iiop_pm crashed when it received an 'EXIT'. Now fixed.
  Own Id: OTP-3391

#### 1.22.3 Incompatibilities

-

#### 1.22.4 Known bugs and problems

-

### 1.23 Orber 3.0.1, Release Notes

#### 1.23.1 Improvements and new features

- Orber is now able to handle upgrade properly.
  Own Id: -

#### 1.23.2 Fixed bugs and malfunctions

-

#### 1.23.3 Incompatibilities

-

#### 1.23.4 Known bugs and problems

-

### 1.24 Orber 3.0, Release Notes

#### 1.24.1 Improvements and new features

- It is now possible to use secure IIOP connections to and from Orber. Orber currently only supports security with the help of SSL and not SECIOP.
  Own Id: OTP-1510
- It is now possible to start Orber objects as supervisor childs using Module_Interface:oe_create_link/2 or corba:create_link/4 as the start function.
  Own Id: -
- It is now possible to start a Orber object and be able to tell apart if it is in the process of being restarted or has permanently terminated. This is also the reason for introducing `objectkeys_gc_time` configuration parameter.
  Own Id: -
- The service CosEvent has been removed from orber and become its own application, called cosEvent.
  Own Id: -
- The service CosTransactions is now available as a separate application, called cosTransactions.
  Own Id: OTP-1741
- Three new system exceptions, 'TRANSACTION_REQUIRED', 'TRANSACTION_ROLLEDBACK' and 'INVALID_TRANSACTION', introduced. Required by the cosTransactions application.
  Own Id: -
- An configuration variable ip_address has been added, so it's possible to listen on a specific ip interface on a multi interface host. The value is the ip address as a string or a tuple of four integers, default value is all interfaces.
  Own Id: OTP-3294

#### 1.24.2 Fixed bugs and malfunctions

- set- and get-operations for the 'any'-module now behaves properly.
  Own Id: OTP-3355
- Orber can now handle IORs which contain more than one "Tagged Profile".
  Own Id: OTP-3266

#### 1.24.3 Incompatibilities

- CosEvent include paths have changed since it is now a separate application, called cosEvent.
- The internal representation of object references have changed. Orber do, however, recognize the old representation. But object references (created by Orber 2.2.2 or older) stored and used through several Orber upgrades may not be supported.
- The functions oe_create/2 and oe_create_link/2 now take an options list as its second argument. Orber still allow oe_create*(Env, {Type,RegName}) to be used, but may not in future releases.

#### 1.24.4 Known bugs and problems

-

Copyright © 1991-2002 Ericsson Utvecklings AB