aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/lib/iomgr/tcp_server_utils_posix_common.cc
diff options
context:
space:
mode:
authorGravatar Sree Kuchibhotla <sreek@google.com>2018-06-18 09:37:46 -0700
committerGravatar Sree Kuchibhotla <sreek@google.com>2018-06-18 09:39:09 -0700
commit09d7da2652e64c38267bde4ba9c52673e2b97f32 (patch)
treefbdd9fbc058fa2c55a60044c1bd88bf429e4aa28 /src/core/lib/iomgr/tcp_server_utils_posix_common.cc
parent16ad9b828073579d0c6364570a3803b26e7fb39d (diff)
parenta2769d5ee4116152eead50678741906b1667923b (diff)
Merge branch 'master' into epollex-ownerfd-fix
Diffstat (limited to 'src/core/lib/iomgr/tcp_server_utils_posix_common.cc')
-rw-r--r--src/core/lib/iomgr/tcp_server_utils_posix_common.cc18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/core/lib/iomgr/tcp_server_utils_posix_common.cc b/src/core/lib/iomgr/tcp_server_utils_posix_common.cc
index 8c254d587b..b9f8145572 100644
--- a/src/core/lib/iomgr/tcp_server_utils_posix_common.cc
+++ b/src/core/lib/iomgr/tcp_server_utils_posix_common.cc
@@ -34,7 +34,6 @@
#include <grpc/support/string_util.h>
#include <grpc/support/sync.h>
-#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/iomgr/sockaddr.h"
#include "src/core/lib/iomgr/sockaddr_utils.h"
@@ -150,7 +149,6 @@ grpc_error* grpc_tcp_server_prepare_socket(grpc_tcp_server* s, int fd,
bool so_reuseport, int* port) {
grpc_resolved_address sockname_temp;
grpc_error* err = GRPC_ERROR_NONE;
- grpc_socket_mutator* mutator = nullptr;
GPR_ASSERT(fd >= 0);
@@ -171,11 +169,17 @@ grpc_error* grpc_tcp_server_prepare_socket(grpc_tcp_server* s, int fd,
}
err = grpc_set_socket_no_sigpipe_if_possible(fd);
if (err != GRPC_ERROR_NONE) goto error;
- mutator = grpc_channel_args_get_pointer<grpc_socket_mutator>(
- s->channel_args, GRPC_ARG_SOCKET_MUTATOR);
- if (mutator != nullptr) {
- err = grpc_set_socket_with_mutator(fd, mutator);
- if (err != GRPC_ERROR_NONE) goto error;
+
+ if (s->channel_args) {
+ for (size_t i = 0; i < s->channel_args->num_args; i++) {
+ if (0 == strcmp(s->channel_args->args[i].key, GRPC_ARG_SOCKET_MUTATOR)) {
+ GPR_ASSERT(s->channel_args->args[i].type == GRPC_ARG_POINTER);
+ grpc_socket_mutator* mutator = static_cast<grpc_socket_mutator*>(
+ s->channel_args->args[i].value.pointer.p);
+ err = grpc_set_socket_with_mutator(fd, mutator);
+ if (err != GRPC_ERROR_NONE) goto error;
+ }
+ }
}
if (bind(fd, reinterpret_cast<grpc_sockaddr*>(const_cast<char*>(addr->addr)),