Legacy Issue Number: 3318
Source: Triodia Technologies Pty Ltd ( Michi Henning)
Question: Is it legal to send the same codeset context more than once
on the same connection?
The spec says:
Codeset negotiation is not performed on a per-request basis,
but only when a client initially connects to a server.
These words suggest that the codeset must be sent on the first request,
but don't say whether it's OK to send it more than once.
I would like to have clarification, and also a loose interpretation. Here
A multithreaded client starts talking to a new object from
multiple threads more or less simultaneously. If the codeset
info must be sent only on the first request and is illegal on
subsequent requests, we end up with rather complex locking
logic in the connection management layer of the ORB. In effect,
each request is no longer a stand-alone and context-free thing;
instead, how to send a specific request now depends on what
other threads may have done in the past.
That's not very nice (even though it can be implemented) because
it needlessly complicates things.
So, I would like to change things such that it is legal to send the
codeset context even if it was sent previously on the same connection.
When that happens, the server should simply and silently ignore all
but the first context (even if the subsequent contexts have different
codeset information from earlier ones). That way, requests remain
context-free. [ Yet again, we see a sterling demonstration that attaching
semantics to the duration of a connection was a very bad idea, especially
in a model that is connectionless ]
Further, it seems pointless to send codeset info at all unless the client
actually uses an operation that involves a wchar or wstring parameter.
So, I think it would make sense to relax things such that the codeset
need not be sent until the first request is made that requires sending it.
Reported: CPP 1.1 — Tue, 14 Mar 2000 05:00 GMT
Disposition: Resolved — CORBA 3.0.2
Updated: Fri, 6 Mar 2015 20:58 GMT