diff options
author | 2015-06-01 17:04:17 -0700 | |
---|---|---|
committer | 2015-06-01 17:04:17 -0700 | |
commit | 8e0b08a33d819d0a2523ec439d545296e1ad2086 (patch) | |
tree | 5613a61a51db9c5a5f7ecc5fec8cfd0eb0b2c436 /src/core/iomgr/tcp_client_posix.c | |
parent | 3c1331f920569ba3a182e13321db26796d6e920e (diff) | |
parent | fa275a97b968060383fe27c26b1d85f08d9582f9 (diff) |
Merge branch 'count-the-things' into we-dont-need-no-backup
Diffstat (limited to 'src/core/iomgr/tcp_client_posix.c')
-rw-r--r-- | src/core/iomgr/tcp_client_posix.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/core/iomgr/tcp_client_posix.c b/src/core/iomgr/tcp_client_posix.c index f88ce19448..981c326511 100644 --- a/src/core/iomgr/tcp_client_posix.c +++ b/src/core/iomgr/tcp_client_posix.c @@ -48,6 +48,7 @@ #include "src/core/iomgr/sockaddr_utils.h" #include "src/core/iomgr/socket_utils_posix.h" #include "src/core/iomgr/tcp_posix.h" +#include "src/core/support/string.h" #include <grpc/support/alloc.h> #include <grpc/support/log.h> #include <grpc/support/time.h> @@ -187,6 +188,8 @@ void grpc_tcp_client_connect(void (*cb)(void *arg, grpc_endpoint *ep), struct sockaddr_in6 addr6_v4mapped; struct sockaddr_in addr4_copy; grpc_fd *fdobj; + char *name; + char *addr_str; /* Use dualstack sockets where available. */ if (grpc_sockaddr_to_v4mapped(addr, &addr6_v4mapped)) { @@ -213,20 +216,23 @@ void grpc_tcp_client_connect(void (*cb)(void *arg, grpc_endpoint *ep), err = connect(fd, addr, addr_len); } while (err < 0 && errno == EINTR); - fdobj = grpc_fd_create(fd); + grpc_sockaddr_to_string(&addr_str, addr, 1); + gpr_asprintf(&name, "tcp-client:%s", addr_str); + + fdobj = grpc_fd_create(fd, name); grpc_pollset_set_add_fd(interested_parties, fdobj); if (err >= 0) { cb(arg, grpc_tcp_create(fdobj, GRPC_TCP_DEFAULT_READ_SLICE_SIZE)); - return; + goto done; } if (errno != EWOULDBLOCK && errno != EINPROGRESS) { - gpr_log(GPR_ERROR, "connect error: %s", strerror(errno)); + gpr_log(GPR_ERROR, "connect error to '%s': %s", strerror(errno)); grpc_fd_orphan(fdobj, NULL, NULL); cb(arg, NULL); - return; + goto done; } ac = gpr_malloc(sizeof(async_connect)); @@ -238,8 +244,12 @@ void grpc_tcp_client_connect(void (*cb)(void *arg, grpc_endpoint *ep), ac->write_closure.cb = on_writable; ac->write_closure.cb_arg = ac; - grpc_alarm_init(&ac->alarm, deadline, on_alarm, ac, gpr_now()); grpc_fd_notify_on_write(ac->fd, &ac->write_closure); + grpc_alarm_init(&ac->alarm, deadline, on_alarm, ac, gpr_now()); + +done: + gpr_free(name); + gpr_free(addr_str); } #endif |