paivana

HTTP paywall reverse proxy
Log | Files | Refs | Submodules | README | LICENSE

commit 35a9e030e0aabfc362918dc6c022e87bb3c1cb5d
parent ce46d4ef7415e932c8930c1d65008cb75a4a3ea1
Author: Christian Grothoff <christian@grothoff.org>
Date:   Mon,  4 May 2026 16:09:12 +0200

use IP, not struct sockaddr

Diffstat:
Msrc/backend/paivana-httpd_cookie.c | 3++-
Msrc/backend/paivana-httpd_helper.c | 19+++++++++++++------
2 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/src/backend/paivana-httpd_cookie.c b/src/backend/paivana-httpd_cookie.c @@ -60,7 +60,8 @@ compute_cookie_hash (struct GNUNET_TIME_Timestamp cur_time, "Computing cookie for %s at %llu and client %s\n", website, (unsigned long long) cur_time.abs_time.abs_value_us, - TALER_b2s (ca, ca_len)); + TALER_b2s (ca, + ca_len)); e = GNUNET_TIME_absolute_hton (cur_time.abs_time); GNUNET_assert (GNUNET_YES == GNUNET_CRYPTO_hkdf_gnunet ( diff --git a/src/backend/paivana-httpd_helper.c b/src/backend/paivana-httpd_helper.c @@ -34,7 +34,8 @@ PAIVANA_HTTPD_get_client_address (struct MHD_Connection *connection, { const union MHD_ConnectionInfo *ci; const struct sockaddr *sa; - socklen_t sa_len; + const void *ip; + size_t ip_len; *ca = NULL; *ca_len = 0; @@ -70,6 +71,10 @@ PAIVANA_HTTPD_get_client_address (struct MHD_Connection *connection, GNUNET_break_op (0); return false; } + GNUNET_log (GNUNET_ERROR_TYPE_INFO, + "Client address is based on X-Forwarded-For: `%.*s'\n", + (int) len, + start); *ca = GNUNET_strndup (start, len); *ca_len = len; @@ -84,18 +89,20 @@ PAIVANA_HTTPD_get_client_address (struct MHD_Connection *connection, switch (sa->sa_family) { case AF_INET: - sa_len = sizeof (struct sockaddr_in); + ip_len = sizeof (struct in_addr); + ip = &((const struct sockaddr_in *) sa)->sin_addr; break; case AF_INET6: - sa_len = sizeof (struct sockaddr_in6); + ip_len = sizeof (struct in6_addr); + ip = &((const struct sockaddr_in6 *) sa)->sin6_addr; break; default: GNUNET_break (0); return false; } - *ca = GNUNET_memdup (sa, - sa_len); - *ca_len = sa_len; + *ca = GNUNET_memdup (ip, + ip_len); + *ca_len = ip_len; return true; }