summaryrefslogtreecommitdiff
path: root/internal/eventloop_exit.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-04-18 13:13:25 +0300
committerPaul Buetow <paul@buetow.org>2026-04-18 13:13:25 +0300
commit550f064f95113e072677b871b7de30ecf25d62b8 (patch)
tree03e39a1bed71b4fc16ea62e7956a6268982f15a3 /internal/eventloop_exit.go
parent808c2549bfb17d22388a197d361a07ce0fc8f54f (diff)
fix task 45: bound pending handle cleanup
Diffstat (limited to 'internal/eventloop_exit.go')
-rw-r--r--internal/eventloop_exit.go7
1 files changed, 4 insertions, 3 deletions
diff --git a/internal/eventloop_exit.go b/internal/eventloop_exit.go
index c74ecea..e97688a 100644
--- a/internal/eventloop_exit.go
+++ b/internal/eventloop_exit.go
@@ -70,7 +70,7 @@ func (e *eventLoop) handlePathExit(ep *event.Pair, pathEv *types.PathEvent) bool
ep.Recycle()
return false
}
- e.pendingHandles[pathEv.GetTid()] = types.StringValue(pathEv.Pathname[:])
+ e.pendingHandleState().set(pathEv.GetTid(), types.StringValue(pathEv.Pathname[:]))
ep.Recycle()
return false
}
@@ -175,18 +175,19 @@ func (e *eventLoop) handleOpenByHandleAtExit(ep *event.Pair, openByHandleEv *typ
tid := openByHandleEv.GetTid()
retEvent, ok := ep.ExitEv.(*types.RetEvent)
if !ok {
+ e.pendingHandleState().delete(tid)
e.recyclePair(ep, "Dropped malformed open_by_handle_at exit event")
return false
}
fd := int32(retEvent.Ret)
if fd < 0 {
+ e.pendingHandleState().delete(tid)
ep.Recycle()
return false
}
- if pathname, ok := e.pendingHandles[tid]; ok {
- delete(e.pendingHandles, tid)
+ if pathname, ok := e.pendingHandleState().consume(tid); ok {
fdFile := file.NewFd(fd, pathname, openByHandleEv.Flags)
e.fdState().set(fd, fdFile)
ep.File = fdFile