From 2681f372b3f7d6f1c7504a032b5cd5692afbfb88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kjetil=20=C3=98rbekk?= Date: Wed, 2 May 2012 13:34:35 +0200 Subject: Error handling. Try to report failures locally instead of causing failures remotely. --- src/main/java/com/orbekk/protobuf/RpcChannel.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'src/main/java/com/orbekk/protobuf/RpcChannel.java') diff --git a/src/main/java/com/orbekk/protobuf/RpcChannel.java b/src/main/java/com/orbekk/protobuf/RpcChannel.java index 2b48004..ffc0d76 100644 --- a/src/main/java/com/orbekk/protobuf/RpcChannel.java +++ b/src/main/java/com/orbekk/protobuf/RpcChannel.java @@ -294,14 +294,21 @@ public class RpcChannel implements com.google.protobuf.RpcChannel { return; } try { - Message responsePb = request.responsePrototype.toBuilder() - .mergeFrom(response.getResponseProto()).build(); + Message responsePb = null; + if (response.hasResponseProto()) { + responsePb = request.responsePrototype.toBuilder() + .mergeFrom(response.getResponseProto()).build(); + } if (logger.isLoggable(Level.FINER)) { logger.finer(String.format("O(%d) <= %s", response.getRequestId(), responsePb)); } request.rpc.readFrom(response); + if (responsePb == null && request.rpc.isOk()) { + logger.warning("Invalid response from server: " + response); + request.rpc.setFailed("invalid response from server."); + } request.done.run(responsePb); request.rpc.complete(); } catch (InvalidProtocolBufferException e) { -- cgit v1.2.3