Added handling for unimplemeneted methods on the server

pull/311/head
murgatroid99 10 years ago
parent 16c7d4d1af
commit 0af89aa558
  1. 17
      src/node/src/server.js
  2. 8
      src/node/test/client_server_test.js

@ -243,15 +243,24 @@ function Server(getMetadata, options) {
var handler = undefined;
var deadline = data.absolute_deadline;
var cancelled = false;
if (handlers.hasOwnProperty(data.method)) {
handler = handlers[data.method];
}
call.serverAccept(function(event) {
if (event.data.code === grpc.status.CANCELLED) {
cancelled = true;
stream.emit('cancelled');
if (stream) {
stream.emit('cancelled');
}
}
}, 0);
if (handlers.hasOwnProperty(data.method)) {
handler = handlers[data.method];
} else {
call.serverEndInitialMetadata(0);
call.startWriteStatus(
grpc.status.UNIMPLEMENTED,
"This method is not available on this server.",
function() {});
return;
}
if (getMetadata) {
call.addMetadata(getMetadata(data.method, data.metadata));
}

@ -185,6 +185,14 @@ describe('echo client', function() {
done();
});
});
it('should get correct status for unimplemented method', function(done) {
var stream = client.makeRequest(channel, 'unimplemented_method');
stream.end();
stream.on('status', function(status) {
assert.equal(status.code, grpc.status.UNIMPLEMENTED);
done();
});
});
});
/* TODO(mlumish): explore options for reducing duplication between this test
* and the insecure echo client test */

Loading…
Cancel
Save