aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/node
diff options
context:
space:
mode:
authorGravatar murgatroid99 <mlumish@google.com>2016-12-01 10:30:35 -0800
committerGravatar murgatroid99 <mlumish@google.com>2016-12-01 10:30:35 -0800
commitdbda92064f3fca42bba45771fd2939ccbcefaefd (patch)
treec20b32cd5567ddacf4c0c2bbbc1f3f0c8159d0bd /src/node
parentc13e2f5b033567055136dea95d3f1b54ad4f8a2c (diff)
Also propagate serialization errors in unary server responses
Diffstat (limited to 'src/node')
-rw-r--r--src/node/src/server.js10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/node/src/server.js b/src/node/src/server.js
index bd0a5122ad..51bb99ee53 100644
--- a/src/node/src/server.js
+++ b/src/node/src/server.js
@@ -127,7 +127,13 @@ function sendUnaryResponse(call, value, serialize, metadata, flags) {
(new Metadata())._getCoreRepresentation();
call.metadataSent = true;
}
- var message = serialize(value);
+ var message;
+ try {
+ message = serialize(value);
+ } catch (e) {
+ e.code = grpc.status.INTERNAL;
+ handleError(e);
+ }
message.grpcWriteFlags = flags;
end_batch[grpc.opType.SEND_MESSAGE] = message;
end_batch[grpc.opType.SEND_STATUS_FROM_SERVER] = status;
@@ -282,7 +288,9 @@ function _write(chunk, encoding, callback) {
try {
message = this.serialize(chunk);
} catch (e) {
+ e.code = grpc.status.INTERNAL;
callback(e);
+ return;
}
if (_.isFinite(encoding)) {
/* Attach the encoding if it is a finite number. This is the closest we