From 6e0189583c233bd510520ec65c7ee9316948b53c Mon Sep 17 00:00:00 2001 From: Phil Mesnier Date: Mon, 7 Feb 2005 19:27:21 +0000 Subject: ChangeLog --- TAO/tao/Remote_Invocation.cpp | 8 +++++--- TAO/tao/Transport.cpp | 15 +++++++++++++++ TAO/tao/Transport.h | 5 +++++ 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/TAO/tao/Remote_Invocation.cpp b/TAO/tao/Remote_Invocation.cpp index 0efdef2dfb0..c19332acb84 100644 --- a/TAO/tao/Remote_Invocation.cpp +++ b/TAO/tao/Remote_Invocation.cpp @@ -108,6 +108,8 @@ namespace TAO TAO_OutputCDR &out_stream ACE_ENV_ARG_DECL) { + this->resolver_.transport ()->clear_translators (0, + &out_stream); // Send the request for the header if (this->resolver_.transport ()->generate_request_header (this->details_, spec, @@ -141,16 +143,16 @@ namespace TAO { TAO_Protocols_Hooks *tph = this->resolver_.stub ()->orb_core ()->get_protocols_hooks (); - + CORBA::Boolean set_client_network_priority = tph->set_client_network_priority (this->resolver_.transport ()->tag (), this->resolver_.stub () ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (TAO_INVOKE_FAILURE); - + TAO_Connection_Handler *connection_handler = this->resolver_.transport ()->connection_handler (); - + connection_handler->set_dscp_codepoint (set_client_network_priority); const int retval = diff --git a/TAO/tao/Transport.cpp b/TAO/tao/Transport.cpp index d4d6f4c520d..d0386a9744e 100644 --- a/TAO/tao/Transport.cpp +++ b/TAO/tao/Transport.cpp @@ -2339,6 +2339,21 @@ TAO_Transport::assign_translators (TAO_InputCDR *inp, TAO_OutputCDR *outp) } } +void +TAO_Transport::clear_translators (TAO_InputCDR *inp, TAO_OutputCDR *outp) +{ + if (inp) + { + inp->char_translator (0); + inp->wchar_translator (0); + } + if (outp) + { + outp->char_translator (0); + outp->wchar_translator (0); + } +} + ACE_Event_Handler::Reference_Count TAO_Transport::add_reference (void) { diff --git a/TAO/tao/Transport.h b/TAO/tao/Transport.h index 265e9c0a28c..259292a1eb2 100644 --- a/TAO/tao/Transport.h +++ b/TAO/tao/Transport.h @@ -729,6 +729,11 @@ public: /// and output CDRs. void assign_translators (TAO_InputCDR *, TAO_OutputCDR *); + /// It is necessary to clear the codeset translator when a CDR stream + /// is used for more than one GIOP message. This is required since the + /// header must not be translated, whereas the body must be. + void clear_translators (TAO_InputCDR *, TAO_OutputCDR *); + /// Return true if the tcs has been set CORBA::Boolean is_tcs_set() const; -- cgit v1.2.1