summaryrefslogtreecommitdiff
path: root/TAO/tao/GIOP_Message_Connectors.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tao/GIOP_Message_Connectors.cpp')
-rw-r--r--TAO/tao/GIOP_Message_Connectors.cpp34
1 files changed, 17 insertions, 17 deletions
diff --git a/TAO/tao/GIOP_Message_Connectors.cpp b/TAO/tao/GIOP_Message_Connectors.cpp
index e564350809b..d9a9a28d72d 100644
--- a/TAO/tao/GIOP_Message_Connectors.cpp
+++ b/TAO/tao/GIOP_Message_Connectors.cpp
@@ -4,6 +4,7 @@
#include "tao/debug.h"
#include "tao/Principal.h"
#include "tao/TAOC.h"
+#include "tao/operation_details.h"
#if !defined (__ACE_INLINE__)
# include "tao/GIOP_Message_Connectors.i"
@@ -11,11 +12,8 @@
CORBA::Boolean
TAO_GIOP_Message_Connectors::
- write_request_header (const IOP::ServiceContextList& /*svc_ctx*/,
- CORBA::ULong request_id,
- CORBA::Octet response_flags,
+ write_request_header (const TAO_Operation_Details &opdetails,
TAO_Target_Specification & /*spec*/,
- const char * /*opname*/,
TAO_OutputCDR &msg)
{
// Adding only stuff that are common to all versions of GIOP.
@@ -24,7 +22,9 @@ TAO_GIOP_Message_Connectors::
// anyway.
// First the request id
- msg << request_id;
+ msg << opdetails.request_id ();
+
+ const CORBA::Octet response_flags = opdetails.response_flags ();
// @@ (JP) Temporary hack until all of GIOP 1.2 is implemented.
if (response_flags == 131)
@@ -127,23 +127,17 @@ process_connector_messages (TAO_Transport * /*transport*/,
CORBA::Boolean
TAO_GIOP_Message_Connector_11::
- write_request_header (const IOP::ServiceContextList& svc_ctx,
- CORBA::ULong request_id,
- CORBA::Octet response_flags,
+ write_request_header (const TAO_Operation_Details &opdetails,
TAO_Target_Specification &spec,
- const char *opname,
TAO_OutputCDR &msg)
{
// This is sepecific to GIOP 1.1. So put them here
- msg << svc_ctx;
+ msg << opdetails.service_info ();
// Let us call our parent class to check what he can do for
// us.
- TAO_GIOP_Message_Connectors::write_request_header (svc_ctx,
- request_id,
- response_flags,
+ TAO_GIOP_Message_Connectors::write_request_header (opdetails,
spec,
- opname,
msg);
// In this case we cannot recognise anything other than the Object
@@ -163,9 +157,15 @@ TAO_GIOP_Message_Connector_11::
return 0;
}
- msg << opname;
-
- // The principal is not used. So send a null pointer
+ msg.write_string (opdetails.opname_len (),
+ opdetails.opname ());
+
+ // Last element of request header is the principal; no portable way
+ // to get it, we just pass empty principal (convention: indicates
+ // "anybody"). Steps upward in security include passing an
+ // unverified user ID, and then verifying the message (i.e. a dummy
+ // service context entry is set up to hold a digital signature for
+ // this message, then patched shortly before it's sent).
static CORBA::Principal_ptr principal = 0;
msg << principal;