pull/37901/head
yijiem 4 months ago
parent a0f21d2422
commit 70d29b3b6c
  1. 22
      src/core/ext/transport/chttp2/server/chttp2_server.cc

@ -966,7 +966,7 @@ grpc_error_handle Chttp2ServerAddPort(Server* server, const char* addr,
args_modifier); args_modifier);
} }
*port_num = -1; *port_num = -1;
absl::StatusOr<std::vector<grpc_resolved_address>> resolved_or; absl::StatusOr<std::vector<grpc_resolved_address>> resolved;
absl::StatusOr<std::vector<EventEngine::ResolvedAddress>> results = absl::StatusOr<std::vector<EventEngine::ResolvedAddress>> results =
std::vector<EventEngine::ResolvedAddress>(); std::vector<EventEngine::ResolvedAddress>();
std::vector<grpc_error_handle> error_list; std::vector<grpc_error_handle> error_list;
@ -977,19 +977,19 @@ grpc_error_handle Chttp2ServerAddPort(Server* server, const char* addr,
grpc_error_handle error; grpc_error_handle error;
// TODO(ladynana, yijiem): this code does not handle address URIs correctly: // TODO(ladynana, yijiem): this code does not handle address URIs correctly:
// it's parsing `unix://foo/bar` as path `/foo/bar` when it should be // it's parsing `unix://foo/bar` as path `/foo/bar` when it should be
// parsing it as authority `foo` and path `/bar`. This needs to be fixed as // parsing it as authority `foo` and path `/bar`. Also add API documentation
// part of the address URI work. // on the valid URIs that grpc_server_add_http2_port accepts.
if (absl::ConsumePrefix(&parsed_addr_unprefixed, kUnixUriPrefix)) { if (absl::ConsumePrefix(&parsed_addr_unprefixed, kUnixUriPrefix)) {
resolved_or = grpc_resolve_unix_domain_address(parsed_addr_unprefixed); resolved = grpc_resolve_unix_domain_address(parsed_addr_unprefixed);
GRPC_RETURN_IF_ERROR(resolved_or.status()); GRPC_RETURN_IF_ERROR(resolved.status());
} else if (absl::ConsumePrefix(&parsed_addr_unprefixed, } else if (absl::ConsumePrefix(&parsed_addr_unprefixed,
kUnixAbstractUriPrefix)) { kUnixAbstractUriPrefix)) {
resolved_or = resolved =
grpc_resolve_unix_abstract_domain_address(parsed_addr_unprefixed); grpc_resolve_unix_abstract_domain_address(parsed_addr_unprefixed);
GRPC_RETURN_IF_ERROR(resolved_or.status()); GRPC_RETURN_IF_ERROR(resolved.status());
} else if (absl::ConsumePrefix(&parsed_addr_unprefixed, kVSockUriPrefix)) { } else if (absl::ConsumePrefix(&parsed_addr_unprefixed, kVSockUriPrefix)) {
resolved_or = grpc_resolve_vsock_address(parsed_addr_unprefixed); resolved = grpc_resolve_vsock_address(parsed_addr_unprefixed);
GRPC_RETURN_IF_ERROR(resolved_or.status()); GRPC_RETURN_IF_ERROR(resolved.status());
} else { } else {
if (IsEventEngineDnsNonClientChannelEnabled()) { if (IsEventEngineDnsNonClientChannelEnabled()) {
absl::StatusOr<std::unique_ptr<EventEngine::DNSResolver>> ee_resolver = absl::StatusOr<std::unique_ptr<EventEngine::DNSResolver>> ee_resolver =
@ -1010,8 +1010,8 @@ grpc_error_handle Chttp2ServerAddPort(Server* server, const char* addr,
} }
} }
} }
if (resolved_or.ok()) { if (resolved.ok()) {
for (const auto& addr : *resolved_or) { for (const auto& addr : *resolved) {
results->push_back( results->push_back(
grpc_event_engine::experimental::CreateResolvedAddress(addr)); grpc_event_engine::experimental::CreateResolvedAddress(addr));
} }

Loading…
Cancel
Save