diff options
-rw-r--r-- | src/core/lib/client_config/resolvers/sockaddr_resolver.c | 39 |
1 files changed, 5 insertions, 34 deletions
diff --git a/src/core/lib/client_config/resolvers/sockaddr_resolver.c b/src/core/lib/client_config/resolvers/sockaddr_resolver.c index 5c5133649a..c787bd57d6 100644 --- a/src/core/lib/client_config/resolvers/sockaddr_resolver.c +++ b/src/core/lib/client_config/resolvers/sockaddr_resolver.c @@ -267,46 +267,17 @@ static grpc_resolver *sockaddr_create( r->lb_policy_name = NULL; if (0 != strcmp(args->uri->query, "")) { gpr_slice query_slice; - gpr_slice_buffer query_parts; /* the &-separated elements of the query */ - gpr_slice_buffer query_param_parts; /* the =-separated subelements */ + gpr_slice_buffer query_parts; query_slice = gpr_slice_new(args->uri->query, strlen(args->uri->query), do_nothing); gpr_slice_buffer_init(&query_parts); - gpr_slice_buffer_init(&query_param_parts); - /* the query can contain "lb_policy=<policy>" and "lb_enabled=<1|0>" */ - - bool lb_enabled; - gpr_slice_split(query_slice, "&", &query_parts); - for (i = 0; i < query_parts.count; i++) { - gpr_slice_split(query_parts.slices[i], "=", &query_param_parts); - GPR_ASSERT(query_param_parts.count == 2); - if (0 == gpr_slice_str_cmp(query_param_parts.slices[0], "lb_policy")) { - r->lb_policy_name = - gpr_dump_slice(query_param_parts.slices[1], GPR_DUMP_ASCII); - } else if (0 == - gpr_slice_str_cmp(query_param_parts.slices[0], "lb_enabled")) { - if (0 != gpr_slice_str_cmp(query_param_parts.slices[1], "0")) { - /* anything other than 0 is taken to be true */ - lb_enabled = true; - } - } else { - gpr_log(GPR_ERROR, "invalid query element value: '%s'", - query_parts.slices[0]); - } - gpr_slice_buffer_reset_and_unref(&query_param_parts); - } - - if (strcmp("grpclb", r->lb_policy_name) == 0 && !lb_enabled) { - /* we want grpclb but the "resolved" addresses aren't LB enabled. Bail - * out, as this is meant mostly for tests. */ - gpr_log(GPR_ERROR, - "Requested 'grpclb' LB policy but resolved addresses don't " - "support load balancing."); - abort(); + gpr_slice_split(query_slice, "=", &query_parts); + GPR_ASSERT(query_parts.count == 2); + if (0 == gpr_slice_str_cmp(query_parts.slices[0], "lb_policy")) { + r->lb_policy_name = gpr_dump_slice(query_parts.slices[1], GPR_DUMP_ASCII); } gpr_slice_buffer_destroy(&query_parts); - gpr_slice_buffer_destroy(&query_param_parts); gpr_slice_unref(query_slice); } if (r->lb_policy_name == NULL) { |