diff options
author | Benoit Foucher <benoit@zeroc.com> | 2009-07-02 16:20:34 +0200 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2009-07-02 16:20:34 +0200 |
commit | dc83f174fc27154c43f133a2983a90205e05ec37 (patch) | |
tree | 7b8d01980a9fe00a3718e19a89866b47c3c7b06e /cpp/src/Ice/ConnectionI.cpp | |
parent | Changed Java and C# mapping to avoid generation of an {{{OperationsNC}}} inte... (diff) | |
download | ice-dc83f174fc27154c43f133a2983a90205e05ec37.tar.bz2 ice-dc83f174fc27154c43f133a2983a90205e05ec37.tar.xz ice-dc83f174fc27154c43f133a2983a90205e05ec37.zip |
Fixed bug 4145 - unexpected exception from batch request
Diffstat (limited to 'cpp/src/Ice/ConnectionI.cpp')
-rw-r--r-- | cpp/src/Ice/ConnectionI.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/cpp/src/Ice/ConnectionI.cpp b/cpp/src/Ice/ConnectionI.cpp index d5b92374617..9db70725047 100644 --- a/cpp/src/Ice/ConnectionI.cpp +++ b/cpp/src/Ice/ConnectionI.cpp @@ -604,7 +604,19 @@ Ice::ConnectionI::prepareBatchRequest(BasicStream* os) if(_exception.get()) { - _exception->ice_throw(); + // + // If there were no batch requests queued when the connection failed, we can safely + // retry with a new connection. Otherwise, we must throw to notify the caller that + // some previous batch requests were not sent. + // + if(_batchStream.b.empty()) + { + throw LocalExceptionWrapper(*_exception.get(), true); + } + else + { + _exception->ice_throw(); + } } assert(_state > StateNotValidated); |