libmicrohttpd2

HTTP server C library (MHD 2.x, alpha)
Log | Files | Refs | README | LICENSE

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:
Msrc/mhd2/daemon_add_conn.c | 16++++++++--------
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,