diff options
Diffstat (limited to 'grpc/src/core/lib/iomgr/unix_sockets_posix.cc')
-rw-r--r-- | grpc/src/core/lib/iomgr/unix_sockets_posix.cc | 64 |
1 files changed, 25 insertions, 39 deletions
diff --git a/grpc/src/core/lib/iomgr/unix_sockets_posix.cc b/grpc/src/core/lib/iomgr/unix_sockets_posix.cc index 2b077a38..e8776f6a 100644 --- a/grpc/src/core/lib/iomgr/unix_sockets_posix.cc +++ b/grpc/src/core/lib/iomgr/unix_sockets_posix.cc @@ -21,8 +21,6 @@ #ifdef GRPC_HAVE_UNIX_SOCKET -#include "src/core/lib/iomgr/sockaddr.h" - #include <string.h> #include <sys/stat.h> #include <sys/types.h> @@ -30,36 +28,42 @@ #include "absl/strings/str_cat.h" -#include "src/core/lib/address_utils/parse_address.h" -#include "src/core/lib/iomgr/unix_sockets_posix.h" - #include <grpc/support/alloc.h> #include <grpc/support/log.h> +#include "src/core/lib/address_utils/parse_address.h" #include "src/core/lib/gpr/useful.h" +#include "src/core/lib/iomgr/sockaddr.h" +#include "src/core/lib/iomgr/unix_sockets_posix.h" +#include "src/core/lib/transport/error_utils.h" void grpc_create_socketpair_if_unix(int sv[2]) { GPR_ASSERT(socketpair(AF_UNIX, SOCK_STREAM, 0, sv) == 0); } -grpc_error_handle grpc_resolve_unix_domain_address( - const char* name, grpc_resolved_addresses** addresses) { - *addresses = static_cast<grpc_resolved_addresses*>( - gpr_malloc(sizeof(grpc_resolved_addresses))); - (*addresses)->naddrs = 1; - (*addresses)->addrs = static_cast<grpc_resolved_address*>( - gpr_malloc(sizeof(grpc_resolved_address))); - return grpc_core::UnixSockaddrPopulate(name, (*addresses)->addrs); +absl::StatusOr<std::vector<grpc_resolved_address>> +grpc_resolve_unix_domain_address(absl::string_view name) { + grpc_resolved_address addr; + grpc_error_handle error = grpc_core::UnixSockaddrPopulate(name, &addr); + if (error == GRPC_ERROR_NONE) { + return std::vector<grpc_resolved_address>({addr}); + } + auto result = grpc_error_to_absl_status(error); + GRPC_ERROR_UNREF(error); + return result; } -grpc_error_handle grpc_resolve_unix_abstract_domain_address( - const absl::string_view name, grpc_resolved_addresses** addresses) { - *addresses = static_cast<grpc_resolved_addresses*>( - gpr_malloc(sizeof(grpc_resolved_addresses))); - (*addresses)->naddrs = 1; - (*addresses)->addrs = static_cast<grpc_resolved_address*>( - gpr_malloc(sizeof(grpc_resolved_address))); - return grpc_core::UnixAbstractSockaddrPopulate(name, (*addresses)->addrs); +absl::StatusOr<std::vector<grpc_resolved_address>> +grpc_resolve_unix_abstract_domain_address(const absl::string_view name) { + grpc_resolved_address addr; + grpc_error_handle error = + grpc_core::UnixAbstractSockaddrPopulate(name, &addr); + if (error == GRPC_ERROR_NONE) { + return std::vector<grpc_resolved_address>({addr}); + } + auto result = grpc_error_to_absl_status(error); + GRPC_ERROR_UNREF(error); + return result; } int grpc_is_unix_socket(const grpc_resolved_address* resolved_addr) { @@ -89,22 +93,4 @@ void grpc_unlink_if_unix_domain_socket( } } -std::string grpc_sockaddr_to_uri_unix_if_possible( - const grpc_resolved_address* resolved_addr) { - const grpc_sockaddr* addr = - reinterpret_cast<const grpc_sockaddr*>(resolved_addr->addr); - if (addr->sa_family != AF_UNIX) { - return ""; - } - const auto* unix_addr = reinterpret_cast<const struct sockaddr_un*>(addr); - if (unix_addr->sun_path[0] == '\0' && unix_addr->sun_path[1] != '\0') { - return absl::StrCat( - "unix-abstract:", - absl::string_view( - unix_addr->sun_path + 1, - resolved_addr->len - sizeof(unix_addr->sun_family) - 1)); - } - return absl::StrCat("unix:", unix_addr->sun_path); -} - #endif |