summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbala <balanatarajan@users.noreply.github.com>2002-07-22 22:54:35 +0000
committerbala <balanatarajan@users.noreply.github.com>2002-07-22 22:54:35 +0000
commit463ea5e797a294f5f2abc085ae0355d1f8d82c91 (patch)
treec2aaf751835347f9c8a5e6e76fad4965ed1d4ee1
parent4d18f68fd8ddddb8af188e1cd68ba452148360d6 (diff)
downloadATCD-463ea5e797a294f5f2abc085ae0355d1f8d82c91.tar.gz
ChangeLogTag: Mon Jul 22 17:52:04 2002 Balachandran Natarajan <bala@cs.wustl.edu>
-rw-r--r--TAO/tao/ChangeLog11
-rw-r--r--TAO/tao/GIOP_Message_Base.cpp15
-rw-r--r--TAO/tao/Transport.cpp10
3 files changed, 23 insertions, 13 deletions
diff --git a/TAO/tao/ChangeLog b/TAO/tao/ChangeLog
index ad942f04787..5ec9821ce04 100644
--- a/TAO/tao/ChangeLog
+++ b/TAO/tao/ChangeLog
@@ -1,3 +1,14 @@
+Mon Jul 22 17:52:04 2002 Balachandran Natarajan <bala@cs.wustl.edu>
+
+ * tao/GIOP_Message_Base.cpp: We now use the global pool for
+ allocating memory for the return path. Using TSS created
+ problems when we were trying to move the unsent messages from
+ the TSS to global pool. The message block makes things to crash
+ horribly, especially at places that you have no clue about.
+
+ * tao/Transport.cpp: Do not reset the allocators since ot is not
+ required.
+
Tue Jul 16 07:06:33 2002 Balachandran Natarajan <bala@cs.wustl.edu>
* tao/Synch_Queued_Message.cpp:
diff --git a/TAO/tao/GIOP_Message_Base.cpp b/TAO/tao/GIOP_Message_Base.cpp
index 84a8ec26914..d0691e7a65f 100644
--- a/TAO/tao/GIOP_Message_Base.cpp
+++ b/TAO/tao/GIOP_Message_Base.cpp
@@ -584,12 +584,21 @@ TAO_GIOP_Message_Base::process_request_message (TAO_Transport *transport,
#endif /* ACE_HAS_PURIFY */
// Initialze an output CDR on the stack
+ // NOTE: Dont jump to a conclusion as to why we are using the
+ // inpout_cdr and hence the global pool here. These pools will move
+ // to the lanes anyway at some point of time. Further, it would have
+ // been awesome to have this in TSS. But for some reason the cloning
+ // that happens when the ORB gets flow controlled while writing a
+ // reply is messing things up. We crash horribly. Doing this adds a
+ // lock, we need to set things like this -- put stuff in TSS here
+ // and transfer to global memory when we get flow controlled. We
+ // need to work on the message block to get it right!
TAO_OutputCDR output (repbuf,
sizeof repbuf,
TAO_ENCAP_BYTE_ORDER,
- this->orb_core_->output_cdr_buffer_allocator (),
- this->orb_core_->output_cdr_dblock_allocator (),
- this->orb_core_->output_cdr_msgblock_allocator (),
+ this->orb_core_->input_cdr_buffer_allocator (),
+ this->orb_core_->input_cdr_dblock_allocator (),
+ this->orb_core_->input_cdr_msgblock_allocator (),
this->orb_core_->orb_params ()->cdr_memcpy_tradeoff (),
qd->major_version_,
qd->minor_version_,
diff --git a/TAO/tao/Transport.cpp b/TAO/tao/Transport.cpp
index 02cb348465c..fe3308ef812 100644
--- a/TAO/tao/Transport.cpp
+++ b/TAO/tao/Transport.cpp
@@ -619,16 +619,6 @@ TAO_Transport::send_reply_message_i (const ACE_Message_Block *mb,
synch_message.remove_from_list (this->head_,
this->tail_);
- ACE_Message_Block *tmp_mb =
- ACE_const_cast (ACE_Message_Block *,
- mb);
-
- // Reset the message block allocators to allocate memory from the
- // global pool.
- tmp_mb->reset_allocators (this->orb_core_->input_cdr_buffer_allocator (),
- this->orb_core_->input_cdr_dblock_allocator (),
- this->orb_core_->input_cdr_msgblock_allocator ());
-
// Clone the node that we have.
TAO_Queued_Message *msg =
synch_message.clone (this->orb_core_->transport_message_buffer_allocator ());