Fixed TLS host resolution problems

This commit is contained in:
murgatroid99 2015-02-25 10:38:34 -08:00
parent b7fa6c07f1
commit 1fc959e5c4
1 changed files with 10 additions and 1 deletions

View File

@ -103,11 +103,15 @@ NAN_METHOD(Channel::New) {
grpc_channel *wrapped_channel; grpc_channel *wrapped_channel;
// Owned by the Channel object // Owned by the Channel object
NanUtf8String *host = new NanUtf8String(args[0]); NanUtf8String *host = new NanUtf8String(args[0]);
NanUtf8String *host_override = NULL;
if (args[1]->IsUndefined()) { if (args[1]->IsUndefined()) {
wrapped_channel = grpc_channel_create(**host, NULL); wrapped_channel = grpc_channel_create(**host, NULL);
} else if (args[1]->IsObject()) { } else if (args[1]->IsObject()) {
grpc_credentials *creds = NULL; grpc_credentials *creds = NULL;
Handle<Object> args_hash(args[1]->ToObject()->Clone()); 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"))) { if (args_hash->HasOwnProperty(NanNew("credentials"))) {
Handle<Value> creds_value = args_hash->Get(NanNew("credentials")); Handle<Value> creds_value = args_hash->Get(NanNew("credentials"));
if (!Credentials::HasInstance(creds_value)) { if (!Credentials::HasInstance(creds_value)) {
@ -155,7 +159,12 @@ NAN_METHOD(Channel::New) {
} else { } else {
return NanThrowTypeError("Channel expects a string and an object"); 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()); channel->Wrap(args.This());
NanReturnValue(args.This()); NanReturnValue(args.This());
} else { } else {