Merge pull request #701 from ctiller/mac3

Mac networking stack fixes
pull/703/head
Nicolas Noble 10 years ago
commit 7db49ff5b4
  1. 4
      src/core/iomgr/pollset_multipoller_with_poll_posix.c
  2. 8
      src/core/iomgr/pollset_posix.c
  3. 2
      src/core/iomgr/resolve_address.c

@ -183,10 +183,10 @@ static int multipoll_with_poll_pollset_maybe_work(
grpc_pollset_kick_consume(&pollset->kick_state); grpc_pollset_kick_consume(&pollset->kick_state);
} }
for (i = 1; i < np; i++) { for (i = 1; i < np; i++) {
if (h->pfds[i].revents & POLLIN) { if (h->pfds[i].revents & (POLLIN | POLLHUP | POLLERR)) {
grpc_fd_become_readable(h->watchers[i].fd, allow_synchronous_callback); grpc_fd_become_readable(h->watchers[i].fd, allow_synchronous_callback);
} }
if (h->pfds[i].revents & POLLOUT) { if (h->pfds[i].revents & (POLLOUT | POLLHUP | POLLERR)) {
grpc_fd_become_writable(h->watchers[i].fd, allow_synchronous_callback); grpc_fd_become_writable(h->watchers[i].fd, allow_synchronous_callback);
} }
} }

@ -63,9 +63,9 @@ static void backup_poller(void *p) {
gpr_mu_lock(&g_backup_pollset.mu); gpr_mu_lock(&g_backup_pollset.mu);
while (g_shutdown_backup_poller == 0) { while (g_shutdown_backup_poller == 0) {
gpr_timespec next_poll = gpr_time_add(last_poll, delta); gpr_timespec next_poll = gpr_time_add(last_poll, delta);
grpc_pollset_work(&g_backup_pollset, next_poll); grpc_pollset_work(&g_backup_pollset, gpr_time_add(gpr_now(), gpr_time_from_seconds(1)));
gpr_mu_unlock(&g_backup_pollset.mu); gpr_mu_unlock(&g_backup_pollset.mu);
gpr_sleep_until(next_poll); /*gpr_sleep_until(next_poll);*/
gpr_mu_lock(&g_backup_pollset.mu); gpr_mu_lock(&g_backup_pollset.mu);
last_poll = next_poll; last_poll = next_poll;
} }
@ -277,10 +277,10 @@ static int unary_poll_pollset_maybe_work(grpc_pollset *pollset,
if (pfd[0].revents & POLLIN) { if (pfd[0].revents & POLLIN) {
grpc_pollset_kick_consume(&pollset->kick_state); grpc_pollset_kick_consume(&pollset->kick_state);
} }
if (pfd[1].revents & POLLIN) { if (pfd[1].revents & (POLLIN | POLLHUP | POLLERR)) {
grpc_fd_become_readable(fd, allow_synchronous_callback); grpc_fd_become_readable(fd, allow_synchronous_callback);
} }
if (pfd[1].revents & POLLOUT) { if (pfd[1].revents & (POLLOUT | POLLHUP | POLLERR)) {
grpc_fd_become_writable(fd, allow_synchronous_callback); grpc_fd_become_writable(fd, allow_synchronous_callback);
} }
} }

@ -134,7 +134,7 @@ grpc_resolved_addresses *grpc_blocking_resolve_address(
un = (struct sockaddr_un *)addrs->addrs->addr; un = (struct sockaddr_un *)addrs->addrs->addr;
un->sun_family = AF_UNIX; un->sun_family = AF_UNIX;
strcpy(un->sun_path, name + 5); strcpy(un->sun_path, name + 5);
addrs->addrs->len = strlen(un->sun_path) + sizeof(un->sun_family); addrs->addrs->len = strlen(un->sun_path) + sizeof(un->sun_family) + 1;
return addrs; return addrs;
} }

Loading…
Cancel
Save