summaryrefslogtreecommitdiff
path: root/src/main/java/com/orbekk/protobuf/RpcChannel.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/orbekk/protobuf/RpcChannel.java')
-rw-r--r--src/main/java/com/orbekk/protobuf/RpcChannel.java11
1 files changed, 9 insertions, 2 deletions
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) {