close: terminate sessions, deregister all requests

This commit is contained in:
Jay
2026-05-17 15:30:57 -04:00
parent a6ab7ada60
commit b09281b5d4
2 changed files with 103 additions and 13 deletions
+18 -2
View File
@@ -204,8 +204,24 @@ func (m *RequestManager) Cancel(id string) error {
func (m *RequestManager) Close() {
m.cancel()
m.wg.Wait()
// call session.Close for each open session
// manually deregister and close each registered request.
m.mu.Lock()
for _, sess := range m.sessions {
sess.Close()
}
m.mu.Unlock()
m.sessionWg.Wait()
m.mu.Lock()
for id, req := range m.reqs {
req.once.Do(func() {
close(req.buffer)
close(req.closed)
})
delete(m.reqs, id)
}
m.mu.Unlock()
}
func (m *RequestManager) spawnSession(req *request) {