aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar murgatroid99 <michael.lumish@gmail.com>2015-01-22 11:02:49 -0800
committerGravatar murgatroid99 <michael.lumish@gmail.com>2015-01-22 11:02:49 -0800
commitb2c86aa8c4a0833fb434e679d2a7dbc93e6fc670 (patch)
tree9d778498543dfc319c5b9ecfd852473c43eedad1 /src
parentbb289c2902aeb4d84248934bcb31a188420cd198 (diff)
parent43598ccc39adfdc1c8019f28222b6d06b2ca632a (diff)
Merge branch 'master' into merge_new_invoke_api
Diffstat (limited to 'src')
-rw-r--r--src/core/iomgr/socket_utils_common_posix.c4
-rw-r--r--src/core/iomgr/socket_utils_posix.c18
-rw-r--r--src/core/iomgr/tcp_server_posix.c2
-rw-r--r--src/core/support/time_posix.c2
4 files changed, 18 insertions, 8 deletions
diff --git a/src/core/iomgr/socket_utils_common_posix.c b/src/core/iomgr/socket_utils_common_posix.c
index d65b025d70..bd29e2b5fd 100644
--- a/src/core/iomgr/socket_utils_common_posix.c
+++ b/src/core/iomgr/socket_utils_common_posix.c
@@ -99,7 +99,7 @@ int grpc_set_socket_reuse_addr(int fd, int reuse) {
socklen_t intlen = sizeof(newval);
return 0 == setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val)) &&
0 == getsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &newval, &intlen) &&
- newval == val;
+ (newval != 0) == val;
}
/* disable nagle */
@@ -109,7 +109,7 @@ int grpc_set_socket_low_latency(int fd, int low_latency) {
socklen_t intlen = sizeof(newval);
return 0 == setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &val, sizeof(val)) &&
0 == getsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &newval, &intlen) &&
- newval == val;
+ (newval != 0) == val;
}
static gpr_once g_probe_ipv6_once = GPR_ONCE_INIT;
diff --git a/src/core/iomgr/socket_utils_posix.c b/src/core/iomgr/socket_utils_posix.c
index e8c8071037..06c5033d45 100644
--- a/src/core/iomgr/socket_utils_posix.c
+++ b/src/core/iomgr/socket_utils_posix.c
@@ -50,12 +50,22 @@ int grpc_accept4(int sockfd, struct sockaddr *addr, socklen_t *addrlen,
fd = accept(sockfd, addr, addrlen);
if (fd >= 0) {
- flags = fcntl(fd, F_GETFL, 0);
- flags |= nonblock ? O_NONBLOCK : 0;
- flags |= cloexec ? FD_CLOEXEC : 0;
- GPR_ASSERT(fcntl(fd, F_SETFL, flags) == 0);
+ if (nonblock) {
+ flags = fcntl(fd, F_GETFL, 0);
+ if (flags < 0) goto close_and_error;
+ if (fcntl(fd, F_SETFL, flags | O_NONBLOCK) != 0) goto close_and_error;
+ }
+ if (cloexec) {
+ flags = fcntl(fd, F_GETFD, 0);
+ if (flags < 0) goto close_and_error;
+ if (fcntl(fd, F_SETFD, flags | FD_CLOEXEC) != 0) goto close_and_error;
+ }
}
return fd;
+
+close_and_error:
+ close(fd);
+ return -1;
}
#endif /* GPR_POSIX_SOCKETUTILS */
diff --git a/src/core/iomgr/tcp_server_posix.c b/src/core/iomgr/tcp_server_posix.c
index 5762eb8a97..e6c02186ee 100644
--- a/src/core/iomgr/tcp_server_posix.c
+++ b/src/core/iomgr/tcp_server_posix.c
@@ -252,7 +252,7 @@ static int add_socket_to_server(grpc_tcp_server *s, int fd,
if (s->nports == s->port_capacity) {
s->port_capacity *= 2;
s->ports =
- gpr_realloc(s->ports, sizeof(server_port *) * s->port_capacity);
+ gpr_realloc(s->ports, sizeof(server_port) * s->port_capacity);
}
sp = &s->ports[s->nports++];
sp->server = s;
diff --git a/src/core/support/time_posix.c b/src/core/support/time_posix.c
index 78d4c3b446..9e11f8a865 100644
--- a/src/core/support/time_posix.c
+++ b/src/core/support/time_posix.c
@@ -61,7 +61,7 @@ gpr_timespec gpr_now(void) {
struct timeval now_tv;
gettimeofday(&now_tv, NULL);
now.tv_sec = now_tv.tv_sec;
- now.tv_nsec = now_tv.tv_usec / 1000;
+ now.tv_nsec = now_tv.tv_usec * 1000;
return now;
}
#endif