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:
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;
}