Legacy Issue Number: 3576
CORBA is inconsistent on how to deal with the lack wide character code set
information in an IOR and the codes set service context.
When a server receives a service context without a wide character code set
specified, then it is supposed to raise BAD_PARAM when it receives wide
characters data from the client.
However a client is supposed to raise INV_OBJREF if the IOR is missing
from the server's native wchar code set . In CORBA 2.3, section220.127.116.11,
"Code Set Negotiation", it says, "... a server that supports interfaces
use wide character data is required to specify its native wchar code set;
one is not specified, then the client-side ORB raises exception
This requires a client to know whether a server supports interfaces that
wide character data at the time the client receives an IOR. To determine
this when the first IOR is received is a burdensome task. The client orb
would be forced to apply an exhaustive examination, such scanning all of
server's IDL bindings or the contents of the IFR looking for wchar types.
Additionally the client may need to determine if some Any might flow
containing wchar data.
I propose that the client's behavior be changed to match the server's. If
any wide character data is encountered and the server's IOR was missing
the native wchar code set, (which would cause the wide character
code set to not be negotiated), the client should raise BAD_PARAM.
This will allow common marshal and demarshal code to be independent of
whether it is running as a client or server. It also allows users to not
wide character code sets if they know they aren't using them.
Reported: CPP 1.1 — Fri, 21 Apr 2000 04:00 GMT
Disposition: Resolved — CORBA 2.4.2
The check should be able to be done at invoke time by the client orb
Updated: Fri, 6 Mar 2015 20:58 GMT