diff --git a/src/modbus-tcp.c b/src/modbus-tcp.c index dcdb208..b2c34fe 100644 --- a/src/modbus-tcp.c +++ b/src/modbus-tcp.c @@ -664,7 +664,12 @@ int modbus_tcp_pi_accept(modbus_t *ctx, int *s) } addrlen = sizeof(addr); - ctx->s = accept(*s, (void *)&addr, &addrlen); +#ifdef HAVE_ACCEPT4 + /* Inherit socket flags and use accept4 call */ + ctx->s = accept4(*s, (struct sockaddr *)&addr, &addrlen, SOCK_CLOEXEC); +#else + ctx->s = accept(*s, (struct sockaddr *)&addr, &addrlen); +#endif if (ctx->s == -1) { close(*s); *s = -1;