|
@@ -664,7 +664,12 @@ int modbus_tcp_pi_accept(modbus_t *ctx, int *s)
|
|
}
|
|
}
|
|
|
|
|
|
addrlen = sizeof(addr);
|
|
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) {
|
|
if (ctx->s == -1) {
|
|
close(*s);
|
|
close(*s);
|
|
*s = -1;
|
|
*s = -1;
|