summaryrefslogtreecommitdiff
path: root/grpc/src/core/lib/iomgr/unix_sockets_posix.cc
diff options
context:
space:
mode:
Diffstat (limited to 'grpc/src/core/lib/iomgr/unix_sockets_posix.cc')
-rw-r--r--grpc/src/core/lib/iomgr/unix_sockets_posix.cc64
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