|  | @@ -288,44 +288,38 @@ static void PopulateSocketAddressJson(grpc_json* json, const char* name,
 | 
	
		
			
				|  |  |                                           GRPC_JSON_OBJECT, false);
 | 
	
		
			
				|  |  |    json = json_iterator;
 | 
	
		
			
				|  |  |    json_iterator = nullptr;
 | 
	
		
			
				|  |  | -  int port_num = -1;
 | 
	
		
			
				|  |  |    grpc_uri* uri = grpc_uri_parse(addr_str, true);
 | 
	
		
			
				|  |  | -  if (uri != nullptr && (strcmp(uri->scheme, "fd") != 0)) {
 | 
	
		
			
				|  |  | +  if ((uri != nullptr) && ((strcmp(uri->scheme, "ipv4") == 0) ||
 | 
	
		
			
				|  |  | +                           (strcmp(uri->scheme, "ipv6") == 0))) {
 | 
	
		
			
				|  |  |      const char* host_port = uri->path;
 | 
	
		
			
				|  |  |      if (*host_port == '/') ++host_port;
 | 
	
		
			
				|  |  | -    if (strcmp(uri->scheme, "unix") == 0) {
 | 
	
		
			
				|  |  | -      json_iterator = grpc_json_create_child(json_iterator, json, "uds_address",
 | 
	
		
			
				|  |  | -                                             nullptr, GRPC_JSON_OBJECT, false);
 | 
	
		
			
				|  |  | -      json = json_iterator;
 | 
	
		
			
				|  |  | -      json_iterator = nullptr;
 | 
	
		
			
				|  |  | -      json_iterator =
 | 
	
		
			
				|  |  | -          grpc_json_create_child(json_iterator, json, "filename",
 | 
	
		
			
				|  |  | -                                 gpr_strdup(host_port), GRPC_JSON_STRING, true);
 | 
	
		
			
				|  |  | -    } else {
 | 
	
		
			
				|  |  | -      char* host = nullptr;
 | 
	
		
			
				|  |  | -      char* port = nullptr;
 | 
	
		
			
				|  |  | -      if (strcmp(uri->scheme, "localhost") == 0) {
 | 
	
		
			
				|  |  | -        host = gpr_strdup("::1");
 | 
	
		
			
				|  |  | -        port_num = atoi(uri->path);
 | 
	
		
			
				|  |  | -      } else {
 | 
	
		
			
				|  |  | -        GPR_ASSERT(gpr_split_host_port(host_port, &host, &port));
 | 
	
		
			
				|  |  | -        if (port != nullptr) {
 | 
	
		
			
				|  |  | -          port_num = atoi(port);
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -      char* b64_host = grpc_base64_encode(host, strlen(host), false, false);
 | 
	
		
			
				|  |  | -      json_iterator =
 | 
	
		
			
				|  |  | -          grpc_json_create_child(json_iterator, json, "tcpip_address", nullptr,
 | 
	
		
			
				|  |  | -                                 GRPC_JSON_OBJECT, false);
 | 
	
		
			
				|  |  | -      json = json_iterator;
 | 
	
		
			
				|  |  | -      json_iterator = nullptr;
 | 
	
		
			
				|  |  | -      json_iterator = grpc_json_add_number_string_child(json, json_iterator,
 | 
	
		
			
				|  |  | -                                                        "port", port_num);
 | 
	
		
			
				|  |  | -      json_iterator = grpc_json_create_child(json_iterator, json, "ip_address",
 | 
	
		
			
				|  |  | -                                             b64_host, GRPC_JSON_STRING, true);
 | 
	
		
			
				|  |  | -      gpr_free(host);
 | 
	
		
			
				|  |  | -      gpr_free(port);
 | 
	
		
			
				|  |  | +    char* host = nullptr;
 | 
	
		
			
				|  |  | +    char* port = nullptr;
 | 
	
		
			
				|  |  | +    GPR_ASSERT(gpr_split_host_port(host_port, &host, &port));
 | 
	
		
			
				|  |  | +    int port_num = -1;
 | 
	
		
			
				|  |  | +    if (port != nullptr) {
 | 
	
		
			
				|  |  | +      port_num = atoi(port);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | +    char* b64_host = grpc_base64_encode(host, strlen(host), false, false);
 | 
	
		
			
				|  |  | +    json_iterator = grpc_json_create_child(json_iterator, json, "tcpip_address",
 | 
	
		
			
				|  |  | +                                           nullptr, GRPC_JSON_OBJECT, false);
 | 
	
		
			
				|  |  | +    json = json_iterator;
 | 
	
		
			
				|  |  | +    json_iterator = nullptr;
 | 
	
		
			
				|  |  | +    json_iterator = grpc_json_add_number_string_child(json, json_iterator,
 | 
	
		
			
				|  |  | +                                                      "port", port_num);
 | 
	
		
			
				|  |  | +    json_iterator = grpc_json_create_child(json_iterator, json, "ip_address",
 | 
	
		
			
				|  |  | +                                           b64_host, GRPC_JSON_STRING, true);
 | 
	
		
			
				|  |  | +    gpr_free(host);
 | 
	
		
			
				|  |  | +    gpr_free(port);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  } else if (uri != nullptr && strcmp(uri->scheme, "unix") == 0) {
 | 
	
		
			
				|  |  | +    json_iterator = grpc_json_create_child(json_iterator, json, "uds_address",
 | 
	
		
			
				|  |  | +                                           nullptr, GRPC_JSON_OBJECT, false);
 | 
	
		
			
				|  |  | +    json = json_iterator;
 | 
	
		
			
				|  |  | +    json_iterator = nullptr;
 | 
	
		
			
				|  |  | +    json_iterator =
 | 
	
		
			
				|  |  | +        grpc_json_create_child(json_iterator, json, "filename",
 | 
	
		
			
				|  |  | +                               gpr_strdup(uri->path), GRPC_JSON_STRING, true);
 | 
	
		
			
				|  |  |    } else {
 | 
	
		
			
				|  |  |      json_iterator = grpc_json_create_child(json_iterator, json, "other_address",
 | 
	
		
			
				|  |  |                                             nullptr, GRPC_JSON_OBJECT, false);
 |