aboutsummaryrefslogtreecommitdiff
path: root/src/zenutil/zenserverprocess.cpp
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2024-03-10 08:12:33 +0100
committerGitHub <[email protected]>2024-03-10 08:12:33 +0100
commit9815da7a63d979653ac71370ce63a4397777c715 (patch)
treec0d5675c3416fe0b487c4ef2a853a5de39ee6e2e /src/zenutil/zenserverprocess.cpp
parentAdd WriteMeasuredVarUInt to avoid measuring ints twice before writing (#665) (diff)
downloadzen-9815da7a63d979653ac71370ce63a4397777c715.tar.xz
zen-9815da7a63d979653ac71370ce63a4397777c715.zip
fix zenserver state macos (#669)
- Shared memory for zenserver state may hang around after all zenserver processes exit - make sure we find a valid entry in `zen up` before bailing - Httpasio add retry for desired port - Httpasio only call listen() once - Httpasio explicitly close acceptor sockets
Diffstat (limited to 'src/zenutil/zenserverprocess.cpp')
-rw-r--r--src/zenutil/zenserverprocess.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/zenutil/zenserverprocess.cpp b/src/zenutil/zenserverprocess.cpp
index 909692fbc..0b0127f93 100644
--- a/src/zenutil/zenserverprocess.cpp
+++ b/src/zenutil/zenserverprocess.cpp
@@ -177,6 +177,7 @@ ZenServerState::Initialize()
void* pBuf = mmap(nullptr, MapSize, PROT_READ | PROT_WRITE, MAP_SHARED, Fd, 0);
if (pBuf == MAP_FAILED)
{
+ close(Fd);
ThrowLastError("Could not map view of Zen server state");
}
#endif
@@ -241,7 +242,10 @@ ZenServerState::Lookup(int DesiredListenPort)
{
if (m_Data[i].DesiredListenPort == DesiredListenPort)
{
- return &m_Data[i];
+ if (IsProcessRunning(m_Data[i].Pid))
+ {
+ return &m_Data[i];
+ }
}
}