diff options
author | 2015-10-06 16:51:50 -0700 | |
---|---|---|
committer | 2015-10-06 16:51:50 -0700 | |
commit | f20d7db554e1d1d3085b23c1b73391d078ab0e91 (patch) | |
tree | fbcb202d3b77ba0611c4e6893808066fc68f0efd | |
parent | 9b701e9f58bb85558ed53b427a5f33aab3a411f7 (diff) |
Fixed issues with binary metadata type checking
-rw-r--r-- | src/node/ext/call.cc | 5 | ||||
-rw-r--r-- | src/node/src/metadata.js | 5 |
2 files changed, 7 insertions, 3 deletions
diff --git a/src/node/ext/call.cc b/src/node/ext/call.cc index b08a9f96d8..f98fe2463b 100644 --- a/src/node/ext/call.cc +++ b/src/node/ext/call.cc @@ -168,8 +168,9 @@ Local<Value> ParseMetadata(const grpc_metadata_array *metadata_array) { } if (EndsWith(elem->key, "-bin")) { Nan::Set(array, index_map[elem->key], - Nan::CopyBuffer(elem->value, - elem->value_length).ToLocalChecked()); + MakeFastBuffer( + Nan::CopyBuffer(elem->value, + elem->value_length).ToLocalChecked())); } else { Nan::Set(array, index_map[elem->key], Nan::New(elem->value).ToLocalChecked()); diff --git a/src/node/src/metadata.js b/src/node/src/metadata.js index c1da70b197..5c24e46c9b 100644 --- a/src/node/src/metadata.js +++ b/src/node/src/metadata.js @@ -59,6 +59,7 @@ function normalizeKey(key) { function validate(key, value) { if (_.endsWith(key, '-bin')) { if (!(value instanceof Buffer)) { + console.log(value.constructor.toString()); throw new Error('keys that end with \'-bin\' must have Buffer values'); } } else { @@ -173,7 +174,9 @@ Metadata.prototype._getCoreRepresentation = function() { Metadata._fromCoreRepresentation = function(metadata) { var newMetadata = new Metadata(); if (metadata) { - newMetadata._internal_repr = _.cloneDeep(metadata); + _.forOwn(metadata, function(value, key) { + newMetadata._internal_repr[key] = _.clone(value); + }); } return newMetadata; }; |