summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohnny Willemsen <jwillemsen@remedy.nl>2007-02-21 12:35:00 +0000
committerJohnny Willemsen <jwillemsen@remedy.nl>2007-02-21 12:35:00 +0000
commit669dd8807b7336d5bd4054c2af62fe1aee4599f5 (patch)
tree6cb8317e651febc39d828eb8db10cc9cd45d3f02
parent04c822bbb81d23dc85a8417d8396b7a170876eb1 (diff)
downloadATCD-669dd8807b7336d5bd4054c2af62fe1aee4599f5.tar.gz
Wed Feb 21 12:23:12 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl>
-rw-r--r--TAO/ChangeLog13
-rw-r--r--TAO/tao/PortableServer/RequestProcessingStrategyServantLocator.cpp10
-rw-r--r--TAO/tests/POA/Bug_2511_Regression/server.cpp2
3 files changed, 19 insertions, 6 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog
index c1e40b30c97..65ec3476d52 100644
--- a/TAO/ChangeLog
+++ b/TAO/ChangeLog
@@ -1,3 +1,16 @@
+Wed Feb 21 12:23:12 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tests/POA/Bug_2511_Regression/server.cpp:
+ Return the error count, in case of a failure then the test
+ framework will notice this
+
+ * tao/PortableServer/RequestProcessingStrategyServantLocator.cpp:
+ Don't call postinvoke when we don't have a servant. Fixes bugzilla
+ bugs 2511 and 2658. Thanks to Martin Cornelius
+ <Martin dot Cornelius at smiths-heimann dot com> and Milan
+ Cvetkovic <milan dot cvetkovic at mpathix dot com> for reporting
+ this and providing a test case and a proposed fix.
+
Wed Feb 21 11:42:12 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl>
* tests/Bug_1383_Regression/*:
diff --git a/TAO/tao/PortableServer/RequestProcessingStrategyServantLocator.cpp b/TAO/tao/PortableServer/RequestProcessingStrategyServantLocator.cpp
index 07b9b25853d..f51ac0a48e4 100644
--- a/TAO/tao/PortableServer/RequestProcessingStrategyServantLocator.cpp
+++ b/TAO/tao/PortableServer/RequestProcessingStrategyServantLocator.cpp
@@ -56,7 +56,7 @@ namespace TAO
if (!CORBA::is_nil (this->servant_locator_.in ()))
{
throw ::CORBA::BAD_INV_ORDER (CORBA::OMGVMCID | 6,
- CORBA::COMPLETED_NO);
+ CORBA::COMPLETED_NO);
}
this->servant_locator_ = PortableServer::ServantLocator::_narrow (imgr);
@@ -69,9 +69,8 @@ namespace TAO
const PortableServer::ObjectId &system_id,
PortableServer::Servant &servant)
{
- TAO_SERVANT_LOCATION location = TAO_SERVANT_NOT_FOUND;
-
- location = this->poa_->servant_present (system_id, servant);
+ TAO_SERVANT_LOCATION location =
+ this->poa_->servant_present (system_id, servant);
if (location == TAO_SERVANT_NOT_FOUND)
{
@@ -203,7 +202,8 @@ namespace TAO
// exception the methods normal return is overrriden, the request completes
// with the exception
- if (!CORBA::is_nil (this->servant_locator_.in ()))
+ if (!CORBA::is_nil (this->servant_locator_.in ()) &&
+ servant_upcall.servant())
{
try
{
diff --git a/TAO/tests/POA/Bug_2511_Regression/server.cpp b/TAO/tests/POA/Bug_2511_Regression/server.cpp
index 3fd6da6766f..6b199cbf575 100644
--- a/TAO/tests/POA/Bug_2511_Regression/server.cpp
+++ b/TAO/tests/POA/Bug_2511_Regression/server.cpp
@@ -241,5 +241,5 @@ main (int argc, char **argv)
retval = -1;
}
- return retval;
+ return errorCount;
}