From 66b1bed3c3ae9678ecfeb5370e89aebd9898162d Mon Sep 17 00:00:00 2001 From: Mike Aizatsky Date: Fri, 21 Aug 2026 13:32:50 -0700 Subject: [PATCH] always copy sock address --- src/workerd/server/server.c++ | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/workerd/server/server.c++ b/src/workerd/server/server.c++ index 10f87828f5f..5c9e6cd5342 100644 --- a/src/workerd/server/server.c++ +++ b/src/workerd/server/server.c++ @@ -7090,9 +7090,8 @@ kj::Promise Server::listenOnSockets(config::Config::Reader config, // Start sockets TRACE_EVENT("workerd", "listenOnSockets"); for (auto sock: config.getSockets()) { - kj::StringPtr name = sock.getName(); - kj::StringPtr addrStr = nullptr; - kj::String ownAddrStr; + kj::String name = kj::str(sock.getName()); + kj::String addrStr; kj::Maybe> listenerOverride; kj::Own service = lookupService(sock.getService(), kj::str("Socket \"", name, "\"")); @@ -7100,7 +7099,7 @@ kj::Promise Server::listenOnSockets(config::Config::Reader config, KJ_IF_SOME(override, socketOverrides.findEntry(name)) { KJ_SWITCH_ONEOF(override.value) { KJ_CASE_ONEOF(str, kj::String) { - addrStr = ownAddrStr = kj::mv(str); + addrStr = kj::mv(str); break; } KJ_CASE_ONEOF(l, kj::Own) { @@ -7110,7 +7109,7 @@ kj::Promise Server::listenOnSockets(config::Config::Reader config, } socketOverrides.erase(override); } else if (sock.hasAddress()) { - addrStr = sock.getAddress(); + addrStr = kj::str(sock.getAddress()); } else { reportConfigError(kj::str("Socket \"", name, "\" has no address in the config, so must be specified on the " @@ -7147,8 +7146,8 @@ kj::Promise Server::listenOnSockets(config::Config::Reader config, auto handle = kj::coCapture( [this, service = kj::mv(service), rewriter = kj::mv(rewriter), - physicalProtocol = socketConfig.physicalProtocol, name, - isHttp = sock.which() != config::Socket::TCP, addrStr]( + physicalProtocol = socketConfig.physicalProtocol, name = kj::mv(name), + isHttp = sock.which() != config::Socket::TCP, addrStr = kj::mv(addrStr)]( kj::Promise> promise) mutable -> kj::Promise { if (isHttp) { TRACE_EVENT("workerd", "setup listenHttp");