commit b60bb4f7422894dea02dbbf09842ce26858b01b4
parent 5c00f4d3177134b08724b7a5c057f07f2bb7f107
Author: Evgeny Grin (Karlson2k) <k2k@drgrin.dev>
Date: Mon, 29 Dec 2025 10:51:59 +0100
mhd_daemon_accept_connection(): implemented support for non-standard socket address extensions
Mostly for AF_UNIX on Darwin.
Diffstat:
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/src/mhd2/daemon_add_conn.c b/src/mhd2/daemon_add_conn.c
@@ -911,7 +911,7 @@ MHD_daemon_add_connection (struct MHD_Daemon *MHD_RESTRICT daemon,
MHD_INTERNAL MHD_FN_PAR_NONNULL_ALL_ enum mhd_DaemonAcceptResult
mhd_daemon_accept_connection (struct MHD_Daemon *restrict daemon)
{
- struct sockaddr_storage addrstorage;
+ struct sockaddr_storage addrstorage[2]; /* Support non-standard extensions */
socklen_t addrlen;
MHD_Socket s;
MHD_Socket fd;
@@ -938,11 +938,11 @@ mhd_daemon_accept_connection (struct MHD_Daemon *restrict daemon)
mhd_assert (! daemon->net.listen.is_broken);
addrlen = (socklen_t) sizeof (addrstorage);
- memset (&addrstorage,
+ memset (addrstorage,
0,
(size_t) addrlen);
#ifdef HAVE_STRUCT_SOCKADDR_STORAGE_SS_LEN
- addrstorage.ss_len = addrlen;
+ addrstorage->ss_len = addrlen;
#endif /* HAVE_STRUCT_SOCKADDR_STORAGE_SS_LEN */
/* Initialise with default values to avoid compiler warnings */
@@ -955,7 +955,7 @@ mhd_daemon_accept_connection (struct MHD_Daemon *restrict daemon)
if (use_accept4)
{
s = accept4 (fd,
- (struct sockaddr *) &addrstorage,
+ (struct sockaddr *) addrstorage,
&addrlen,
mhd_SOCK_CLOEXEC | mhd_SOCK_NONBLOCK | mhd_SOCK_NOSIGPIPE);
if (MHD_INVALID_SOCKET != s)
@@ -974,7 +974,7 @@ mhd_daemon_accept_connection (struct MHD_Daemon *restrict daemon)
if (! use_accept4)
{
s = accept (fd,
- (struct sockaddr *) &addrstorage,
+ (struct sockaddr *) addrstorage,
&addrlen);
if (MHD_INVALID_SOCKET != s)
{
@@ -1072,10 +1072,10 @@ mhd_daemon_accept_connection (struct MHD_Daemon *restrict daemon)
}
else if (mhd_T_MAYBE == sk_non_ip)
{
- if (AF_INET == ((struct sockaddr *) &addrstorage)->sa_family)
+ if (AF_INET == ((struct sockaddr *) addrstorage)->sa_family)
sk_non_ip = mhd_T_NO;
#ifdef HAVE_INET6
- else if (AF_INET6 == ((struct sockaddr *) &addrstorage)->sa_family)
+ else if (AF_INET6 == ((struct sockaddr *) addrstorage)->sa_family)
sk_non_ip = mhd_T_NO;
#endif /* HAVE_INET6 */
}
@@ -1120,7 +1120,7 @@ mhd_daemon_accept_connection (struct MHD_Daemon *restrict daemon)
return (MHD_SC_OK == internal_add_connection (daemon,
s,
(const struct sockaddr *)
- &addrstorage,
+ addrstorage,
(size_t) addrlen,
false,
sk_nonbl,