http: We can bind to localhost if we do it right, apparently.
Some checks failed
Build Tilde Friends / Build-All (push) Has been cancelled

This commit is contained in:
Cory McWilliams 2025-03-12 20:23:37 -04:00
parent 5de2b09596
commit 26a3007268

View File

@ -716,10 +716,7 @@ int tf_http_listen(tf_http_t* http, int port, bool local_only, tf_tls_context_t*
if (r == 0) if (r == 0)
{ {
if (tf_util_is_mobile()) bool use_ipv6 = !tf_util_is_mobile();
{
local_only = false;
}
#if defined(__HAIKU__) #if defined(__HAIKU__)
/* /*
@ -727,19 +724,21 @@ int tf_http_listen(tf_http_t* http, int port, bool local_only, tf_tls_context_t*
** becomes unusable. Since we probably want localhost only ** becomes unusable. Since we probably want localhost only
** on this single-user OS, let's just assume IPv4. ** on this single-user OS, let's just assume IPv4.
*/ */
struct sockaddr_in addr = { use_ipv6 = false;
#endif
struct sockaddr_in addr4 = {
.sin_family = AF_INET, .sin_family = AF_INET,
.sin_addr = { .s_addr = local_only ? INADDR_LOOPBACK : INADDR_ANY }, .sin_addr = { .s_addr = local_only ? htonl(INADDR_LOOPBACK) : htonl(INADDR_ANY) },
.sin_port = ntohs(port), .sin_port = ntohs(port),
}; };
#else struct sockaddr_in6 addr6 = {
struct sockaddr_in6 addr = {
.sin6_family = AF_INET6, .sin6_family = AF_INET6,
.sin6_addr = local_only ? (struct in6_addr)IN6ADDR_LOOPBACK_INIT : (struct in6_addr)IN6ADDR_ANY_INIT, .sin6_addr = local_only ? (struct in6_addr)IN6ADDR_LOOPBACK_INIT : (struct in6_addr)IN6ADDR_ANY_INIT,
.sin6_port = ntohs(port), .sin6_port = ntohs(port),
}; };
#endif struct sockaddr* addr = use_ipv6 ? (struct sockaddr*)&addr6 : (struct sockaddr*)&addr4;
r = uv_tcp_bind(&listener->tcp, (struct sockaddr*)&addr, 0); r = uv_tcp_bind(&listener->tcp, addr, 0);
if (r) if (r)
{ {
tf_printf("%s:%d: uv_tcp_bind: %s\n", __FILE__, __LINE__, uv_strerror(r)); tf_printf("%s:%d: uv_tcp_bind: %s\n", __FILE__, __LINE__, uv_strerror(r));