diff options
author | murgatroid99 <mlumish@google.com> | 2015-02-25 10:38:34 -0800 |
---|---|---|
committer | murgatroid99 <mlumish@google.com> | 2015-02-25 10:38:34 -0800 |
commit | 3061606fdec09ab74d56a865ea8b3bb847f94b77 (patch) | |
tree | ad1df6f9f10f29e890b04dcc3310686fa0e8fe4a /src/node | |
parent | 46f8495266e8ec3cf0639b10847e7c9b1d1485d3 (diff) |
Fixed TLS host resolution problems
Diffstat (limited to 'src/node')
-rw-r--r-- | src/node/ext/channel.cc | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/node/ext/channel.cc b/src/node/ext/channel.cc index 6c7a89e596..bc9461d7df 100644 --- a/src/node/ext/channel.cc +++ b/src/node/ext/channel.cc @@ -103,11 +103,15 @@ NAN_METHOD(Channel::New) { grpc_channel *wrapped_channel; // Owned by the Channel object NanUtf8String *host = new NanUtf8String(args[0]); + NanUtf8String *host_override = NULL; if (args[1]->IsUndefined()) { wrapped_channel = grpc_channel_create(**host, NULL); } else if (args[1]->IsObject()) { grpc_credentials *creds = NULL; Handle<Object> args_hash(args[1]->ToObject()->Clone()); + if (args_hash->HasOwnProperty(NanNew(GRPC_SSL_TARGET_NAME_OVERRIDE_ARG))) { + host_override = new NanUtf8String(args_hash->Get(NanNew(GRPC_SSL_TARGET_NAME_OVERRIDE_ARG))); + } if (args_hash->HasOwnProperty(NanNew("credentials"))) { Handle<Value> creds_value = args_hash->Get(NanNew("credentials")); if (!Credentials::HasInstance(creds_value)) { @@ -155,7 +159,12 @@ NAN_METHOD(Channel::New) { } else { return NanThrowTypeError("Channel expects a string and an object"); } - Channel *channel = new Channel(wrapped_channel, host); + Channel *channel; + if (host_override == NULL) { + channel = new Channel(wrapped_channel, host); + } else { + channel = new Channel(wrapped_channel, host_override); + } channel->Wrap(args.This()); NanReturnValue(args.This()); } else { |