fdo#43433: Binary URP works gracefully with old Java URP

...which did not support protocol properties yet.

Change-Id: Ic5bb346764fb039856e16169d5ae96d01422e7e0
This commit is contained in:
Stephan Bergmann
2012-08-15 11:37:34 +02:00
parent bc440c09ed
commit edaf3e8cd1

View File

@@ -669,7 +669,24 @@ void Bridge::sendRequestChangeRequest() {
void Bridge::handleRequestChangeReply(
bool exception, BinaryAny const & returnValue)
{
throwException(exception, returnValue);
try {
throwException(exception, returnValue);
} catch (css::uno::RuntimeException & e) {
// Before OOo 2.2, Java URP would throw a RuntimeException when
// receiving a requestChange message (see i#35277 "Java URP: Support
// Manipulation of Protocol Properties"):
if (mode_ != MODE_REQUESTED) {
throw;
}
SAL_WARN(
"binaryurp",
"requestChange caught RuntimeException \'" << e.Message
<< "' in state 'requested'");
mode_ = MODE_NORMAL;
getWriter()->unblock();
decrementCalls();
return;
}
sal_Int32 n = *static_cast< sal_Int32 * >(
returnValue.getValue(
css::uno::TypeDescription(cppu::UnoType< sal_Int32 >::get())));