diff options
Diffstat (limited to 'sysutils/slurm-wlm/files/patch-src_common_net.c')
| -rw-r--r-- | sysutils/slurm-wlm/files/patch-src_common_net.c | 68 |
1 files changed, 0 insertions, 68 deletions
diff --git a/sysutils/slurm-wlm/files/patch-src_common_net.c b/sysutils/slurm-wlm/files/patch-src_common_net.c deleted file mode 100644 index 8bfdea648018..000000000000 --- a/sysutils/slurm-wlm/files/patch-src_common_net.c +++ /dev/null @@ -1,68 +0,0 @@ ---- src/common/net.c.orig 2024-05-21 17:19:51 UTC -+++ src/common/net.c -@@ -75,6 +75,29 @@ - #include "src/common/xstring.h" - - /* -+ * Compute correct namelen + sa_len for AF_INET/AF_INET6 -+ */ -+#if defined(__FreeBSD__) -+static inline socklen_t _bsd_sockaddr_len_fix(struct sockaddr *sa) -+{ -+ if (!sa) return 0; -+ switch (sa->sa_family) { -+ case AF_INET: { -+ struct sockaddr_in *in = (struct sockaddr_in *)sa; -+ in->sin_len = (uint8_t)sizeof(*in); -+ return sizeof(*in); -+ } -+ case AF_INET6: { -+ struct sockaddr_in6 *in6 = (struct sockaddr_in6 *)sa; -+ in6->sin6_len = (uint8_t)sizeof(*in6); -+ return sizeof(*in6); -+ } -+ default: return sizeof(*sa); -+ } -+} -+#endif -+ -+/* - * Define slurm-specific aliases for use by plugins, see slurm_xlator.h - * for details. - */ -@@ -96,12 +119,18 @@ int net_stream_listen(int *fd, uint16_t *port) - /* bind ephemeral port */ - slurm_setup_addr(&sin, 0); - -+#if defined(__FreeBSD__) -+ socklen_t blen = _bsd_sockaddr_len_fix((struct sockaddr *)&sin); -+#else -+ socklen_t blen = sizeof(sin); -+#endif - if ((*fd = socket(sin.ss_family, SOCK_STREAM, IPPROTO_TCP)) < 0) - return -1; - - if (setsockopt(*fd, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val)) < 0) - goto cleanup; -- if (bind(*fd, (struct sockaddr *) &sin, len) < 0) -+ /* Single bind(): pass platform-correct namelen */ -+ if (bind(*fd, (struct sockaddr *) &sin, blen) < 0) - goto cleanup; - if (getsockname(*fd, (struct sockaddr *) &sin, &len) < 0) - goto cleanup; -@@ -219,7 +248,15 @@ static bool _is_port_ok(int s, uint16_t port, bool loc - return false; - } - -+/* -+ * compute correct socket length and pass it to bind() as blen on FreeBSD -+ */ -+#if defined(__FreeBSD__) -+ socklen_t blen = _bsd_sockaddr_len_fix((struct sockaddr *)&addr); -+ if (bind(s, (struct sockaddr *) &addr, blen) < 0) { -+#else - if (bind(s, (struct sockaddr *) &addr, sizeof(addr)) < 0) { -+#endif - log_flag(NET, "%s: bind() failed on port:%d fd:%d: %m", - __func__, port, s); - return false; |
